勉強したことのメモ

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で多次元連想配列のキーを指定してソート

やりたかった事は、 ・多次元配列があって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 ...