勉強したことのメモ

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で配列に特定の値が入っているか検索して trueかfalseを返したい、と ...

CodeIgniterでCronを実行する方法

CodeIgniterで特定の処理をCronで自動で実行したかった。以下に設定方 ...

var_export

PHPのソースでvar_exportという見慣れない関数があった。 Aファイルか ...

PHPで変数名を動的に変えて使う方法

変数名を動的に変えて使用したかった。 調べてみると可変変数というものがあり、希望 ...

MySQLiでDELETE文

MySQLiでDELETE文 ■ソース $mysqli = new mysqli ...

MySQLで重複を除く

ユニークな値を取り出したいときに使う。 DISTINCT(ディスティンクト) S ...

PHPの配列でキーの最大値を取得

PHPの配列でキーの最大値を取得したかった。以下で対応する。 $test = a ...

PHPでソーシャル(SNS)ログインする方法

「facebook / twitter / Googleアカウントでログインする ...

cronの設定方法

cronを設定してみたので方法をメモ。 まずcronで動かすPHPを作成。 ■c ...

PHPでみたいに省略して書く際の設定

さくらvpsで<?=$hoge;?>とか省略して書こうとしても書けな ...