【发布时间】:2012-04-01 00:12:16
【问题描述】:
我正在使用 Mime::Lite 创建和发送电子邮件。现在我需要添加对 S/Mime 加密的支持,最后可以加密我的电子邮件(我可以安装的唯一 Perllib 似乎坏了,所以我使用系统调用和 openssl smime),但是当我尝试创建一个 mime -object ,只要我将 Content-Transfer-Encoding 设置为 base64,电子邮件就会被破坏。更让人好奇的是,只有当我通过$myMessage->attr 设置它时才会发生这种情况。如果我使用构造函数 ->new 一切都很好,除了我使用 MIME::Lite->quiet(1); 抑制的一点警告之外。
这是一个错误还是我的错?以下是我创建 mime 对象的两种方式。
-
通过构造器设置 Content-Transfer-Encoding 并抑制警告:
MIME::Lite->quiet(1); my $msgEncr = MIME::Lite->new(From =>'me@myhost.com', To => 'you@yourhost.com', Subject => 'SMIME Test', Data => $myEncryptedMessage, 'Content-Transfer-Encoding' => 'base64'); $msgEncr->attr('Content-Disposition' => 'attachment'); $msgEncr->attr('Content-Disposition.filename' => 'smime.p7m'); $msgEncr->attr('Content-Type' => 'application/x-pkcs7-mime'); $msgEncr->attr('Content-Type.smime-type' => 'enveloped-data'); $msgEncr->attr('Content-Type.name' => 'smime.p7m'); $msgEncr->send; MIME::Lite->quiet(0); -
通过
$myMessage->attr设置 Content-Transfer-Encoding 会破坏加密数据,但不会导致警告:my $msgEncr = MIME::Lite->new(From => 'me@myhost.com', To => 'you@yourhost.com', Subject => 'SMIME Test', Data => $myEncryptedMessage); $msgEncr->attr('Content-Disposition' => 'attachment'); $msgEncr->attr('Content-Disposition.filename' => 'smime.p7m'); $msgEncr->attr('Content-Type' => 'application/x-pkcs7-mime'); $msgEncr->attr('Content-Type.smime-type' => 'enveloped-data'); $msgEncr->attr('Content-Type.name' => 'smime.p7m'); $msgEncr->attr('Content-Transfer-Encoding' => 'base64'); $msgEncr->send;
我只是不明白为什么在使用属性设置器时我的消息被破坏了。提前感谢您的帮助!
此外,如果不再次破坏加密邮件,我无法将任何文件附加到此电子邮件。
【问题讨论】:
-
您需要在列表项之后将它们撞到另外 4 个空格,以便降价以表明您的意思是将它们作为代码。