PHPMailerを使ってメールをSMTP送信する方法(Composer無し)
2024/01/16
PHPでメールをSMTP送信したかった。また、レンタルサーバだったのでComposerをどう使うのか分からない為、最低限のファイルのみアップロードしPHPMailerを使いたかった。尚、過去にPHPMailerを使うことはあったが、何故か送信できなくなっていたので新たに使い方をメモ。
目次
GmailのSMTPサーバを使いたい場合(2024/01/12追記)
GmailのSMTPサーバを使いたい場合はセキュリティ設定の問題でこの記事の方法では送信できない。そのため追記した「PHPMailerでGmailのSMTPサーバを経由してメールを送信する方法」を参照。
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();
//以降は通常の使い方と同様
}
参考サイト
関連記事
-
-
PHPMailerでエラーメッセージを日本語で出力する方法
PHPMailerのGitHubページを見ていると言語設定についての案内を見つけ ...
-
-
PHPでメール送信時に返信先(Reply-To)を指定する方法
PHPにてメールを送信し、そのメールに対して返信しようとすると通常は送信元のメー ...
-
-
Mailtrap & PHPMailerでメールサーバ無しの環境でもメール送信テストを行う方法
開発環境等メールサーバが無い環境でメール送信テストを行う際にMailtrapとい ...
-
-
PHPでファイルを添付してメールを送信する方法(PHPMailer)
PHPでファイルを添付の上、メールを送信したかった。方法を探したところphpma ...
-
-
PHPでHTMLメールを送信する方法(PHPMailerあり無しの2パターン)
PHPでHTMLメールを送信したい。また、メール関連の機能を実装する際は環境によ ...