HostGator不会通过PHP SwiftMail API发送邮件

时间:2011-08-24 04:56:31

标签: php email swiftmailer

为什么SwiftMail API for PHP无法在HostGator上运行?他们的技术支持说使用mail()命令,并且到端口25的套接字连接不会像他们的共享主机方案那样工作。我抱怨说,当你谷歌如何发送邮件附件(),人们告诉你使用SwiftMail。 我需要通过电子邮件发送文件附件。

我的代码在A2Hosting上运行得很好,但不是HostGator。在API中,我将在端口25上发送到localhost,不使用身份验证,不使用SSL,并使用此主机上存在的有效电子邮件地址(假装为example.com) - noreply@example.com。 / p>

我得到的错误是:

Warning: fsockopen() [function.fsockopen]: unable to connect to localhost:25 (Connection refused) in /home/user/public_html/mywebsite/addons/swiftmail-4.0.3/lib/classes/Swift/Transport/StreamBuffer.php on line 243

Fatal error: Uncaught exception 'Swift_TransportException' with message 'Connection could not be established with host localhost [Connection refused #111]' in /home/user/public_html/mywebsite/addons/swiftmail-4.0.3/lib/classes/Swift/Transport/StreamBuffer.php:245 Stack trace: #0 /home/user/public_html/mywebsite/addons/swiftmail-4.0.3/lib/classes/Swift/Transport/StreamBuffer.php(80): Swift_Transport_StreamBuffer->_establishSocketConnection() #1 /home/user/public_html/mywebsite/addons/swiftmail-4.0.3/lib/classes/Swift/Transport/AbstractSmtpTransport.php(111): Swift_Transport_StreamBuffer->initialize(Array) #2 /home/user/public_html/mywebsite/addons/swiftmail-4.0.3/lib/classes/Swift/Mailer.php(84): Swift_Transport_AbstractSmtpTransport->start() #3 /home/user/public_html/mywebsite/mailer.php(34): Swift_Mailer->send(Object(Swift_Message)) #4 /home/user/public_html/mywebsite/mailer.php(146): Mailer->sendMail() #5 {main} thrown in /home/user/public_html/mywebsite/addons/swiftmail-4.0.3/lib/classes/Swift/Transport/StreamBuffer.php on line 245

如果您已经使用SwiftMail API在HostGator上工作,请分享您的所作所为。

6 个答案:

答案 0 :(得分:13)

您可以尝试使用Swift_MailTransport代替Swift_SmtpTransport,它将在幕后使用原生mail()来电。

我没有使用HostGator的经验,但如果他们的支持说系统允许通过mail()发送,那么这应该可以正常工作。

答案 1 :(得分:4)

我做了一些测试,最后找到了答案。它确实有效,但这是如何:

  • 使用端口25,而不是替代端口
  • 不使用SSL / TLS
  • 使用用户/通行证不是必需的,但可以使用或不使用
  • 不要使用'localhost' - 使用存在邮件帐户的域名,无论是根域,插件域,子域还是托管域
  • 确保发送电子邮件帐户存在,并且存在于您想要的域上下文中。例如,我可能将example1.com作为根域,将example2.com作为我项目的插件域。因此,在我的项目代码中,我将在cPanel中创建一个noreply@example2.com帐户,然后将其用作SwiftMailer API的发送电子邮件地址。

答案 2 :(得分:2)

如果您尝试发送到CPanel中的域,即使您在其他地方托管了电子邮件,他们的邮件服务器也会尝试将邮件中继到本地邮箱,而不是查询域的MX记录

修复方法是告诉他们从exim邮件服务器配置文件中的localhost选项中删除您尝试发送电子邮件的域。

答案 3 :(得分:1)

我正在使用SwiftMail for PHP和hostgator,Swift_SmtpTransport通过ssl连接到gmail。起初我得到了“连接无法与主机smtp.gmail.com建立[连接拒绝#111]”。使用Swift_MailTransport确实有效,但我不喜欢这个解决方案,因为它会使用hostgator的邮件服务器;我想使用谷歌应用程序电子邮件帐户发送电子邮件。

我不得不要求HostGator的技术支持将SMTP防火墙中的cPanel用户列入白名单,然后一切运行良好。

答案 4 :(得分:0)

  

使用此主机上存在的有效电子邮件地址(假装它是   example.com) - noreply@example.com。

你确定邮件服务器在同一个盒子里吗?你是否试图挖掘example.com的mx记录

答案 5 :(得分:0)

尝试使用亚马逊的简单邮件服务发送电子邮件时出现此错误。最终它证明了我使用AmazonSES的凭据是错误的。一旦我理解了这一切,我就会解决所有问题。

顺便说一句,我使用的是PHP的Swift_SmtpTransport