PHPでHTMLメールを送信するには?

ショコラ
ショコラ

PHPでHTMLメールを送信するには?

2023年で、PEAR の Mail_Mime を使うのは古いのかもしれませんが、
逆に良く言うなら PHP5 で動きます。

もっさん先輩
もっさん先輩

HTMLメール を送信する方法です。

<?php
// ライブラリを読み込む。
include 'Mail.php';
include 'Mail/mime.php';

$host = '{SMTPサーバー}';
$port = '586';
$username = '{ユーザーID}';
$password = '{パスワード}';
$from = 'mossan@answroz.com'; // 送信元
$recipients = 'chocolate@answorz.com'; // 送信先
$subject = "こんにちわ"; // タイトル
$htmlbody = "<html><body>こんにちわ世界!</body></html>"; // 本文

mb_language('Japanese');

// mine
$mime = new Mail_Mime("\n");

// メールヘッダーと本文
$mime->setHTMLBody(nl2br($htmlbody));
$body = $mime->get(array(
  'head_charset' => 'UTF-8',
  'text_charset' => 'UTF-8',
  'html_charset' => 'UTF-8',
));
$headers = $mime->headers(array(
  'Subject' => $subject, // ←ここで mb_encode_mimeheader を行わないように
  'Content-Transfer-Encoding' => '8bit',
  'Content-Type' => 'text/html; charset="utf-8"',
  'From' => $from,
  'To' => $recipients ,
));

// メールを送信する。
$mail = Mail::factory('smtp',array(
  'host'     => $host,
  'port'     => $port,
  'auth'     => true,
  'username' => $username,
  'password' => $password,
));
$result = $mail->send($recipients,$headers,$body);

// エラーを表示する。
if (PEAR::isError($result)) {
  echo $result->getMessage(),PHP_EOL;
}

以上

Scroll to Top