1

我想发送一封电子邮件这个文本

Destination : 6W - ATLANTA WEST!@#$%^*!gemini!@#$%^*!jfds!@#$%^*!,Trailer Number : 000564,,Drop empty trailer at Plant Numbe :546,Pick up trailer at Plant Number :45, Bill Date : 25-Jan-2013,Bill Time - Eastern Time : 1,Trip Number :456,MBOL :546,Carrier :Covenant!@#$%^*!test@shaw.com!@#$%^*!transport@shaw.com!@#$%^*!test@transport.com!@#$%^*!antoalphi@gmail.com,Destination : 6W - ATLANTA WEST!@#$%^*!gemini!@#$%^*!jfds!@#$%^*!,Customer Name : 567,Cusomer Delivery Address : 657567657,General Comments :657,Warehouse Comments : 65,Carrier Comments : ,Appointment Date :25-Jan-2013,Appointment Time : 1am,Rail Only :Standard,Total Weight : 45645

我使用了这个mailContent = URLDecoder.decode(Body, "UTF-8");解码器,

但它给了我这个例外URLDecoder: Illegal hex characters in escape (%) pattern - For input string: "^*"

你们中的任何人都可以帮助我,如何解决这个问题。我在发送邮件时收到此消息。

最好的祝福

4

2 回答 2

2

您正在尝试对最初不是 URL 编码的内容进行 URL 解码。身体有什么问题?换句话说,如果你只使用会发生什么:

mailContent = Body

(在 URL 编码中,% 字符与两个十六进制数字一起使用来对可能导致问题的字符进行编码,例如/将被编码为%2F,因为它的 ASCII 代码是 47(十进制)或 2F(十六进制)。在你的身体中,%后面跟着通过两个不是十六进制数字的字符 - 这就是我可以告诉它没有被 URL 编码的方式,以及解码器出错的原因。)

于 2013-01-16T16:39:50.410 回答
2

只需停止调用 URLDecoder.decode() ,您将停止收到错误!您传递给它的字符串值不是 URL 编码的。

如果您要发送的电子邮件的内容通常不允许在没有编码的电子邮件中出现,那么您可能需要考虑多种形式的 MIME 编码。参考资料可能很方便:

  1. SMTP 允许什么:http: //www.apps.ietf.org/rfc/rfc788.html
  2. 基本 MIME 编码: http: //www.apps.ietf.org/rfc/rfc1341.html
  3. Java MIME 支持: http ://docs.oracle.com/javaee/1.4/api/javax/mail/internet/MimeUtility.html

例如,您可以尝试:

String sendable = MimeUtility.encodeText(body,"UTF-8","BASE64")
于 2013-01-16T16:48:28.127 回答