いろいろ~備忘録~

WEBエンジニアによる記録

勉強になったことを記録

【FuelPHP】PHPMailerを使ってGmailのSMTP経由でメールを送信する

概要

外部のSMTP経由でメールを送信します。
今回は、GmailSMTPPHPライブラリ(PHPMailer)を利用します。

1.PHPMailerをcomposerでインストール

composer.jsonに下記の行を追加します。

{
    "require": {
        "phpmailer/phpmailer": "~5.2"  ← 追加する行
    },
}

追加したら、composerをアップデートして、インストールします。
そうするとvendorディレクトリ配下にphpmailerディレクトリが追加されます。

下記参考
packagist.org

2.設定

下記のように記述します。

<?php
	$to = 'sample@test.com'; // 宛先
	$subject = "メールの件名";
	$body = "メール本文";
	$from = "from@test.com"; // 送信元
	$smtp_user = "gmailアカウント@gmail.com";
	$smtp_password = "gmailのパスワード";
	
	$mail = new PHPMailer();
	$mail->IsSMTP();
	$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
	$mail->SMTPAuth = true;
	$mail->CharSet = 'UTF-8';
	$mail->SMTPSecure = 'tls';
	$mail->Host = "smtp.gmail.com"; // 外部SMTPサーバーのホスト名(gmail)
	$mail->Port = 587; // 外部SMTPのポート番号
	$mail->IsHTML(false);
	$mail->Username = $smtp_user; // gmailのアカウント名
	$mail->Password = $smtp_password; // gmailのパスワード
	$mail->SetFrom($smtp_user);
	$mail->From     = $from; // Fromのメールアドレス
	$mail->Subject = $subject; // 件名
	$mail->Body = $body; // 本文
	$mail->AddAddress($to); // Toのメールアドレス
	
	if( ! $mail -> Send() ){
	    $message  = "Message was not sent<br/ >";
            $message .= "Mailer Error: " . $mail->ErrorInfo;
	} else {
	    $message  = "Message has been sent";
	}

        return $message;

以上で、送信ができます。

対処法

メールが送信できない時の対処法です。


1.「安全性の低いアプリのアクセス」をオンにする
 こちらにアクセスして、「オンにする」を選択します。
 https://www.google.com/settings/security/lesssecureapps

2. https://accounts.google.com/DisplayUnlockCaptcha よりGoogleアカウントへのアクセスを許可する