it-swarm-vi.com

SMTP không có lỗi nhưng không gửi email

Tôi đã chiến đấu với điều này một thời gian. Tôi đã xây dựng một thành phần tùy chỉnh cho các biểu mẫu và nó sử dụng các chức năng thư của Joomla để gửi email. Tôi đã kiểm tra tất cả dữ liệu để chắc chắn rằng nó đúng nhưng email không gửi, $mailer->Send() cũng trả về đúng.

Bật mọi kiểu báo cáo báo cáo cũng không có lỗi.

$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;
}

Đây là trung tâm của thành phần nơi email được gửi, cài đặt $ là đối tượng tôi sử dụng để lưu trữ thông tin tôi cần gửi email và sau khi được đọc là "thành công", hãy gửi nó ra tất cả thông tin phù hợp . Tuy nhiên, dịch vụ chúng tôi sử dụng cho email không bao giờ nhận được email, có nghĩa là theo như tôi có thể nói là không kết nối được với SMTP nghĩa là nó đã bị lỗi tại một số điểm trong kết nối, nhưng Joomla không thấy được.

Mã tương tự này hoạt động trên nhiều trang web khác, một trong những câu hỏi là một tên miền phụ và được lưu trữ với máy chủ lưu trữ, mặc dù không có bất kỳ hình thức lỗi nào, tôi không biết phải bắt đầu tìm cách khắc phục.

7
Jordan Ramstad

Joomla sử dụng PHPMailer làm trình xử lý thư. PHPMailer có một nhật ký SMTP đẹp nếu bạn bật nó. Bạn có thể làm điều này bằng cách đặt biến SMTPDebug thành 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;
}

Điều này sẽ giúp bạn tìm ra vấn đề trong giao tiếp giữa Joomla và máy chủ smtp.

8
Harald Leithner