繁体   English   中英

Play框架-通过SendGrid接收电子邮件-电子邮件正文的字符编码

[英]Play Framework - receiving email through SendGrid - character encoding of email body

我正在Java Play Framework中开发一个小型邮件客户端,并且正在使用SendGrid来发送电子邮件。 收到电子邮件后,它将被发布到url,然后我使用JsonNode解析发布的表单。 现在的问题是该表单的“ to”,“ from”,“ subject”字段由SendGrid自动转换为UTF-8。 现在出现了问题:显然,电子邮件正文是用“ ISO-8859-1”编码的。 而且我需要将该字符串转换为“ UTF-8”。 我已经尝试了几种方法,但是很可能是我做错了,因为我总是对包含重音/变音符的法语或德语单词感到陌生的字符(示例“Zürich”以“ Z?rich”出现)。我用于转换的代码如下:

byte[] msg = message.getBytes("ISO-8859-1");
byte[] msg_utf8 = new String(msg, "ISO-8859-1").getBytes("UTF-8");
message = new String(msg_utf8, "UTF-8");

您能否提出解决方案? 提前非常感谢您!

好的,所以我设法使用注释从SendGrid获取了原始字节请求,并使用正确的编码创建了Java String:

@BodyParser.Of(BodyParser.Raw.class)
public static Result getmail() {
 ...
}

现在的问题是,为了从请求中检索文件附件,我需要将请求解析为MultipartFormData。 设置完上面的注释后,调用时会收到NullPointerException,这是可以预测的:

request().body().asMultipartFormData().getFiles()

你们是否对我如何再次获得相同的请求有任何想法,但是可以使用@ BodyParser.Of(Bodyparser.MultipartFormData.class)进行解析? 因此,我有点需要结合这两个注释或找到一种方法,将我从Raw解析器获得的byte []转换为MultiFormData。 谢谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM