我正在使用Java郵件API,並試圖通過Gmail的SMTP發送電子郵件。 我的程序如何工作: java.util.Scanner類用於獲取用戶輸入 - 我要求用戶在郵件發送類中使用各種參數;它具有以下功能:Java郵件API - 編碼問題
Message mailMessage = new MimeMessage(session);
mailMessage.setFrom(new InternetAddress("[email protected]"));
mailMessage.setRecipients(Message.RecipientType.TO,InternetAddress.parse(mail.getTo()));
mailMessage.setSubject(mail.getSubject());
mailMessage.setText(mail.getMessage());
Transport.send(mailMessage);
只要我使用ASCII符號/字符,一切都會正常工作。但是,只要我想使用「特定國家」字符 - 比如[õäöü] - 我會看到一堆奇怪的符號...
我到目前爲止使用的技術(不適用於我):
setHeader("Content-Type", "text/plain; charset=UTF-8");
setHeader("Content-Encoding","ISO-8859-9");
setContent(message, "text/plain; charset=iso-8859-2");
注意:當進行的System.out.println(),顯示消息被髮送一切都正確顯示的IDE內。
編輯:e.x.當發送郵件正文爲[õäöü] 它在Gmail中顯示[ä「」?]。
編輯:當使用mailMessage.setText(MimeUtility.encodeText(mail.getMessage(), "UTF-8", "Q"));
,然後在Gmail輸出如下:
"=?UTF-8?Q?=C3=A4=E2=80=9E=E2=80=9D=EF=BF=BD;=0D=0A?="
ANOTHER編輯:有趣的是,當我這樣做:mailMessage.setText(strVar + "õäöü", "ISO-8859-1");
它實際上追加「õäöü」很好地在我的電子郵件(但字符串的第一部分[strVar]仍然充滿了?和[]的)。
如何設置'strVar'?什麼,如果你指定'strVar'立即之前'mailMessate.setText(..)'?也許你從掃描儀收到的內容與工作的字符串不一樣。 –
我已經改變了我的代碼一點點,讓我送HTML,所以我的發送方法是: 'message.setContent( 「
[õäöü]
」+ strVar +「
」, 「text/html的」); ' 當我收到一封郵件正確解析HTML時,「[õäöü]」也是如此,但是'strVar'似乎「不正確」。 我有一個類'Input'和'得到()'方法裏面: '公共字符串得到(){ /*掃描此處的聲明*/ 回報scanner.nextLine(); }' 而在第二類'我MailSender'初始化'strVar'那樣: ' /* Input類聲明*/ 字符串strVar = input.get(); ' //對不起,很難在這裏寫代碼:) – Furlando你能檢查哪些實際的字符字符串中(以及如何比較的字符在不工作的情況下)? –