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よりも簡単に使えるらしい。 […]