0

私はいくつかのテストを行っています。これまでに2つのソリューションを試しました:

最初のものはヘッダー内のメッセージを送信します (mail() 関数のメッセージパラメーターは空です) []

    $boundary = "nextPart";
    $headers = "MIME-Version: 1.0\r\n";
    $headers .= "From: ".$from_name." <".$from.">\r\n";
    $headers .= "Content-Type: multipart/alternative; boundary = $boundary\r\n";
    //Html
    $headers .= "\n--$boundary\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $headers .= $html;
    //Text
    $headers .= "\n--$boundary\n";
    $headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";
    $headers .= $text;

2 つ目はこれです: http://www.webcheatsheet.com/PHP/send_email_text_html_attachment.php#attachment (ヘッダーを設定し、メッセージ内で送信します)

それらのどれも適切に機能しません (最初のものはまったく機能しません。2 つ目は gmail で機能しますが、適切にフォーマットされた電子メールではなく、一部のクライアントはそれを処理できません)。PHPメーラーのコードを分析すると(http://phpmailer.worxware.com/index.php?pg=phpmailer)、マルチパートメールを送信しようとさえしないことがわかりました。

したがって、PHPメール機能を使用して適切にフォーマットされたマルチパート電子メールを送信することは可能でしょうか。

ありがとうございました

ps私はpearメールを知っていて使用していますが、このことを理解したいだけです。

4

2 に答える 2

2

はい、可能です。PHP のmail();関数は、「生の」メッセージを下層のオペレーティング システムのメール ハンドラ (たとえば sendmail) に配信するための便利な関数にすぎません。

したがって、メッセージ ヘッダーとメッセージ本文の組み合わせが正しい MIME エンコードされたメッセージであれば、問題なく動作します。

詳細を把握するには、単純なメール クライアントを見つけて、そのメールを分析します。これをMIME 仕様と組み合わせると、そこにたどり着くはずです。

于 2010-09-09T10:16:49.137 に答える
1

私が知っていることから、mail() は指定されたものを送信するだけなので、マルチパート MIME を含め、必要なものを送信することは完全に可能です。実際、これはまさにメール クラス (pear、phpmailer) が舞台裏で行っていることですが、他のトランスポートを使用するように構成することもできます。

つまり、テンプレート エンジンが「echo」と比較されるように、メール クラスは「mail()」と比較されます。

于 2010-09-09T10:16:08.987 に答える