我有一个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);


应该解决您的问题。

07-24 16:00