阿拉伯语和 JavaMail 问题

vik*_*kka 2 java email outlook encoding jakarta-mail

我在我的一个 struts 应用程序中遇到了一个问题。我有 JSP 页面,它接受用户的输入并将其发送到电子邮件地址。我在 JSP 页面中设置的编码如下。

\n\n
<%@ page  pageEncoding="UTF-8"  contentType="text/html; charset=UTF-8" language="java"%>\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在,当用户提交表单以进行操作时,我使用以下代码向收件人发送电子邮件。

\n\n
Properties properties = new Properties();\n    properties.put("mail.smtp.host", "10.51.10.44");\n    properties.put("mail.smtp.port", "25");\n    properties.setProperty("charset","utf-8");\n    Session session = Session.getDefaultInstance(properties, null);\n    try  {\n\n            MimeMessage message = new MimeMessage(session);\n            String msg = formatEmail(userForm.getContent(),userForm.getUsername(),ip,host);\n            message.setFrom(new InternetAddress(from));\n            message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));\n            message.setSubject(subject,  "UTF-8");\n            BodyPart messageBodyPart = new MimeBodyPart(); \n            messageBodyPart.setHeader("Content-Type","text/plain; charset=UTF-8"); \n            System.out.println("subject :-"+subject);\n            System.out.println("MESSAGE :-"+msg);\n            messageBodyPart.setContent(msg.toString(), "text/html;charset=UTF-8");\n            Multipart multipart = new MimeMultipart();\n            multipart.addBodyPart( messageBodyPart ); \n            message.setContent( multipart); \n            Transport.send(message);\n
Run Code Online (Sandbox Code Playgroud)\n\n

但我的收件人收到的阿拉伯语电子邮件的内容和主题为垃圾邮件,如下所示。

\n\n
\xc3\x98\xc2\xb3\xc3\x99\xc5\xa0\xc3\x98\xc2\xb3\xc3\x99\xc5\xa0\xc3\x98\xc2\xb4\xc3\x98\xc2\xb4\xc3\x98\xc2\xb3\xc3\x99\xc5\xa0\xc3\x98\xe2\x80\xa2\xc3\x99\xc6\x92\xc3\x99\xe2\x80\xa0\xc3\x98\xc2\xb4\xc3\x98\xc2\xb3\xc3\x99\xc5\xa0\xc3\x99\xc6\x92\xc3\x98\xc2\xaa\xc3\x98\xc2\xb3\xc3\x99\xc5\xa0\xc3\x98\xc2\xb4\xc3\x99\xe2\x80\xa6\xc3\x98\xc2\xa7\xc3\x98\xc2\xb3\xc3\x99\xc5\xa0\xc3\x98\xc2\xb4\xc3\x99\xe2\x80\xa0\xc3\x99\xe2\x80\x9e\xc3\x98\xc2\xa7\xc3\x98\xc2\xb3\xc3\x99\xc5\xa0\xc3\x98\xc2\xb4\xc3\x98\xc2\xaa\xc3\x99\xe2\x80\x9e\xc3\x98\xc2\xb4\xc3\x98\xc2\xb3\xc3\x99\xc5\xa0\xc3\x98\xc2\xaa\xc3\x99\xe2\x80\x9e\xc3\x98\xc2\xb4\xc3\x98\xc2\xb3\xc3\x99\xc5\xa0\xc3\x98\xc2\xac\xc3\x98\xc2\xb4\xc3\x98\xc2\xb3\xc3\x99\xc5\xa0\xc3\x99\xe2\x80\x9e\xc3\x98\xc2\xac\xc3\x98\xc2\xb3\xc3\x98\xc2\xb4\xc3\x98\xc2\xaa\xc3\x99\xe2\x80\xa0\xc3\x98\xc2\xb3\xc3\x99\xc5\xa0\n
Run Code Online (Sandbox Code Playgroud)\n\n

请帮助...我知道这是一个编码问题。如果我将 jsp 的编码更改为

\n\n
<%@ page  pageEncoding="UTF-8"  contentType="text/html; charset=iso-8859-1" language="java"%>\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,通过这样做,从数据库重试并显示在 JSP 页面中的所有其他文本都将显示为问号。

\n

Rak*_*tel 5

也设定内容。

msg.setContent(text, "text/plain;Charset=UTF-8");
Run Code Online (Sandbox Code Playgroud)