PHPMailer5.2でSMTPでメール送信する

CPIサーバーで運用中のシステムから送信するメールがGメール宛に届かない現象が発生したため別のメールサーバーのSMTPを使ってメール送信することにしました。

現行システムは “PHP 5.5.27” で動いているため SMTPでメール送信するためのライブラリに “PHPMailer” の最新バージョンは使わず “PHPMailer 5.2” を利用することにしました。

PHPMailer5.2の取得

GitHubで管理されているリポジトリに “5.2-stable” というブランチがありますのでご都合いい方法でダウンロードします。

私はサーバー上で wget で取得しました。

wget --no-check-certificate https://github.com/PHPMailer/PHPMailer/archive/refs/heads/5.2-stable.zip

送信プログラム作成


<?php
// 
require './PHPMailer-5.2-stable/class.phpmailer.php';
require './PHPMailer-5.2-stable/class.smtp.php';
$mail = new PHPMailer();

try {

    // SMTP用アカウント設定
    $host = 'smtp.example.com';
    $user = 'user';
    $pass = 'pass1234';

    // アドレス等設定
    $from_mail = 'contact@example';
    $from_name = '送信者名テキスト';

    $mail_to      = 'user@example.com';
    $mail_to_name = '○○ 様';
    $mail_cc      = 'cc1@example.com';
    $mail_cc2     = 'cc2@example.com';
    $mail_bcc     = 'bcc1@example.com';

     // タイトル
    $subject = '送信メールのタイトル';

    // 本文設定
    $body_txt  = '○○様'."\n\n";
    $body_txt .= 'テストメール本文テキストです。'."\n\n";
    $body_txt .= '以上。';

    // SMTPサーバーの設定
    $mail->isSMTP();
    $mail->Host       = $host; // SMTPサーバーのアドレス
    $mail->SMTPAuth   = true;  // 
    $mail->Username   = $user; // SMTPユーザー名
    $mail->Password   = $pass; // SMTPパスワード
    $mail->SMTPSecure = 'tls'; // 暗号化を使用する場合('tls' または 'ssl')
    $mail->Port       = 587;   // SMTPポート

    $mail->CharSet = 'UTF-8';

    // メール内容の設定
    $mail->setFrom($from_mail, $from_name);
    $mail->addAddress($mail_to, $mail_to_name); // 受信者を追加
    $mail->addReplyTo($from_mail, $from_name);

    // Cc アドレス設定
    $mail->addCC($mail_cc);  // 
    $mail->addCC($mail_cc2); // 

    // Bcc アドレス設定
    $mail->addBCC($mail_bcc);

    // コンテンツ
    $mail->isHTML(false); // HTMLメールを設定
    $mail->Subject = $subject;
    $mail->Body    = $body_txt;
    // $mail->AltBody = ''; // HTMLメールの場合設定

    // 送信
    $mail->send();
    echo 'Message has been sent';
} catch (phpmailerException $e) {
    echo "Message could not be sent. PHPMailer Error: " . $mail->ErrorInfo;
} catch (Exception $e) {
    // その他の例外をキャッチ
    echo 'Message could not be sent. Error: ', $e->getMessage();
}

動作環境情報

"PHP" 5.5.27
"PHPMailer" 5.2
"CPIサーバー" シェアードプラン ACE01

コメント

タイトルとURLをコピーしました