ノラプログラマーの技術メモ

ネットで調べても出てこなかった情報を載せていきたい技術系ブログ。

PHPでGmailを送信する方法

概要

Google Apps独自ドメインを管理している場合は、PHPを使ってGmailからメールを送信した方が迷惑メールに割り振られず到達率が高くなる(ような気がする)。

PHPGmailを送信するには、PHPMailerという超簡単ライブラリを使う。以下その手順。

1.PHPMailerをダウンロードする

下記のアドレスからPHPMailerライブラリをダウンロードする。

https://github.com/Synchro/PHPMailer

zipファイルを展開したら、PHPプログラムと同じフォルダ内に置く。

2.Gmailを送信するPHPプログラム

以下のソースコードを書く。

mb_language("japanese");
mb_internal_encoding("UTF-8");
require 'PHPMailer/PHPMailerAutoload.php';

$mailer = new PHPMailer();
$mailer->IsSMTP();
$mailer->Encoding = "7bit";
$mailer->CharSet = '"iso-2022-jp"';

$mailer->Host = 'smtp.gmail.com';
$mailer->Port = 587;
$mailer->SMTPAuth = TRUE;
$mailer->SMTPSecure = "tls";
$mailer->Username = 'info@hoge2.net'; // Gmailログインアドレス
$mailer->Password = 'hogehoge'; // Gmailログインパスワード

$mailer->From     = 'info@hoge2.net'; // Fromアドレス
$mailer->FromName = mb_encode_mimeheader(mb_convert_encoding("山田太郎","JIS","UTF-8"));
$mailer->Subject  = mb_encode_mimeheader(mb_convert_encoding("メールのタイトル","JIS","UTF-8"));
$mailer->Body     = mb_convert_encoding("メールの本文です","JIS","UTF-8");
$mailer->AddAddress('info@loginmylife.co.jp'); // Toアドレス

if($mailer->Send()){
	echo "送信しました";
}
else{
	echo "エラー: " . $mailer->ErrorInfo;
}

ポイントはsslではなくtlsを使う点。あと普通に使うとUTF-8文字コードでメールが送信されてしまうので、文字コードに「iso-2022-jp」を指定しておく。

あとphp.iniまたはプログラム内で、mb_languageにjapaneseを指定しておかないと文字化けするので注意。

3.送信できない場合は

3-1.PHPMailerAutoload.phpの読み込みパスを確認する
3-2.php-mbstring(もしくはphp_mbstring.dll)がロードされているかを確認する
3-3.Gmailのログインアドレスとパスワードが正しいかを確認する

4.文字化けする場合は

4-1.php文字コードUTF-8であるか確認する
4-2.mb_languageにjapaneseが指定されているか確認する
4-3.文字セットにiso-2022-jp(JIS)が指定されているか確認する

以上ですー