我正在使用Java创建电子邮件,它几乎可以工作,但我面临的问题是,我不知道如何解决它。
内容传输-编码引用-打印打破了我的身体在很多行,每一行77个字符,问题发生时,下一行开始,第一个字符是。(点)
这方面的一个例子:
<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" align=3D"center">
<tbody>
<tr>
<td><br /><font color=3D"#666666" face=3D"Arial, Helvetica, sans-serif=
" size=3D"1">Lala não leleler lala lalalaa, <a href=3D"http://t.laiu=
com.ar/TestsTrackings/op.aspx?Osa8Br5zxNpqrv0AtVqBIiGIGG0CPNrUoxbqY7WYcGhP7=
LrlPvlBijtUAlN+b07u4cgghR7erUuf
P9PWGu7YtTkb51txcLYb9+6jzjBtWhf/L8Ai/gdZjrXfmIamviwsffMsjXa8mtnQm8n/XXkWuDw=
8
gW6EpcofAgSMsqpqmqxv85MRVG2vIFuD9v6lFD1H+dMk0RtR/cMhg/zgtjdIym6pig8sSTDT">c=
lalal lala</a>.</font><br /></td>
</tr>
</tbody>
</table>在网上,我有一个以http://t.laiu....开头的链接,在下一行,它只是删除了我的点。当用户收到电子邮件时,他会得到一个类似于t.laiucom.ar...而不是t.laui.com.ar.的链接。
有人知道我该怎么避免吗?
提前谢谢。
发布于 2015-04-24 12:59:49
在注释中,您确认使用Message.writeTo创建了一个文件,并且该文件中存在句点。
所以问题不是javamail或者这里引用的可打印编码。
根据rfc5321 (或rfc821 2821/rfc821 821),拾取文件的服务似乎已经期望它适合SMTP传输,这意味着行开始处的周期必须加倍。Message.writeTo不会直接这样做,因为它不关心使用的传输,它只是将消息写入流。
通常,当通过javax.mail.Transport发送到SMTP时,javamail通过将输出流包装在SMTPOutputStream中来处理这个问题,所以一切都很好。但是,通过直接使用Message.writeTo,您将在较低的级别上操作,并且需要处理正确的格式化输出,以便由收件服务自己接受它。
这意味着你需要在一行的开头用两个点来代替点。要做到这一点,您可以使用上面提到的SMTPOutputStream包装器类(但它不是公共/文档API),或者编写您自己的流包装器。或者任何其他方式来修改你喜欢的生成的数据.
https://stackoverflow.com/questions/29826833
复制相似问题