PHPMailerを使ってメールをSMTP送信する方法(Composer無し)
PHPでメールをSMTP送信したかった。また、レンタルサーバだったのでComposerをどう使うのか分からない為、最低限のファイルのみアップロードしPHPMailerを使いたかった。尚、過去にPHPMailerを使うことはあったが、何故か送信できなくなっていたので新たに使い方をメモ。
PHPMailerの準備
以下よりダウンロードし展開する。
https://github.com/PHPMailer/PHPMailer
srcディレクトリ内の「PHPMailer.php」「Exception.php」「SMTP.php」をアップロードする。もしくはsrcディレクトリごとアップロードでも良い。
ソースコード
<?php ini_set( 'display_errors', 1 ); use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; use PHPMailer\PHPMailer\SMTP; require('./src/PHPMailer.php'); require('./src/Exception.php'); require('./src/SMTP.php'); // 文字エンコードを指定 mb_language('uni'); mb_internal_encoding('UTF-8'); // インスタンスを生成(true指定で例外を有効化) $mail = new PHPMailer(true); try { //Gmail 認証情報 $host = 'smtp.gmail.com'; $username = 'xxxxxxxxxxxx'; $password = 'xxxxxxxxxxxx'; //差出人 $from = $username; $fromname = $username; //宛先 $to = 'xxxxxxxxxxxx'; $toname = $to; //件名・本文 $subject = '件名'; $body = '本文'; //メール設定 $mail->SMTPDebug = 2; //デバッグ用 $mail->isSMTP(); $mail->SMTPAuth = true; $mail->Host = $host; $mail->Username = $username; $mail->Password = $password; $mail->SMTPSecure = 'tls'; $mail->Port = 587; $mail->CharSet = "utf-8"; $mail->Encoding = "base64"; $mail->setFrom($from, $fromname); $mail->addAddress($to, $toname); $mail->Subject = $subject; $mail->Body = $body; //メール送信 $mail->send(); echo '成功'; } catch (Exception $e) { echo '失敗: ', $mail->ErrorInfo; }
上記はGoogleのSMTP経由で送信する形になるが、他のSMTPサーバを経由させたい場合は「host」「username」「password」辺りを適宜変更する。
デバッグ情報を表示しない場合
$mail->SMTPDebug = 0; //デバッグ用
CCもしくはBCCで送信先を追加したい場合
$mail->setFrom($from, $fromname); //CC追加 $mail->addCC('xxxxxxxxxx'); //BCC追加 $mail->addBCC('xxxxxxxxxx');
Class内でPHPMailerを使いたい場合
前述のソースコードのままClass内で使おうとするとuse部分が云々とエラーになる。以下で対応する。
public static function mailSend() { require('./src/PHPMailer.php'); require('./src/Exception.php'); require('./src/SMTP.php'); mb_language('uni'); mb_internal_encoding('UTF-8'); //ここの記述に注意 $mail = new PHPMailer\PHPMailer\PHPMailer(); //以降は通常の使い方と同様 }
参考サイト
関連記事
-
-
PHPで多次元連想配列のキーを指定してソート
やりたかった事は、 ・多次元配列があってcodeというキーでソートしたい という ...
-
-
エラー処理を1ページにまとめる
できるだけまとめておいた方が効率よさそうなのでメモ。 メインのフォルダにlogs ...
-
-
画像をURLから取得して異なるサーバーにアップロード
■やりたかった事 ・画像があるサーバーはaaaサーバー ・アップロード先はbbb ...
-
-
PHPでyoutubeから更新分の情報を取得する(スクレイピング)
「○○のサイトから自動更新分を持ってきて 自サイトに反映させらへん?」と以前に聞 ...
-
-
CSVファイルを使って郵便番号から住所を抽出する
■ソース <? error_reporting(E_ALL & ~ ...
-
-
Ajaxのクロスドメイン
クロスドメイン対策にて色々あるみたいだけど 簡単そうで尚且つ実践でも使えたのでメ ...
-
-
MySQLiでDELETE文
MySQLiでDELETE文 ■ソース $mysqli = new mysqli ...
-
-
CodeIgniterのバージョンの調べ方
CodeIgniterを使っているシステムがあったが、どうも記憶しているディレク ...
-
-
PHPでメルマガを配信する方法2
以前にPHPでメルマガを配信する方法を書いたけど、BCCだと相手の名前などユーザ ...
-
-
PHPのLocationに変数を入れる
ページ遷移したい際に使う、 header("Location:./aaa.htm ...