google Apps に登録したドメインからメール送信を行う

PHP

googleAppsに登録した独自ドメインで運用しているウェブシステムからメールを送信する方法。

今回はphpmailerを利用して実現させます。

GoogleAppsで独自ドメインでメールを運用すると、最強なスパムメール対策になるのだけれども、メールサーバーをGoogleに預ける形になります。ほぼ当然の如く、そのドメインはWWWのようなサブドメインでウェブサーバーを運用していると思います。そしてそれらの多くが、メールフォームや訪問者のアクションをトリガーにしたりして、メール送信を実装していると思います。phpのsendmailコマンドや多くのCGIスクリプトでウェブサーバーからメール送信してもGoogleAppsでメール運用してると届かないという現象が頻発します。DNSの設定を結構弄り倒しても、結局自ドメインのメールアドレには届かなかったりと・・・

phpmailerをつかって、phpスクリプトにThunderbird やoutkookのような振る舞いをして、Gmailにメール送信すれば、色々面倒で不毛なメール不達問題から解決されます。

まずは、phpmailerを、http://code.google.com/a/apache-extras.org/p/phpmailer/からダウンロードして解凍しphpスクリプトが利用可能なディレクトリに保存します。

んで、送信スクリプトを下記のように用意すればいいです。

mb_language("japanese");
mb_internal_encoding("UTF-8");
require("class.phpmailer.php");
$mailer = new PHPMailer();
$mailer->IsSMTP();
$mailer->Host = 'ssl://smtp.gmail.com:465';
$mailer->SMTPAuth = TRUE;
$mailer->Username = 'user@gmail.com';  // Gmailのアカウント名
$mailer->Password = 'gmail_password';  // Gmailのパスワード
$mailer->From     = 'from@gmail.com';  // Fromのメールアドレス
$mailer->CharSet  = 'ISO-2022-JP';
$mailer->FromName = mb_encode_mimeheader(mb_convert_encoding("Fromの名前","ISO-2022-JP","UTF-8"));
$mailer->Subject  = mb_encode_mimeheader(mb_convert_encoding("メールのタイトル","ISO-2022-JP","UTF-8"));
$mailer->Body     = mb_convert_encoding("メールの内容","ISO-2022-JP","UTF-8");
$mailer->AddAddress('friend@example.com'); // 宛先
// $mailer->AddReplyTo($email, $from);

if(!$mailer->Send()) {
echo "Message was not sent";
echo "Mailer Error: " . $mailer->ErrorInfo;
} else {
echo "Message has been sent";
}

この実行はGMAILのSMTP利用してメールを送信するので、gmailのアカウントが必要になります。文字コードはUTF-8を使用します。

コメント

  1. […] cakeEmail を gmail 経由でメールする。 CakePHP2.0には、CakeEmaiという超絶便利なコンポーネントがあるらしい。phpmailerよりも簡単に使えるらしい。 […]

タイトルとURLをコピーしました