我有一个服务,该服务从其中获取java.io.InputStream和数据以构建mime消息,并借助SMTPServer将其发送到给定地址。问题是传入电子邮件的char编码不正确, 它不能发送以下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”);)。 我尝试了一切,发现了可能,但是nothong帮助了我。 感谢您提前帮助我! 如果您需要更多代码,我可以显示出来。
BR,佩特