我有一个服务,它获取一个 java.io.InputStream 和它的数据来构建一个 mime 消息并在 SMTPServer 的帮助下将它发送到给定的地址。问题是,传入电子邮件的字符编码不好,它无法发送以下 UTF8 字符(例如:ÖÜß),但仅在主题中,消息好友就可以了。数据进来的代码如下:
public void data(InputStream data) throws IOException {
Session s = Session.getDefaultInstance(new Properties());
try {
System.setProperty("mail.mime.charset", "UTF8");
MimeMessage m = new MimeMessage(s, data);
.
.
问题是,我如何检查来自这个 InputStream 的数据的编码?我想知道,当此服务从其他应用程序获取数据时,数据已经损坏(错误编码),或者问题出在此服务的代码中,该 mime 消息将被操纵。我知道 InputStreamReader 有一个方法“getEncoding()”,但是在这段代码中没有 InpuStreamREader,只有 InputStream 一些其他信息:我已经设置了默认文件编码。默认情况下,mime 消息编码将从默认系统编码设置。之后,我将“mime.mail.charset”设置为 Systemproperty 并在 sprong bean 定义中。另一方面,我尝试使用 mimemessage.setSubject(String subject, Encoding e) 的重载版本设置主题。另一方面,我使用 JavaMailSenderImpl,我还设置了编码 (mailSender.setDefaultEncoding("UTF8");)。我尝试了一切,我发现了一种可能性,但没有通帮助。感谢您提前帮助我!如果您需要更多代码,我可以展示它..
BR,彼得