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