[PHP] SendGrid でメールをSMTPで送信する

SendGrid の SMTPサーバを利用して送信する、PHP サンプルです
既存のアプリケーションにてSMTPサーバの設定ができる場合は、ホストを smtp.sendgrid.net、ユーザを apikey、パスワードにAPIキーを指定することで利用可能です。

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

# 事前に composer で PHPMailer をインストール
# composer require phpmailer/phpmailer
require 'vendor/autoload.php';

$host = "smtp.sendgrid.net";  // sendgrid の場合は固定
$user = "apikey";             // sendgrid の場合は固定
$pass = "SG.XXXXXXXXXXXXXX";  // sendgrid の場合はAPIキーを指定

$from = "info@apiless.com";
$from_name = "info";
$to = "hogehoge@apiless.com";
$to_name = "apiless";

$mail = new PHPMailer(true);

try {
    // 送信設定
    $mail->SMTPDebug = 2;      // デバッグ出力を有効にする
    $mail->isSMTP();           // SMTPを使用する
    $mail->Host = $host;       // SMTPサーバー
    $mail->SMTPAuth = true;    // SMTP認証を有効にする
    $mail->Username = $user;   // SMTPユーザー名
    $mail->Password = $pass;   // SMTPパスワード
    $mail->SMTPSecure = 'tls'; // 暗号化方式(tlsまたはssl)
    $mail->Port = 587;         // TCPポート(tlsは587、sslは465)
    $mail->CharSet = 'UTF-8';  // 文字セット (UTF-8)

    $mail->setFrom($from, $from_name);
    $mail->addAddress($to, $from_name);

    $mail->isHTML(true); // HTML形式のメールを送信
    $mail->Subject = 'テストメールです';
    $mail->Body    = '<h1>これはSMTP送信のテストメールです</h1><p>HTMLメールを送信しています</p>';
    $mail->AltBody = 'これはテストメールです HTMLメールを送信しています';

    $mail->send();
    echo 'Message has been sent';
} catch (Exception $e) {
    echo "Error: {$mail->ErrorInfo}";
}

SendGridPHP,SendGrid

Posted by kidatti