2010-03-30 14 views
8

नीचे दिए गए कोड का उपयोग करके मैं गैर-अंग्रेजी में लिखा एक ईमेल भेज सकता हूं और हालांकि विषय सही ढंग से प्रकट होता है, शरीर को अस्पष्टता के रूप में प्रकट होता है।
कोई विचार?
धन्यवादजावा मेल एन्कोडिंग गैर अंग्रेजी वर्ण

public void postMail(String recipient, String subject, String message, String from) throws MessagingException, UnsupportedEncodingException { 

      //Set the host smtp address 
      Properties props = new Properties(); 
      props.put("mail.smtp.host", "mail.infodim.gr"); 

      // create some properties and get the default Session 
      Session session = Session.getDefaultInstance(props, null); 

      // create a message 
      Message msg = new MimeMessage(session); 

      // set the from and to address 
      InternetAddress addressFrom = new InternetAddress(from); 
      msg.setFrom(addressFrom); 

      InternetAddress addressTo=new InternetAddress(recipient); 
      msg.setRecipient(Message.RecipientType.TO, addressTo); 

      // Setting the Subject and Content Type 
      msg.setSubject(subject); 

      msg.setContent(message, "text/plain"); 
      Transport.send(msg); 

     } 
+0

आपने विषय को utf-8 को एन्कोड करने के लिए कैसे सेट किया? – user3014926

उत्तर

18

प्रयास करें:

msg.setContent(message, "text/plain; charset=UTF-8"); 

संपादितtext/plain को बदल दिया है।

+0

नहीं .. यह नहीं करेगा –

+2

"टेक्स्ट/सादा; अक्षरसेट = \" यूटीएफ -8 \ "" – wds

+0

होना चाहिए यह एक बहुत अच्छा अनुमान है और शायद सही समाधान के करीब है। हम केवल अनुमान लगा सकते हैं कि आपका ईमेल किस ईमेल में है। यदि आप नहीं जानते हैं, तो शायद आप प्रश्न के नमूने के हेक्स डंप की कुछ पंक्तियां जोड़ सकते हैं। – tripleee

7

msg.setContent(message, "text/plain"); 

के बजाय मैं

Multipart mp = new MimeMultipart(); 
MimeBodyPart mbp = new MimeBodyPart(); 
mbp.setContent(message, "text/plain; charset=ISO-8859-7"); 
mp.addBodyPart(mbp); 

msg.setContent(mp); 

लिखते थे मैं आपके नाम से ISO-8859-7 अनुमान लगाया है क्योंकि इस चारसेट ग्रीक के लिए है, लेकिन हो सकता है आप इसे और अधिक ठीक से चुन सकते हैं। या शायद आपके मामले के लिए UTF-8 काम करता है।

+0

आपको एक शरीर के अंग को लपेटने के लिए मल्टीपार्ट की आवश्यकता क्यों है? यह सिर्फ मूर्ख है। – tripleee

+1

शायद क्योंकि मैंने स्नैपेट को ऐसे एप्लिकेशन से लिया जो अनुलग्नक भेजता है? .. मैं जावा मेल के साथ नौसिखिया हूं। – bluish

0

यदि कुछ और मदद नहीं करता है, तो अपनी स्रोत फ़ाइलों (.java फ़ाइलों सहित) के एन्कोडिंग को यूटीएफ 8 में बदलने का प्रयास करें। ग्रहण में यह विंडो के माध्यम से किया जाता है -> प्राथमिकताएं -> सामान्य -> ​​कार्यक्षेत्र: टेक्स्ट फ़ाइल एन्कोडिंग मेरे पास मेरी टेक्स्ट फ़ाइलों के लिए डिफ़ॉल्ट रूप से CP1252 था।

मुझे अपना टेक्स्ट .properties फ़ाइलों से प्राप्त हो रहा है। उन्हें यूटीएफ 8 में बदलने से मदद नहीं मिली। यह पागल है, लेकिन मेरी .java फ़ाइलों को यूटीएफ 8 पर स्विच करने से मेरी समस्या हल हो गई!

संबंधित मुद्दे