【问题标题】:SMTP Connection Timeout PHP EmailSMTP 连接超时 PHP 电子邮件
【发布时间】:2014-11-29 12:31:13
【问题描述】:

请在将其标记为重复之前阅读。我什么都试过了!

我一直在尝试使用我以前使用过的 SwiftMailer 和 PHPMailer 从我的网站表单发送电子邮件。出于某种原因,在过去的几天里,我没有让他们工作。每次,无论设置如何,我都会收到错误 110 - 到 smtp 服务器的连接超时。我尝试使用我的 gmail 帐户和 1and1.com 电子邮件帐户的身份验证。我什至使用fsockopen 添加了一个检查,并且可以连接到 gmail、godaddy 和 1and1 的 smtp 服务器。我什至两次打电话给 1and1 询问防火墙和任何会阻止我的电子邮件的事情,他们说他们不知道问题可能是什么。我已经尝试了多个 Stackoverflow 问题中列出的所有内容,但无法解决此问题。有什么事情会阻止这种情况发生吗?我的互联网连接(尝试过在家和工作)可能吗?我很失落!我的 PHPMailer 和 SwiftMailer 代码将粘贴在下面。请记住,我曾尝试使用端口 465/ssl 和端口 587/tls,但都没有成功。

require 'PHPMailerAutoload.php';

$mail = new PHPMailer();
$mail->isSMTP();
$mail->Host = 'smtp.example.com';
$mail->Port = 465;
$mail->SMTPAuth = true;
$mail->Username = 'inquiry@example.com';
$mail->Password = 'password';
$mail->SMTPSecure = 'ssl';
$mail->From = 'inquiry@example.com';
$mail->addAddress('example@gmail.com');
$mail->isHTML(true);

$checkconn = fsockopen($mail->Host, $mail->Port, $errno, $errstr, 5);

if($_GET['formName'] == 'join')
{
    $text = 'Name: <b>' . $_POST['first_name_join']. " " .$_POST['last_name_join']. "</b>".
             "<br>Phone: <b>".$_POST['phone_join']. "</b>".
             "<br>Email: <b>".$_POST['email_join']. "</b>".
             "<br>Date of Birth: <b>".$_POST['birth_month']. "/" .$_POST['birth_day']. "/" .$_POST['birth_day']. "</b>".
             "<br>Message: <br><b>".$_POST['message_join']. "</b>";
}
else
{
    $text = 'Name: <b>' . $_POST['full_name_sponsor']. "</b>".
             "<br>Company/Organization: <b>" . $_POST['company_sponsor']. "</b>".
             "<br>Phone: <b>".$_POST['phone_sponsor']. "</b>".
             "<br>Email: <b>".$_POST['email_sponsor']. "</b>".
             "<br>Message: <br><b>".$_POST['message_sponsor']. "</b>";
}



$mail->Subject = $_GET['formName'] == 'join' ? 'Join Inquiry' : 'Sponsorship Inquiry' ;
$mail->Body    = $text;

if (!$checkconn)
{
    echo "($errno) $errstr\n\n";
}
if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}

require_once 'swiftmailer/swift_required.php';


// Create the Transport
$transport = Swift_SmtpTransport::newInstance('smtp.example.com', 587)
    ->setUsername('inquiry@example.com')
    ->setPassword('password');


// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);

if($_GET['formName'] == 'join')
{
    $text = 'Name: <b>' . $_POST['first_name_join']. " " .$_POST['last_name_join']. "</b>".
             "<br>Phone: <b>".$_POST['phone_join']. "</b>".
             "<br>Email: <b>".$_POST['email_join']. "</b>".
             "<br>Date of Birth: <b>".$_POST['birth_month']. "/" .$_POST['birth_day']. "/" .$_POST['birth_day']. "</b>".
             "<br>Message: <br><b>".$_POST['message_join']. "</b>";
}
else
{
    $text = 'Name: <b>' . $_POST['full_name_sponsor']. "</b>".
             "<br>Company/Organization: <b>" . $_POST['company_sponsor']. "</b>".
             "<br>Phone: <b>".$_POST['phone_sponsor']. "</b>".
             "<br>Email: <b>".$_POST['email_sponsor']. "</b>".
             "<br>Message: <br><b>".$_POST['message_sponsor']. "</b>";
}

// Create a message
$subject = $_GET['formName'] == 'join' ? 'Join Inquiry' : 'Sponsorship Inquiry' ;
$message = Swift_Message::newInstance($subject)
  ->setFrom(array('inquiry@example.com'))
  ->setTo(array('example@gmail.com')) 
  ->setBody($text, 'text/html');

// Send the message
$result = $mailer->send($message);

【问题讨论】:

  • 你尝试重启 apache 了吗?
  • 我没有使用本地主机。我实际上已经将网站上传到了我的 1and1 服务器。
  • 您应该在服务器上的 shell 中尝试telnet mail.example.com 25 以消除 PHP 配置。

标签: php email phpmailer swiftmailer


【解决方案1】:

这可能是 ISP 阻止 SMTP 的情况。而且我知道我没有给出直接的解决方案。尝试其他服务通过 API 发送邮件不会有什么坏处,从而完全消除 SMTP。
我对MailgunMandrill 有很好的经验。它们都有扩展文档和用于 API 的 PHP SDK,也可以通过 SMTP 使用。
祝你好运。

【讨论】:

  • 在您发送此邮件后的最后 15 小时内搜索后,我决定使用 Mailgun,它完美运行。我最终发现,2010 年发生了一些 PHP 问题,fsockopen 无法连接到 smtp,而其他人在 2012 年遇到了问题。我尝试了 gmail、1and1.com、godaddy、yahoo 和 live。 com 进行 smtp 连接,所有这些都超时。以下是问题的链接 bugs.php.net/bug.php?id=50953 (2010) forums.phpfreaks.com/topic/… (2012)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-11
  • 2018-01-15
  • 1970-01-01
  • 1970-01-01
  • 2011-10-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多