- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我通过 gmail 给自己发送了一封中文电子邮件,我成功收到了它,其中包含以下标题
当我通过 javax.mail 发送中文电子邮件时,它在我的邮件浏览器中显示如下
我的代码如下:
public boolean send() throws TestReportingException, MessagingException
{
try
{
String encodingOptions = "text/plain; charset=UTF-8";
Authenticator authenticator = new Authenticator()
{
// override the getPasswordAuthentication method
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(username, password);
}
};
// Create the mail session
Session session = Session.getInstance(maileProperties, authenticator);
MimeMessage mimeMessage = new MimeMessage(session);
mimeMessage.setHeader("Content-Type", encodingOptions);
// Set From: header field of the header.
mimeMessage.setFrom(new InternetAddress(from, fromName));
// Set To: header field of the header.
for (String s : toList)
{
if (null == s)
{
throw new TestReportingException("Email address is null");
}
mimeMessage.addRecipients(Message.RecipientType.TO, InternetAddress.parse(s));
}
for (String s : ccList)
{
mimeMessage.addRecipients(Message.RecipientType.CC, InternetAddress.parse(s));
}
// Set Subject: header field
mimeMessage.setSubject(subject,"UTF-8");
// Create the message part
//MimeBodyPart messageBodyPart = new MimeBodyPart();
// messageBodyPart.setContent(message, encodingOptions);
// Create the message part
MimeBodyPart messageBodyPart = new MimeBodyPart();
mimeMessage.setHeader("Content-Type", encodingOptions);
// Now set the actual message
messageBodyPart.setText(message, "utf-8", "plain");
// Now set the actual message
//messageBodyPart.setText(message, "utf-8", "html");
Multipart multipart = new MimeMultipart();
// Set text message part
multipart.addBodyPart(messageBodyPart);
// Part two is attachment
if (null != attachmentSource)
{
messageBodyPart = new MimeBodyPart();
messageBodyPart.setDataHandler(new DataHandler(attachmentSource));
messageBodyPart.setFileName(attachmentSource.getName());
multipart.addBodyPart(messageBodyPart);
}
// Send the complete message parts
mimeMessage.setContent(multipart);
// Send message
//Transport.send(mimeMessage);
SSm.getLogger().debug("Subject: "+mimeMessage.getSubject());
Transport.send(mimeMessage);
SSm.getLogger().info("\n\nSent message successfully....");
clear();
return true;
}
catch (MessagingException mex)
{
SSm.getLogger().error(mex.getMessage());
throw mex;
}
catch (Exception e)
{
SSm.getLogger().error(e.getMessage(), e);
throw new TestReportingException(e.getMessage(), e);
}
}
属性是:
注释:文本在发送之前没有被损坏。message.getSubject() 打印出干净的中文文本我猜我的编码方式有问题
编辑
这是调试输出:
DEBUG: setDebug: JavaMail version 1.5.5
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]
DEBUG SMTP: need username and password for authentication
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 587, isSSL false
220 smtp.gmail.com ESMTP s20sm18171725pfg.11 - gsmtp
DEBUG SMTP: connected to host "smtp.gmail.com", port: 587
>
EHLO jake-yoga3.hitronhub.home
250-smtp.gmail.com at your service, [96.49.181.179]
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
DEBUG SMTP: Found extension "SIZE", arg "35882577"
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "STARTTLS", arg ""
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "CHUNKING", arg ""
DEBUG SMTP: Found extension "SMTPUTF8", arg ""
STARTTLS
220 2.0.0 Ready to start TLS
EHLO jake-yoga3.hitronhub.home
250-smtp.gmail.com at your service, [96.49.181.179]
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
DEBUG SMTP: Found extension "SIZE", arg "35882577"
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH"
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "CHUNKING", arg ""
DEBUG SMTP: Found extension "SMTPUTF8", arg ""
DEBUG SMTP: Attempt to authenticate using mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM XOAUTH2
DEBUG SMTP: Using mechanism LOGIN
DEBUG SMTP: AUTH LOGIN command trace suppressed
DEBUG SMTP: AUTH LOGIN succeeded
DEBUG SMTP: use8bit false
MAIL FROM:
250 2.1.0 OK s20sm18171725pfg.11 - gsmtp
RCPT TO:
250 2.1.5 OK s20sm18171725pfg.11 - gsmtp
DEBUG SMTP: Verified Addresses
DEBUG SMTP: JSTONE@I-KODA.COM
DATA
354 Go ahead s20sm18171725pfg.11 - gsmtp
From: iKoda Report
To: JSTONE@I-KODA.COM
Message-ID: <1926337998.1.1488002481716@jake-yoga3>
Subject: =?UTF-8?B?QnZ4Y2Igw6TCuMKtIMOkwrjCrSDDpMK4wq0gw6TCuMKtIMOkwrjCrQ==?=
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="----=_Part_0_1855484302.1488002481637"
>
------=_Part_0_1855484302.1488002481637
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: base64
>
RGVhciBaeGN2LA0KDQpCdnhjYiDDpMK4wq0gw6TCuMKtIMOkwrjCrSDDpMK4wq0gw6TCuMKtw6TC
uMKtIMOkwrjCrSDDpMK4wq0gw6TCuMKtIMOkwrjCrWh0dHBzOi8vd3d3Lmkta29kYS5jb20vZGVs
aXZlcnkvZHNmcj91ZnQ9MTAxMjc3MCZjPTEwMTI3NjTDpMK4wq0gw6TCuMKtIMOkwrjCrSDDpMK4
wq0gw6TCuMKt
------=_Part_0_1855484302.1488002481637--
.
250 2.0.0 OK 1488002489 s20sm18171725pfg.11 - gsmtp
DEBUG SMTP: message successfully delivered to mail server
QUIT
221 2.0.0 closing connection s20sm18171725pfg.11 - gsmtp
[INFO] "jake.app" com.ikoda.service.utilities.EmailOut.send(EmailOut.java:256) 01:27:
>
Sent message successfully....
>
最佳答案
我已经发现问题了。问题不在 Email 类中,仅与 javamail 无关。(所以上面的代码是正确的)
问题在于从我的 Controller 中 Spring 的 MessageBundle 的热连线实例中提取文本。
我错误地使用了以下代码,以便我的日志记录类可以记录从消息包中提取的字符串。
byte[] barray =messageSource.getMessage(code, null, LocaleContextHolder.getLocale()).getBytes(Charset.forName("UTF-8"));
String s = new String(barray);
Log4j 可以读取主题和消息中的字符串(由 StringBuilder 构建),这使我相信字符串采用正确的 UTF-8。但javax.mail在传输时出现乱码。
我应该做的是:
messageSource.getMessage(code, null, LocaleContextHolder.getLocale())
现在我的记录器刚刚收到 ???,但电子邮件发送得很好。
所以,保持简单愚蠢。
关于Java邮件: Setting Chinese Encoding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42451930/
根据谷歌翻译文档:中文(简体)是“zh-CN”。中文(繁体)是“zh-TW”。 但是当我为中文创建一个strings.xml资源文件时,它只对“zh”有效: 我的中文 strings.xml 文件应该
我有我开发的 Android 应用程序的完整工作 APK。该应用程序只有广告和一些基本功能,没有任何 Google Admob 广告或任何 Google 应用程序内购买。 我想把这个应用推广到中国,但
我在我的一个网页中使用引导表。 引导表:link 我有一个小而有趣的问题: 如您所见,boostrap 表格文本是中文的。 如何更改语言? 最佳答案 cdn 的错误。 在引导表网站中 Getting
我通过 gmail 给自己发送了一封中文电子邮件,我成功收到了它,其中包含以下标题 当我通过 javax.mail 发送中文电子邮件时,它在我的邮件浏览器中显示如下 失败电子邮件的 header 如下
当我选择输入语言为中文(拼音)并尝试输入时,仅显示英文字母,并且不显示有关将其转换为汉字的建议。 有什么办法可以解决这个问题吗? 最佳答案 试试这个:首先下载一个字体,这里我使用DroidSansFa
这个问题已经有答案了: UTF-8 all the way through (13 个回答) 已关闭 7 年前。 我有一个网页应该以中文显示网页上的字符,但目前它没有这样显示:到目前为止,我已经实现了
我已经将我的设备语言设置为中文(我希望!)如果我打电话 return Locale.getDefault().getLanguage(); 我得到 zh_zh 现在我注意到用户可以在他的设备上设置不同
我正在通过 ElasticSearch 进行文本搜索,并且使用术语类型进行查询时出现问题。我在下面所做的基本上是, 添加一个带有中文字符串(你好)的文档。 用text方法查询,返回文档。 使用 ter
上下文: 日本样本数据,不会像样本中那样显示 (cout)。为什么会这样? 代码如下: std::setlocale(LC_ALL,""); wchar_t *pStrAddr = L"日本語"; w
我每 10 秒就会收到一次。它是关于什么的?我怎样才能解决这个问题?这个问题与我创建的任何应用程序无关,它只发生在我在 Eclipse 中使用的模拟器上。我认为这是一些常见的“错误”。我可能只是午餐
这个问题在这里已经有了答案: What is the difference between varchar and nvarchar? (21 个回答) 关闭 5 年前。 how to select
我正在尝试使用中国耳语算法进行人脸聚类。我已经使用 dlib 和 python 为每张脸提取特征并映射到 128 D 向量,如 Davisking 在 https://github.com/davis
我正在尝试处理包含字母,数字,中文和一些标点符号的字符串,只剩下数字,字母和中文,如下所示 原始字符串 a>b%%c##1@23测$$试??\\:.##,,??!! 结果 abc123测试 中文版,p
有没有办法通过 tts 类(以正确的音调)输出 TTS 拼音? 我试过 SVOX 和 Pico... 我有一个数据库,其中不同的单词以如下形式存储Ni3好3 我试过:- Ni3Hao3 -> 结果:N
在我的虚拟盒子 Ubuntu 镜像下,我正在尝试用 C 语言编写 open 和 write 系统调用,结果遇到了我遇到过的最有趣的错误! 基本上,我从打开中获取一个文件描述符,并将来自写入函数的输入写
我正在使用一个名为 Aspose.Pdf 的 PDF 生成库。我喜欢这个库,但是我在让中文字符出现在 PDF 中时遇到了问题。我正在使用以下代码在 C#.NET MVC 中生成 PDF: var pd
我有一个网页,其中有一个排序,我必须按汉字排序列表。 我创建了一个包含如下代码的应用程序: List stuList = new List() { new Student("上海"
代表中国货币符号的 HTML 标签是什么? 或者有没有这样的标签? 最佳答案 我猜你是指 ¥ 的 HTML 实体: ¥ Handy reference 关于html - "Chinese do
我是新来的。这是我的问题: 正如我在标题中所说,该数字在我的文件中以奇怪的格式显示,例如:“d∟ÿ ”。 这是我的代码: try { int x; Fi
您好,当我使用 Javascript 在文件名中看到中文字符时,我想抛出一个错误。我的代码抛出“预期的十六进制数字”错误。到目前为止,我有以下代码: if(document.f1.Attachment
我是一名优秀的程序员,十分优秀!