2011-03-30 16 views
10

मेरे पास एक ऐसा एप्लिकेशन है जो जावा में लागू मेल भेज सकता है। मैं मेल के अंदर एक HTML लिंक डालना चाहता हूं, लेकिन लिंक सामान्य अक्षरों के रूप में दिखाई देता है, HTML लिंक के रूप में नहीं ... मैं HTML लिंक के अंदर स्ट्रिंग में कैसे कर सकता हूं? मुझे विशेष पात्रों की ज़रूरत है? आपको बहुत धन्यवादमैं एक ईमेल बॉडी के अंदर एक HTML लिंक कैसे डाल सकता हूं?

अद्यतन: HI ईर्ष्या! ओयू जवाब के लिए धन्यवाद! यहाँ मेरी कोड है:

public static boolean sendMail(Properties props, String to, String from, 
      String password, String subject, String body) 
{ 
    try 
    { 
     MimeBodyPart mbp = new MimeBodyPart(); 
     mbp.setContent(body, "text/html"); 
     MimeMultipart multipart = new MimeMultipart(); 
     multipart.addBodyPart(mbp); 



     // Preparamos la sesion 
     Session session = Session.getDefaultInstance(props); 

     // Construimos el mensaje 
     MimeMessage message = new MimeMessage(session); 
     message.setFrom(new InternetAddress(from)); 
     message.setContent(multipart); 
     message.addRecipient(
       Message.RecipientType.TO, 
       new InternetAddress(to)); 
     message.setSubject(subject); 
     message.setText(body); 

     // Lo enviamos. 
     Transport t = session.getTransport("smtp"); 
     t.connect(from, password); 
     t.sendMessage(message, message.getAllRecipients()); 

     // Cierre. 
     t.close(); 
     return true; 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
     return false; 
    } 
} 

और यहाँ शरीर स्ट्रिंग:

 String link = "<a href=\"WWW.google.es\">ACTIVAR CUENTA</a>"; 

लेकिन प्राप्त संदेश में लिंक नहीं HTML हाइपरलिंक के रूप में लिंक स्ट्रिंग के रूप में प्रकट होता है,! मुझे समझ में नहीं आता कि क्या होता है ...

कोई समाधान?

+0

शायद यह ईमेल के जेनरेट और भेजे जाने के तरीके के कारण है, और 'स्ट्रिंग' के साथ कुछ भी नहीं करना है। अगर आप अपने कोड का एक उदाहरण शामिल कर सकते हैं तो हम कर सकते हैं उसको पक्का करो। क्या आप जानते हैं कि क्या आप एमआईएमई या सादा पाठ के रूप में ईमेल भेज रहे हैं? – gutch

उत्तर

16

लिंक जोड़ना स्ट्रिंग के अंदर <a href="..">text</a> जोड़ने जैसा आसान है। आपको एचटीएमएल का समर्थन करने के लिए अपना ईमेल सेट करना चाहिए (यह आपके द्वारा उपयोग की जा रही लाइब्रेरी पर निर्भर करता है), और आपको इसे भेजने से पहले अपनी ईमेल सामग्री से बच नहीं जाना चाहिए।

अद्यतन:

message.setText(body, "UTF-8", "html"); 

html माइम उप-प्रकार (इस text/html में परिणाम होगा) है: जब से तुम java.mail उपयोग कर रहे हैं, आप पाठ इस तरह से स्थापित करना चाहिए। setText(string) विधि द्वारा उपयोग किया जाने वाला डिफ़ॉल्ट मान plain

+0

HI ईर्ष्या! ओयू उत्तर के लिए धन्यवाद! यहां आप मेरा कोड हैं: – Rafa

+0

@ राफा - मेरा अद्यतन उत्तर देखें। – Bozho

+0

ओएमजी यह काम करता है! धन्यवाद, बोझो से मिलें !!!! वास्तव में धन्यवाद! तुम महान हो! – Rafa

7

मैं किसी और के लिए काम नहीं करने के मामले में उत्तर देने जा रहा हूं।
मैंने बोझो की विधि की कोशिश की और किसी कारण से ईमेल संदेश नहीं भेजेगा जब मैंने पूरी तरह से संदेश पर setText किया था।

मैं

MimeBodyPart mbp = new MimeBodyPart(); 
mbp.setContent(body, "text/html"); 

की कोशिश की लेकिन यह Outlook में के बजाय हमेशा की तरह पाठ में अनुलग्नक के रूप में आया था। Mbp.setContent और message.setText करने के बजाय, मेरे लिए, और Outlook में, इसे ठीक करने के लिए, मैंने संदेश निकाय भाग पर एक एकल सेट टेक्स्ट किया है। अर्थात्:

