私は多くのPerlライブラリがないため、MIME :: Liteを使いました。はい、私は何か他のものを使用しているはずですが、それは私のコントロールの範囲内ではありません。Perl MIME :: Liteネストされた境界
全体として、電子メールパッケージは「multipart/mixed」である必要があります。プレーンテキストバージョン、htmlバージョン、および添付ファイルを持ちます。問題は、電子メール本文にプレーンテキストとHTMLバージョンの両方が表示されていることです。
私はまだ "multipart/alternative"をサポートしたいので、プレーンテキストかhtmlを表示します。しかし、私は添付ファイルが必要なので、電子メール全体はtext/htmlバージョンのために "multipart/alternative"の内側境界セクションを持つ "multipart/mixed"でなければなりません。
私はうまくいきましたが、電子メールパッケージ全体が「multipart/alternative」だったため、添付ファイルを削除しました。私の受信トレイ内のいくつかの電子メールを調べると、最初に「混在」してから「代替」を持つことができることに気付きました。 div要素内のdiv :)ここ
のように私の現在のコードスニップは、(境界を画定し、私のコメントを見てください)です。
my $type = 'multipart/mixed';
sub sendMail {
my($from, $to, $subject, $messageHtml, $messageText, $type, %attachment) = @_;
my $msg = MIME::Lite->new(
From => $from,
To => $to,
Subject => $subject,
Type => $type, # multipart/mixed
);
# -- start new boundary and multipart/alternative
if ($messageText ne '') {
$msg->attach(
Type => 'text/plain; charset=UTF-8',
Encoding => 'quoted-printable',
Data => $messageText,
);
}
if ($messageHtml ne '') {
$msg->attach(
Type => 'text/html; charset=UTF-8',
Encoding => 'quoted-printable',
Data => $messageHtml,
);
}
# -- end new boundary
if (%attachment) {
$msg->attach(
Type => $attachment{"type"},
Encoding => 'base64',
Path => $attachment{"path"},
Filename => $attachment{"filename"},
Disposition => 'attachment'
);
}
if ($debugmode) {
my $result = '';
$msg->print($result);
print $result;
exit;
}
if ($msg->send) {
return 1;
}
return 0;
}
HTMLとプレーンテキストの両方がいた場合、私はチェックするために、コードを変更します合格。私はよく知っている、彼らの1つだけが使用されている場合、私は代替手段が必要ないということです。
は再び、私はあなたが最初のmultipart/mixed
としてメッセージを作成する必要が
お世話になりました。このメソッドはドキュメント内にあるはずです:)しかし、彼らはあなたが別のライブラリを使用するべきであると言っています。残念ながら、私には選択肢がありませんでした。あなたの迅速で簡潔な応答に感謝します。 –
@WadeShuler:実際に私はドキュメントをたどりました。ドキュメントの重要な部分は、 'attach'が新しい部分を返すことです。あるいは、あなたは完全な部分を構築してアタッチできるということです。しかし、はい、この複雑ではあるが典型的なユースケースの例は、ドキュメントでは便利です。 –