勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

メールサーバーを構築せずにGmailのSMPTを使ってPHPでメール送信

   2024/01/12  PHP

メールサーバーが立てられなかったり、無料サーバーのため使えなかったりといった場合にGmailのSMTPサーバーを使ってPHPでメールを送信する方法があったのでメモ。まずphpmailerというクラスファイルを使うのでダウンロード。

 

2024/01/12追記

本ページのソースコードでは送信できない。新しく「PHPMailerでGmailのSMTPサーバを経由してメールを送信する方法」の記事参照を推奨。

 

PHPMailer

http://phpmailer.worxware.com/

ダウンロードしたファイルを適当なディレクトリにアップロードする。

 

ソースコード

<?php
include('./PHPMailer.php');
include('./Exception.php');
include('./SMTP.php');
date_default_timezone_set('Asia/Tokyo');
mb_language("japanese");
mb_internal_encoding("UTF-8");
//Gmailアカウント
$gmail_host = 'smtp.gmail.com';
$gmail_user = '【Gmailアドレス】';
$gmail_pass = '【アプリパスワード】';
//to
$to = 'to@gmail.com';
//from
$from = 'from@gmail.com';
$from_name = '差出人名';
//件名と本文
$subject = '件名';
$body = '本文';
//phpmailer設定
$mail = new PHPMailer\PHPMailer\PHPMailer();
$mail->SMTPDebug = 2; //デバッグ用
$mail->isSMTP();
$mail->Host = $gmail_host;
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Username = $gmail_user;
$mail->Password = $gmail_pass;
$mail->SMTPOptions = [
    'ssl' => [
        'verify_peer' => false
        ,'verify_peer_name' => false
        ,'allow_self_signed' => true
    ]
];
$mail->IsHTML(false);
$mail->CharSet = "utf-8";
$mail->Encoding = "base64";
$mail->setFrom($from, $from_name);
$mail->addAddress($to);
$mail->Subject = $subject;
$mail->Body = $body;
if( !$mail->Send() ){
    echo "送信失敗<br/ >";
    echo "エラー内容: " . $mail->ErrorInfo;
} else {
    echo "送信成功";
}
?>

上記で送信できた。

 

2015/12/29追記

includeするファイルを違うものに変更。あと本文が文字化けしていたので、class.phpmailer.phpの48行目付近を以下の通り変更。

#public $CharSet = 'iso-8859-1'; 元はこちら 
public $CharSet = 'UTF-8'; //これに書き換え

尚、本文の記述は、

$mailer->Body = 'あいうえお';

で特に処理とかせずにいけた。

 - PHP

  関連記事

【2024年版】PHPMailerでGmailのSMTPサーバを経由してメールを送信する方法

だいぶ前に同じようなことをメモしたが、そちらの方法だと送信できずエラー内容を見た ...

PHPMailerでメールを送信する際にTLS / SSL暗号化させる方法

PHPMailerでメールを送信したところGmailで確認すると赤い鍵のようなア ...

PHPMailerでエラーメッセージ及びデバッグログの表示方法について

PHPMailerでエラーメッセージ及びデバッグログを表示させたいというケースが ...

PHPMailerでエラーメッセージを日本語で出力する方法

PHPMailerのGitHubページを見ていると言語設定についての案内を見つけ ...

Mailtrap & PHPMailerでメールサーバ無しの環境でもメール送信テストを行う方法

開発環境等メールサーバが無い環境でメール送信テストを行う際にMailtrapとい ...