私はMime::Liteを使用して電子メールを作成および送信しています。今度はS/Mime暗号化のサポートを追加する必要があり、最終的に電子メールを暗号化できます(インストールできる唯一のPerllibが壊れているように見えるので、systemcallとopenssl smimeを使用しています)が、mimeを作成しようとすると-オブジェクトを使用すると、Content-Transfer-Encodingをbase64に設定するとすぐに電子メールが壊れます。さらに不思議なことに、を介して設定した場合にのみ発生し$myMessage->attr
ます。コンストラクターを使用している場合->newを使用して抑制する小さな警告を除いて、すべてが正常です。MIME::Lite->quiet(1);
それはバグですか、それとも私のせいですか?mime-objectを作成する2つの方法があります。
コンストラクターを介して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;
属性セッターを使用しているときにメッセージが壊れている理由がわかりません。よろしくお願いします!
それに加えて、暗号化されたメッセージを再度壊さずにこの電子メールにファイルを添付することはできません。