MimeMessage message = new MimeMessage(session); 
message.setFrom(new InternetAddress(from)); 
for(String str : to){ 
    message.addRecipient(Message.RecipientType.TO, new InternetAddress(str)); 
}   
message.setSubject(subject); 
// Create the message part 
MimeBodyPart messageBodyPart = new MimeBodyPart(); 

// Fill the message 
messageBodyPart.setText(messageBody,"UTF-8","html"); 

Multipart multipart = new MimeMultipart(); 
multipart.addBodyPart(messageBodyPart); 

// Put parts in message 
message.setContent(multipart); 

// Send the message 
Transport.send(message); 
2

जोड़:

MimeBodyPart mbp = new MimeBodyPart(); 
mbp.setText(messageBody,"UTF-8", "html"); 
संदेश इस तरह लग रही के लिए अपने कोड के साथ

"http: //" से पहले URL मेरे लिए काम किया।

1

हम जावा कोड का उपयोग कर ईमेल बॉडी में एचटीएमएल लिंक बना सकते हैं। मेरे मामले में मैं रीसेट पासवर्ड विकसित कर रहा हूं जहां मुझे लिंक बनाना चाहिए और मेल के माध्यम से उपयोगकर्ता को भेजना चाहिए। आप एक स्ट्रिंग बनायेंगे। स्ट्रिंग में आप सभी यूआरएल टाइप करते हैं। अगर आप उस पर http जोड़ते हैं। यह मेल में लिंक की तरह व्यवहार करता है।

पूर्व: स्ट्रिंग मेलबॉडी = "http: // localhost: 8080/मेल/सत्यापित टोकन = टोकन =" + टोकन;

आप क्वेरी स्ट्रिंग जोड़कर यूआरएल के साथ कुछ मूल्य भेज सकते हैं। उनके टोकन में कुछ एन्क्रिप्टेड मान है।

मेल मेल को आपके मेल बॉडी पैरामीटर में डाल दें। पूर्व ": " हाय "+ userdata.get फर्स्टनाम() + " \ n \ n आपने एक्स एप्लिकेशन से एक नया पासवर्ड मांगने का अनुरोध किया है। लिंक के नीचे "+ " का उपयोग करें लॉग इन करने के \ n \ n लिंक पर क्लिक करें:। "+ MailBody);

ऊपर स्ट्रिंग पैरामीटर आप अपने मेल service.Email को पारित करने के लिए है कि है सेवा से लेकर, विषय, शरीर जैसे पैरामीटर लेती है। यहां मैंने शरीर दिया है कि यह कैसे होना चाहिए। आप अपने कास्ट

0

के अनुसार, विषय मूल्यों से गुजरते हैं, आप मेरे लिए काम कर रहे सही तरीके से कर सकते हैं।

public class SendEmail 
{ 
    public void getEmail(String to,String from, String userName,String password,Properties props,String subject,String messageBody) 
    { 
     MimeBodyPart mimeBodyPart=new MimeBodyPart(); 
     mimeBodyPart.setContent(messageBody,"text/html"); 
     MimeMultipart multipart=new MimeMultipart(); 
     multipart.addBodyPart(mimeBodyPart); 
     Session session=Session.getInstance(props,new Authenticator() 
     { 
      protected PasswordAuthentication getPasswordAuthentication() 
      { 
       return new PasswordAuthentication(userName,password); 
      } 
     }); 
     try{ 
       MimeMessage message=new MimeMessage(session); 
       message.setFrom(new InternetAddress(from)); 
       message.setContent(multipart); 
       message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to)); 
      message.setSubject("Have You got Mail!"); 
      message.setText(messageBody,"UTF-8","html"); 
      Transport.send(message); 
      } 
      catch(MessagingException ex){System.out.println(ex)} 
     public static void main(String arg[]){ 
     SendEmail sendEmail=new SendEmail(); 
      String to = "[email protected]";  
      String from = "[email protected]"; 
      final String username = "[email protected]"; 
      final String password = "XXXX"; 
      String subject="Html Template"; 

      String body = "<i> Congratulations!</i><br>"; 
      body += "<b>Your Email is working!</b><br>"; 
      body += "<font color=red>Thank </font>"; 
      String host = "smtp.gmail.com"; 
      Properties props = new Properties(); 
      props.put("mail.smtp.auth", "true"); 
      props.put("mail.smtp.starttls.enable", "true"); 
      props.put("mail.smtp.host", host); 
      props.put("mail.smtp.port", "587"); 
      sendEmail.getEmail(to,from,username,password,props,subject,body); 
    } 
    } 
संबंधित मुद्दे