我有一个Java SE 7项目,该项目使用具有依赖关系的maven:
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
最近,我注意到发送邮件时出现问题-包含某些特殊字符(特定于波兰语)的主题无法正确显示。
我在解决方案方面发现了几个问题:在您的
setSubject()
方法中添加第二个参数,如下所示:Message msg = new MimeMessage(session);
String subject = "ĄŻĄŻŚśążćół";
msg.setSubject(subject, "utf-8");
看起来不错,但是NetBeans警告我说,
setSubject()
没有接受两个参数的重载方法。我忽略了这一点,以为“这只是NetBeans,可能是某种内部错误”,但是我错了。我从终端运行了
mvn clean install exec:java
,得到了:error: method setSubject in class Message cannot be applied to given types;
怎么了?文档说此版本(1.4.7)支持在主题中指定编码,我发现的每个答案都依赖于此。
最佳答案
请注意,将setSubject(String subject, String charset)
添加到MimeMessage
类。即它不是Message
类的一部分。
因此,更改:
Message msg = new MimeMessage(session);
至
MimeMessage msg = new MimeMessage(session);
应该解决您的问题。