web-dev-qa-db-ja.com

HTMLとプレーンテキストの部分を含む電子メールを送信する

私はSMTP Postmanプラグインを使って私のワードプレスからEメールを送っています。私はfunctions.phpファイルに以下のようにHTML登録メールを作成する関数を作成しました:

/* Custom user registration email */
function set_bp_message_content_type() {
    return 'text/html';
}

add_filter( 'bp_core_signup_send_validation_email_message', 'custom_buddypress_activation_message', 10, 3 );

function custom_buddypress_activation_message( $message, $user_id, $activate_url ) {
    add_filter( 'wp_mail_content_type', 'set_bp_message_content_type' );
    $user = get_userdata( $user_id );
    return '

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <title>Welcome to My Site</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
</head>
<body style="margin: 0; padding: 0;">
</body>
</html>';

}

ただし、多くの電子メールプロバイダは、HTMLバージョンとプレーンテキストバージョンの両方について電子メールコンテンツをチェックしています。私のメールは現在HTMLのみで送信されます。現在の設定でHTMLとプレーンテキストのバージョンを送信する方法はありますか?

3
user3290060

phpmailer_init にフックしてAltBodyを設定できるかどうか確認してください。

add_action('phpmailer_init', 'add_plain_text');

function add_plain_text($phpmailer)
{
    $phpmailer->AltBody = "This is a text message";
}

おまけ:HTMLを premailer.dialect.ca に渡して、使用可能なテキストバージョンをレンダリングし、マルチパートEメールに関する詳細情報を HTML Eメールテンプレートの作成とコーディングについて学んだこと _で見つけてください。

更新:

PostmanのテストEメールは、テキスト部分とHTML部分の両方を含むメッセージの例です。そのコンテンツタイプはMIMEの拡張子である "multipart/alternative"です。

この サポート質問 on { Postman SMTP Mailer によると、答えはPostmanのテスト用Eメールとサイトthis にあります。必ずmailwp_mailに置き換えてください。

//specify the email address you are sending to, and the email subject
$email = '[email protected]';
$subject = 'Email Subject';

//create a boundary for the email. This 
$boundary = uniqid('np');

//headers - specify your from email address and name here
//and specify the boundary for the email
$headers = "MIME-Version: 1.0\r\n";
$headers .= "From: Your Name \r\n";
$headers .= "To: ".$email."\r\n";
$headers .= "Content-Type: multipart/alternative;boundary=" . $boundary . "\r\n";

//here is the content body
$message = "This is a MIME encoded message.";
$message .= "\r\n\r\n--" . $boundary . "\r\n";
$message .= "Content-type: text/plain;charset=utf-8\r\n\r\n";

//Plain text body
$message .= "Hello,\nThis is a text email, the text/plain version.
\n\nRegards,\nYour Name";
$message .= "\r\n\r\n--" . $boundary . "\r\n";
$message .= "Content-type: text/html;charset=utf-8\r\n\r\n";

//Html body
$message .= "
 Hello,
This is a text email, the html version.

Regards,
Your Name";
$message .= "\r\n\r\n--" . $boundary . "--";

//invoke the PHP mail function
wp_mail('', $subject, $message, $headers);
1
jgraup