質問

wp_mail()関数がコンテンツタイプ:multipart/altontativeを持つ電子メールを送信することは可能ですか?

メディアがメールを解釈するものに応じて、HTMLまたはプレーンテキストとして表示できるメールを送信する必要があります。

どんな提案も大歓迎です!

役に立ちましたか?

解決

そこにあります wp_mail() ドキュメンテーション (下 使用法):

デフォルトのコンテンツタイプは、HTMLの使用を許可しない「テキスト/プレーン」です。 「wp_mail_content_type」フィルター(以下の例を参照)を使用するか、「content-type:text/html」などのヘッダーを含めることにより、メールのコンテンツタイプを設定できます。 メッセージを送信した後、「wp_mail_content_type」を「テキスト/プレーン」に戻すように注意してください, しかし、そうしないと、WPまたはプラグイン/テーマからの電子メールで予期しない問題につながる可能性があるためです。

(私の強調)

ページの2番目の例は、それを行う方法を示しています(例は使用します text/html しかし、あなたはあなたを使うことができるはずです multipart/alternative 代わりは。

他のヒント

PHPMailerインスタンスにアクセスできる場合は、完全に可能です。

if ($is_html) 
    add_action('phpmailer_init', 'fix_mimeheader');

// more code.

wp_mail( $to, $subject, $html_message, $headers, $attachments );

// ...

function fix_mimeheader( $phpmailer ) {
     // Generate $text_message here.
     // ...

     $phpmailer->AltBody = $text_message;
}

wp_mailに送信されたメッセージは、HTMLコードである必要があります。また、コンテンツタイプのヘッダーを含めるべきではありません。現在、CCから使用して、作成したプラグインで返信しています。

メールがHTMLとして送信されている場合、PHPMailerオブジェクトにAltBodyプロパティを直接設定するアクションを実行します。これにより、適切なフラグがメールをマルチパート/代替メールに変換します。

使用できます wp_mail_content_typeフィルター, 、現在、コーデックスで文書化されています。

コンテンツタイプを「テキスト/プレーン」に戻すことに関するWP_Mailのドキュメントは、誤解を招くIMOのようなものです。これはフィルターであるため、実際には「リセット」しません。フィルターで考慮する必要があるのは、マルチパートとプレーンテキストまたはHTMLを使用する必要がある時期を判断するための条件付きロジックです。

add_filter( 'wp_mail_content_type', 'my_mail_content_type' );
function my_mail_content_type( $content_type ) {

    if( $some_condition ) {
        return 'multipart/mixed';
    } else {
        return 'text/plain';
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top