web-dev-qa-db-ja.com

SMTPエラーなし、メール送信なし

私はこれまでしばらくの間これと戦っています。フォーム用のカスタムコンポーネントを作成しました。Joomlaのメール機能を使用してメールを送信します。すべてのデータをチェックして正しいことを確認しましたが、メールが送信されません。$mailer->Send()もtrueを返します。

すべてのスタイルのエラー報告をオンにしても、エラーは報告されません。

$mailer = JFactory::getMailer();
$mailer->setSender($settings->sender);
$mailer->addRecipient($settings->to);
$mailer->setSubject($settings->subject);
$mailer->isHTML(true);
$mailer->setBody($settings->body);
if($send = $mailer->Send()){
  //email worked
  //print_r($settings);
  //exit;
}else{
  echo 'error';
  exit;
}

これは、電子メールが送信されるコンポーネントの中心です。$ settingsは、電子メールを送信するために必要な情報を保存するために使用するオブジェクトであり、「成功した」送信として読み取られた後、すべての適切な情報を出力します。どのようなマンドリルでも、電子メールに使用するサービスは電子メールを取得しません。つまり、SMTPへの接続に失敗したことがわかる限り、接続のある時点でエラーが発生したはずですが、Joomlaはそれを確認できませんでした。

この同じコードは他の多くのサイトで機能します。問題のサイトはサブドメインであり、hostgatorでホストされていますが、どのような形式のエラーもなく、どこで修正を探し始めるのかわかりません。

7
Jordan Ramstad

JoomlaはPHPMailerをメールハンドラーとして使用します。 PHPMailerを有効にすると、Nice SMTPログが作成されます。これを行うには、SMTPDebug変数をtrueに設定します。

$mailer = JFactory::getMailer();

$mailer->SMTPDebug = true;

$mailer->setSender($settings->sender);
$mailer->addRecipient($settings->to);
$mailer->setSubject($settings->subject);
$mailer->isHTML(true);
$mailer->setBody($settings->body);
if($send = $mailer->Send()){
  //email worked
  //print_r($settings);
  //exit;
}else{
  echo 'error';
  exit;
}

これは、JoomlaとSMTPサーバー間の通信の問題を見つけるのに役立ちます。

8
Harald Leithner