プロジェクト (これは不動産に関するものです) のために、訪問者が不動産物件の購入/賃貸に興味がある場合、訪問者が不動産仲介業者に連絡できる連絡フォームを含めました。
Symfony2 とそのライブラリを使用しています。連絡先メールには、Swiftmailer ライブラリを使用しています。さて、フォームの送信を処理する次のコードがあります。そこで、メールを送信できるようにメール オブジェクトを作成します。動作しますが、送信者/受信者からのsmtpホストに問題がある場合のエラー解決サービスを提供したい.
ここにコードがあります、
$data = $contactForm->getData();
try {
// create body text
$body = $app['twig']->render('mailTemplate.twig', array('data' => $data, 'immoid' => $immoID));
// set mail
$mail = \Swift_Message::newInstance()
->setSubject('Contact reaction on your immo offer.')
->setFrom($app['swiftconfig']['sender'])
->setTo($contactinfo['contactmail'])
->setBody($body, 'text/html');
// send mail
$app['mailer']->send($mail);
// redirect if successfull
$app->redirect($app['url_generator']->generate('immoDetail', array('immoID' => $immoID)));
}
catch (Swift_TransportException $STe) {
// logging error
$string = date("Y-m-d H:i:s") . ' - ' . $STe->getMessage() . PHP_EOL;
file_put_contents("errorlog.txt", $string, FILE_APPEND);
// send error note to user
$errorMsg = "the mail service has encountered a problem. Please retry later or contact the site admin.";
}
catch (Exception $e) {
// logging error
$string = date("Y-m-d H:i:s") . ' - GENERAL ERROR - ' . $e->getMessage() . PHP_EOL;
file_put_contents("errorlog.txt", $string, FILE_APPEND);
// redirect to error page
$app->abort(500, "Oops, something went seriously wrong. Please retry later !");
}
($app['swiftconfig']['sender'] = ホストからのメールアドレス / $contactinfo['contactmail'] = サイト訪問者からのメールアドレス (コンタクトフォームで送信))
現在、smtp ホストが機能しない場合、Swiftmailer は例外を送信しますが、try-catch ブロックは例外をキャッチしません。機能は継続中です。ルートの try-catch ブロック (app.php 内) でさえ、それをキャッチしていません。この結果、Web ページに大きな PHP エラーが表示されますが、これは発生すべきではありません。そこからのメッセージを以下に説明します。
SCREAM: Error suppression ignored for
---
Fatal error: Uncaught exception 'Swift_TransportException' with message ' in C:\...\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Transport\StreamBuffer.php on line 266
---
Swift_TransportException: Connection could not be established with host <output omitted>
try catch ブロックがカスタム例外をキャッチしない理由を知っている人はいますか? クラス ファイルと進行状況を調査しましたが、異常なアクティビティは見られません。
PHPエラーはサイトページに表示されるべきではないため、誰かがこれに対する解決策を提供してくれることを願っています.