回到2004年左右,我写了一个带有MIME :: Lite的Perl电子邮件,从那时起一直在工作。只有现在客户端才会尝试使用它发送HTML。以下代码(修剪到重要部分)正确设置所有值。 HTML正文附加为text / html。在附加之前,数据显然没有CR(CRLF或LF)。但是在附加它之后,HTML 确实具有嵌入式CR。这似乎是在1000个字符后添加的。
不幸的是,它会在标记中间着陆,从而打破在收件人电子邮件中呈现为标记的标记,而不是完全呈现为格式化文本:<BR>
显示为{{ 1}}。并且它没有打破特定的标签。我可以更改标签,它总是围绕相同的角色位置。我已经阅读了MIME :: Lite代码(我非常生疏的Perl技能),但我不知道它将在何处进行这种分割操作。
< BR>
不仅use MIME::Lite; # v3.030
my $bodyWithNoCR = "<html>" . ("x" x 1020) . "</html>";
my $mime_msg = MIME::Lite->new(
From => 'x@x.com',
To => 'x@x.com',
Subject => 'Subject',
Type =>'multipart/mixed')
or die "$!\n";
$mime_msg->attach(
Type => 'text/html',
Data => $bodyWithNoCR)
or die "$!\n";
my $bodyWithCR = $mime_msg->as_string;
显示了这一点,Net :: SMTP转储显示跨行的HTML拆分,这反映在收件人的电子邮件客户端中。
我知道MIME :: Lite被认为是错误的。但我的问题是这个具体问题是否得到承认(最好是引用跟踪器ID)。回答是,是的,我已经看到了#34;是有帮助的,但(尊敬地)并不足以确认这是旧代码中的已知问题。如果我可以找到此问题的跟踪器项目,那么我将知道是否可以查找补丁,或者我是否需要向用户建议此特定代码不能用于此特定目的。< / p>
任何人都可以为as_string
建议替代代码,这可能会导致它避免破坏阻止它的任何内容吗?
至于使用其他工具(预期的响应),多年后我用其他客户端重写了PHPMailer,但API不同,客户端重新使用它会很麻烦。我还可以用其他东西替换MIME :: Lite(如维护者所推荐的那样)但是在旧的Linux机器上,对依赖链的要求可能会阻止加载任何更新的东西。也就是说,欢迎使用MIME :: Lite的替代方法。
目前没有更好的解决方案,考虑的唯一解决方法(但根本不喜欢)是使用980-1020,1980-2020等列中的嵌入空间构建HTML,这样即使CR是嵌入后,空白在收件人的邮件客户端中不可见。 (是的,哎呀!)
答案 0 :(得分:2)
我相信this可能与正在发生的事情有关:
clothes.add("hello, world");
(dictionary.get(0)).add("hello, world");
答案 1 :(得分:1)
SMTP服务器具有行长度限制,可以允许少至1000个八位字节。因此,MIME :: Lite提供了以下有关选择内容传输编码的说明:
quoted-printable
启发式默认使用8位,因此MIME :: Lite正在添加换行符,以便在输入不合适时尽力而为。解决方案是告诉MIIME :: Lite使用base64
(或$mime_msg->attach(
Type => 'text/html',
Encoding => 'quoted-printable',
Data => $bodyWithNoCR)
or die "$!\n";
)编码。
Encoding => 'quoted-printable'
[在评论中OP明确表示他的意思是&#34;换行&#34;当你说&#34; CR&#34;。然而,OP仍然提到CR,所以我在这里留下这段。]
至于回程,我在添加$bodyWithCR
之前没有得到任何回报。我怀疑你的$bodyWithCR
没有回车,并且该错误是你检查它的方法。具体来说,我认为您先将binmode
打印到句柄上,而不先对其进行//Choice 1
public class Example{
private int x;
// Class Constructor
public Example(){
x = setX();
}
private int setX(){
return 1;
}
}
//Choice 2
public class Example{
private int x;
// Class Constructor
public Example(){
setX();
}
private void setX(){
x = 1;
}
}
。