Brevo で利用可能なSMTPポートには、465, 587 に加えて、2525 があります。
465, 587 へは VPS の制限から接続できないのですが、2525 には接続できたので 2525 ポートを使って PHPMailer でメール送信ができます。
OpenSSL で SMTP サーバーに直接接続できるか確認する。
:~# openssl s_client -connect smtp-relay.brevo.com:465 何も返らず固まる(アウトバウンド制限) :~# openssl s_client -starttls smtp -connect smtp-relay.brevo.com:587 何も返らず固まる(アウトバウンド制限) :~# openssl s_client -starttls smtp -connect smtp-relay.brevo.com:2525 証明書情報や 250 などの応答が返る
また、Brevo で提供している API を使えばそもそもポートを気にせずにメール送信ができます。(API は 443 ポートで通信するためブロックされません)
API 送信をする。PHP SDK | Brevo API Documentation
/usr/local/lib で Composer を実行して SDK をインストール。
:~# cd /usr/local/lib :/usr/local/lib# composer require getbrevo/brevo-php :/usr/local/lib# composer require guzzlehttp/guzzle
APIキーを取得して、authorized IP address も登録する。
PHPコード例:
<?php require_once '/usr/local/lib/vendor/autoload.php'; use Brevo\Brevo; use Brevo\TransactionalEmails\Requests\SendTransacEmailRequest; use Brevo\TransactionalEmails\Types\SendTransacEmailRequestSender; use Brevo\TransactionalEmails\Types\SendTransacEmailRequestToItem; // APIクライアント初期化 $client = new Brevo(apiKey: 'YOUR_BREVO_API_KEY'); // メール送信 $result = $client->transactionalEmails->sendTransacEmail( new SendTransacEmailRequest([ 'subject' => 'Hello from Brevo API!', 'htmlContent' => '<html><body><p>Hello!</p><p>This is a test email via Brevo API.</p></body></html>', 'sender' => new SendTransacEmailRequestSender([ 'name' => 'Your Name', 'email' => '[email protected]', ]), 'to' => [ new SendTransacEmailRequestToItem([ 'email' => '[email protected]', 'name' => 'John Doe', ]), ], ]) ); echo 'Email sent. Message ID: ' . $result->messageId . PHP_EOL;