簡易的なSNSシステムの開発にあたり、メッセージを受した時・フォローされた時などに、ユーザーへ通知メールを送信する処理を組み込むこととなりました。
迷惑メールとして扱われる可能性を減らすため、SMTPサーバー経由でメール送信できる「PHPMailer」というライブラリを導入しました。
メールアカウントはGmailのものを使用し、送信は問題無く行えていますが、送信処理自体に時間がかかっている点で困っています。
以下、実際のコードとなります。
php
1 2//ライブラリ読み込み 3require_once('PHPMailerAutoload.php'); 4 5//メール設定 6$mail = new PHPMailer(); 7$mail->isSMTP(); 8$mail->Host = 'smtp.gmail.com'; 9$mail->SMTPAuth = true; 10$mail->Username = 'xxxxxxxx@gmail.com'; 11$mail->Password = 'xxxxxxxx'; 12$mail->SMTPSecure = 'tls'; 13$mail->Port = '587'; 14$mail->CharSet = "UTF-8"; 15$mail->setFrom('xxxxxxxx@gmail.com','差出人'); 16$mail->Subject = 'テストメール件名'; 17$mail->Body = 'テストメール本文'; 18$mail->addAddress('xxxxxxxx@gmail.com'); 19 20//送信直前の時間を計測 21$arrTime = explode('.',microtime(true)); 22echo date('Y-m-d H:i:s', $arrTime[0]) . '.' .$arrTime[1]; 23 24//メール送信 25$mail->Send(); 26 27//送信直後の時間を計測 28$arrTime = explode('.',microtime(true)); 29echo '<br>'.date('Y-m-d H:i:s', $arrTime[0]) . '.' .$arrTime[1]; 30
実行結果
php
12017-06-02 19:55:29.68 22017-06-02 19:55:32.16
送信処理を行う「$mail->Send();」の前後でミリ秒までを出力してみた所、実行結果を見て頂くと分かる通り、平均で2~3秒もかかってしまいました。
SMTP認証を行わないと0.05秒程度で処理が完了するので、外部SMTPサーバー経由で送信している事が原因かと考えています。
SNSシステムと同じサーバーに、自前でSMTPサーバーを構築すれば良いのかと考えたのですが、構築の経験が無く、どのサイトを参考にすれば良いか判断が付きません。
SMTP認証は必須ではありませんので、迷惑メールとして扱われる可能性が低く、また短時間(可能であれば1秒以下)で送信を行える方法はありませんでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。