【发布时间】:2011-08-03 22:08:28
【问题描述】:
我正在使用 Spring 和 JavaMailSenderImpl,这是一个著名的 Spring 类来发送电子邮件。我的电子邮件包含很多 unicode 字符,例如 èéàò 或者最值得注意的是可怕的 € 符号。在 Windows 上运行时,我的课程运行良好。发送的电子邮件包含所有字符(纯文本,无 html)。如果我在 Linux 虚拟服务器上安装我的应用程序,我会得到一切吗?而不是特殊字符。是 Spring、Java 配置还是其他?
更新
基本上架构是这样的:有一个 Spring Web 应用程序,我使用 spring JavaMailSenderImpl 来完成工作。这是servlet-context中的配置:
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${email.server}" />
<property name="username" value="${email.server_user}"></property>
<property name="password" value="${email.server_pass}"></property>
</bean>
我在 windows 和 linux 上使用相同的主机来发送邮件(这与运行应用程序的机器不同......它只是一个通过 SMTP 的标准邮件服务提供商)。
我用来发送电子邮件的代码很简单:
SimpleMailMessage msg = new SimpleMailMessage();
msg.setTo(adminEmail);
msg.setFrom(adminEmail);
msg.setSubject(subject);
msg.setText(message);
mailSender.send(msg);
偶数设置:
System.setProperty("mail.mime.charset", "utf8");
在应用程序启动时并不能解决问题。事实上,在我得到 ?而不是€,现在我得到......
【问题讨论】:
-
也不是真正的答案,但是您检查过您的 linux 用户的
locale吗?也许它使用的 LANG 不支持这些字符 -
你能告诉我们初始化
message变量的代码吗? -
这只是一个普通的字符串......无论如何我正在发布解决方案。
标签: spring unicode jakarta-mail