我正在使用 Mime::Lite 创建和发送电子邮件。现在我需要添加对 S/Mime 加密的支持,最后可以加密我的电子邮件(我可以安装的唯一 Perllib 似乎坏了,所以我使用系统调用和 openssl smime),但是当我尝试创建一个 mime -object ,只要我将 Content-Transfer-Encoding 设置为 base64,电子邮件就会被破坏。为了让它更加好奇,只有当我通过$myMessage->attr
. 如果我使用构造函数 -> new 一切都很好,除了我通过使用抑制的一点警告MIME::Lite->quiet(1);
是bug还是我的错?以下是我创建 mime 对象的两种方式。
通过 construtor 设置 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);
设置 Content-Transfer-Encoding 通过
$myMessage->attr
它破坏加密的数据,但不会引起警告: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;
当我使用属性设置器时,我只是不明白为什么我的消息被破坏了。在此先感谢您的帮助!
除此之外,我无法在不再次破坏加密消息的情况下将任何文件附加到此电子邮件。