メールサーバーを構築せずにGmailのSMPTを使ってPHPでメール送信
2024/01/12
メールサーバーが立てられなかったり、無料サーバーのため使えなかったりといった場合に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 = 'あいうえお';
で特に処理とかせずにいけた。
関連記事
-
【2024年版】PHPMailerでGmailのSMTPサーバを経由してメールを送信する方法
だいぶ前に同じようなことをメモしたが、そちらの方法だと送信できずエラー内容を見た ...
-
PHPMailerでメールを送信する際にTLS / SSL暗号化させる方法
PHPMailerでメールを送信したところGmailで確認すると赤い鍵のようなア ...
-
PHPMailerでエラーメッセージ及びデバッグログの表示方法について
PHPMailerでエラーメッセージ及びデバッグログを表示させたいというケースが ...
-
PHPMailerでエラーメッセージを日本語で出力する方法
PHPMailerのGitHubページを見ていると言語設定についての案内を見つけ ...
-
Mailtrap & PHPMailerでメールサーバ無しの環境でもメール送信テストを行う方法
開発環境等メールサーバが無い環境でメール送信テストを行う際にMailtrapとい ...