Swift Mailer错误

时间:2010-04-07 19:07:18

标签: php swiftmailer

我使用以下代码发送消息:

try
{   
    require_once "lib/Swift.php";
    require_once "lib/Swift/Connection/SMTP.php";
    $smtp =& new Swift_Connection_SMTP("mail.somedomain.net", 587);
    $smtp->setUsername("username");
    $smtp->setpassword("password");
    $swift =& new Swift($smtp);

    //Create the sender from the details we've been given
    $sender =& new Swift_Address($email, $name);
    $message =& new Swift_Message("message title");

    $message->attach(new Swift_Message_Part("Hello"));

    //Try sending the email
    $sent = $swift->send($message, "$myEmail", $sender);
    //Disconnect from SMTP, we're done
    $swift->disconnect();

    if($sent)
    {
        print 'sent';

    }
    else 
    {
        print 'not sent';
    }

}

catch (Exception $e) 
{
    echo"$e";
}

问题是它在我的本地服务器(我的xampp服务器)上工作正常但在文件上传到真实服务器上时无效。

抛出此错误:

'The SMTP connection failed to start [mail.somedomain.net:587]: fsockopen returned Error Number 110 and Error String 'Connection timed out''

请问我该怎么做才能纠正这个错误。感谢您的阅读

2 个答案:

答案 0 :(得分:1)

确保smtp服务器域有效。尝试ping它以确认响应。您也可以尝试跟踪路由以查看是否有任何交换机返回慢响应。

答案 1 :(得分:1)

$smtp =& new Swift_Connection_SMTP("mail.somedomain.net", 587);

是'587'连接的端口号?你有没有尝试过这个而不是正常的25端口?端口587(提交)通常用于本地用户发送邮件。一旦您在远程Web服务器上运行此脚本,它就不再是“本地”,并且很可能是防火墙(或者邮件服务器没有在外部接口上侦听该端口)。

尝试切换到端口25并查看是否有帮助。

更新

拒绝连接比“连接超时”更好。这至少意味着初始数据包到达某处并被主动拒绝。超时意味着事情在途中的某个地方默默地掉了下来。

只有当php脚本本身超过最大时间时,才会发挥max_execution_time的作用。如果是这种情况,你就不会收到swiftmailer错误,因为脚本会被终止。

您的网络服务器是否正在运行sendmail?将连接主机更改为“localhost”,看看是否有帮助。如果您只是想发送电子邮件,那么这应该有效。您可能希望连接到远程SMTP服务器的唯一原因是要正确设置From:标头,并且不能在接收端标记为垃圾邮件。