PEAR::MailでSMTP送信に挑戦!|無事に動作したコピペで使えるコードを公開
2018-10-04 760 18742019-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);
?>