PEAR::MailでSMTP送信に挑戦!|無事に動作したコピペで使えるコードを公開

2018-10-04

2019-07-07報告 SMTPは「PHPMailer」で行うことをオススメします


PHPメーラーのライブラリ「PHPMailer」はまだまだ現役。今もなおアップデートされています。
Wordpressもメール送信周りではPHPMailerを使用されています。

SMTP送信に関してはコチラの新しい記事の方が導入が簡単です。
2019年 PHPのSMTP送信はインストール不要のPHPMailerが手軽で最短!PEAR終了

どうしてもPEARでSMTP送信をしたい場合は下記をご覧ください。


今回は前回に引き続き、PEAR関連でPEAR::Mailで「SMTP送信」を実行させました。

PHPのド標準関数である、mail() や mb_send_mail()では、
迷惑メールになりやすいし、SPAM認定されてしまうことがあるので、
より確実に届けるにはSMTPサーバー経由による送信が有効のようです。

これまでは個人的にメール送信周りを「Qdmail」という軽量ライブラリを使用していたのですが、
随分前に開発者による更新がストップしているので、今回PEARに興味を持ちました。

それでは早速PEAR::MailのSMTP送信のコピペで使えるコードをごらんください。
※xamppとさくらインターネットでは下記コードでちゃんと動作しました。

ローカル環境で動作しなかった場合は以下の3点が怪しいです。
・xamppにPEAR::Mailがうまくインストールできていない(XAMPP PEAR検索結果
・sendmail.iniの設定がうまくできていない(対処法参考
・PEARの環境変数が通っていない(対処法参考

<?php
//PEAR::Mailのインクルード(PEARの環境変数が設定されていればこのパスで大丈夫です。)
require_once("Mail.php");

//日本語メールを送る際に必要
mb_language("Japanese");
mb_internal_encoding("UTF-8");

// SMTPサーバーの情報を連想配列にセット
$params = array(
"host" => "sample.sakura.ne.jp", // SMTPサーバー名
"port" => 587, // ポート番号
"auth" => true, // SMTP認証を使用する
"username" => "info@sample.net", // SMTPのユーザー名
"password" => "password" // SMTPのパスワード
);

// PEAR::Mailのオブジェクトを作成
$mailObject = Mail::factory("smtp", $params);

// 送信先のメールアドレス
$recipients = "sample@gmail.com";

// メールヘッダ情報を連想配列としてセット
$headers = array(
"To" => "info@sample.net", // ここで指定したアドレスには送信されない
"From" => "info@sample.net",
"Subject" => mb_encode_mimeheader("メール件名") // 日本語の件名を指定する場合、mb_encode_mimeheaderでエンコード
);

// メール本文
$body = "日本語メールの本文。";

// 日本語なのでエンコード
$body = mb_convert_encoding($body, "ISO-2022-JP", "UTF-8");

// sendメソッドでメールを送信
$mailObject->send($recipients, $headers, $body);
?>

この記事がお役に立てましたら是非シェアのご協力お願いします。