Content-Type: multipart/alternative を持つ wp_mail() 関数で電子メールを送信することは可能ですか?
電子メールを解釈するメディアに応じて、HTML またはプレーン テキストとして表示できる電子メールを送信する必要があります。
どんな提案も大歓迎です!
Content-Type: multipart/alternative を持つ wp_mail() 関数で電子メールを送信することは可能ですか?
電子メールを解釈するメディアに応じて、HTML またはプレーン テキストとして表示できる電子メールを送信する必要があります。
どんな提案も大歓迎です!
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 コードである必要があります。また、コンテンツ タイプ ヘッダーを含めないでください。私は現在、作成したプラグインで from、cc、reply-to を使用しています。
電子メールが HTML として送信されている場合は、phpmailer オブジェクトの AltBody プロパティを直接設定するアクションを実行します。これにより、適切なフラグが電子メールをマルチパート/代替電子メールに変換します。
それはwp_mail()
ドキュメントにあります(Usageの下):
デフォルトのコンテンツ タイプは「text/plain」で、HTML の使用は許可されていません。「wp_mail_content_type」フィルターを使用するか (以下の例を参照)、または「Content-type: text/html」のようなヘッダーを含めることで、メールのコンテンツ タイプを設定できます。ただし、メッセージを送信した後、「wp_mail_content_type」を「text/plain」にリセットするように注意してください。そうしないと、WP またはプラグイン/テーマからの電子メールで予期しない問題が発生する可能性があります。
(私のものを強調)
ページの 2 番目の例は、その方法を示しています (例では使用していますが、代わりにtext/html
your を使用できるはずです。multipart/alternative
Codex に記載されているwp_mail_content_type filterを使用できます。
コンテンツ タイプを「text/plain」にリセットすることに関する wp_mail のドキュメントは、一種の誤解を招くものです。これはフィルターであるため、実際に「リセット」する必要はありません。フィルターで考慮する必要があるのは、マルチパートとプレーン テキストまたは 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';
}
}