勉強したことのメモ

webプログラマが勉強したことのメモ。

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();

	//以降は通常の使い方と同様

}

 

参考サイト

https://into-the-program.com/phpmailer-gmail/

 - PHP

  関連記事

当選確率が異なる抽選(ガチャ)をPHPで作成

ソシャゲのガチャみたいな、当選確率が異なる抽選をPHPで作成したかった。調べたと ...

PHPでサイトマップを動的に生成する

WordPress等のCMSは使っておらず、自動更新するサイトがあり、そのサイト ...

PHPでの$_REQUESTは色々危険

extract($_REQUEST)はかなり怖いよ、という話が最近あった。 でき ...

google map apiとPHPを組み合わせて複数マーカーとウィンドウを連携させる

やりたかった事は、 mysqlから経度緯度、マーカー名、マーカーIDを持ってきて ...

pdfからjpg/jpegへ出来るだけ劣化させずに変換

やりたかった事はpdfからjpg画像への変換。 imagemagick使えばすぐ ...

imgタグとPHPでグラフ作成

プラグインやライブラリを使わずにグラフを作る 機会があったのでメモ。 ■サンプル ...

PHPで月末日を取得

PHPファイルを触っている際に日付処理時、 date('t')というものがあって ...

javascriptでHTML内に関数を書きたい場合

ダイアログ確認したいだけでわざわざfunctionを 書くのもアレだという時に使 ...

PHPの文字化け対策

PHPファイルもDBも全部UTF-8で出来たらいいけど、 そうもいかない場合が多 ...

PHPのshort_open_tagのデメリット

PHPをHTML内に書くときは、書く速さと見易さ重視で、   < ...