どの例外が発生しているのかを知らずに言うのは難しいです。
いくつかの理由が考えられます。SMTP サーバーに接続できますか? ポート 587 は本当に開いていますか? ファイアウォールを使用していますか? 使用している場合、そのポートへの接続がブロックされている可能性がありますか? それらの資格情報が有効であると本当に確信していますか? SMTP サーバーに手動で接続しようとしましたか?
そうでない場合は、Telnet でできる方法を参照してください: Telnetを使用して SMTP サーバーをテストする方法
また、トランザクション メール サービスを使用することもできます。そうすれば、SMTP サーバーを管理したり、配信可能性について考えたりする必要さえありません。他の誰かにアウトソーシングするだけです。
さまざまなプロバイダーがあり、そのうちのいくつかは次のとおりです。
AlphaMail を使用している場合は、AlphaMail PHP クライアントを使用して、以下の例のようにメールを送信できます。
include_once("comfirm.alphamail.client/emailservice.class.php");
$email_service = AlphaMailEmailService::create()
->setServiceUrl("http://api.amail.io/v1")
->setApiToken("YOUR-ACCOUNT-API-TOKEN-HERE");
$person = new stdClass();
$person->userId = "1234";
$person->firstName = "John";
$person->lastName = "Doe";
$person->dateOfBirth = 1975;
$response = $email_service->queue(EmailMessagePayload::create()
->setProjectId(12345) // You AlphaMail project (determines template, options, etc)
->setSender(new EmailContact("Sender Company Name", "from@example.com"))
->setReceiver(new EmailContact("Joe Doe", "to@example.org"))
->setBodyObject($person) // Any serializable object
);
テンプレートは、 Comlangテンプレート言語を使用して AlphaMail ダッシュボードで作成されます。これは、コードを掘り下げなくても、いつでも簡単にメールを編集できることを意味します。Comlang のテンプレートは次のようになります。
<html>
<body>
<b>Name:</b> <# payload.firstName " " payload.lastName #><br>
<b>Date of Birth:</b> <# payload.dateOfBirth #><br>
<# if (payload.userId != null) { #>
<a href="/sign-up">Sign Up Free!</a>
<# } else { #>
<a href="/login?id=<# payload.userId #>">Sign In</a>
<# } #>
</body>
</html>