如果您的托管服务提供商不允许 SMTP 中继,如何发送电子邮件?
Posted
技术标签:
【中文标题】如果您的托管服务提供商不允许 SMTP 中继,如何发送电子邮件?【英文标题】:How to send emails if your hosting provider does not allow SMTP relay? 【发布时间】:2012-10-20 01:19:32 【问题描述】:我有一个使用 CodeIgniter 构建并由共享托管服务提供商托管的应用程序。
我的 MX 记录指向 Gmail 服务器,我的应用可以使用 Gmail 和标准 CodeIgniter 电子邮件方法发送电子邮件。
现在我想使用 SendGrid 或 Amazon SES 发送一些事务性邮件。但这不起作用,显然原因是我的托管服务提供商不允许 SMTP 中继。
我正在考虑使用 SendGrid API 和 cURL,但我不确定它们与我熟悉的 CI 方法的配合效果如何。
最好我不想更改指向为我们公司处理常规邮件的 Gmail 的 MX 记录。
考虑到这些限制,是否可以使用 SendGrid 或 Amazon SES 发送电子邮件?
【问题讨论】:
【参考方案1】:您应该使用 SendGrid Web API 来发送电子邮件。如果您的 ISP 正在阻止电子邮件,那么您最好的选择是切换到 HTTP。这是一个非常简单的开关,因为它采用所有相同的参数。查看文档了解更多信息:
http://docs.sendgrid.com/documentation/api/web-api/mail/#send
我怀疑它是否适用于 CI 电子邮件库,但没有理由不能只使用 SendGrid 库:
https://github.com/sendgrid/sendgrid-php
此外,这个CodeIgniter library 通过 HTTP 发送 SendGrid 电子邮件。可能值得一试。
【讨论】:
嗨 Swift,非常感谢您的指点。我会检查出来的。【参考方案2】:您可以在 SendGrid 中使用备用端口:
许多托管服务提供商和 ISP 作为默认做法阻止端口 25。尝试连接到 smtp.sendgrid.net 时,请记住端口 25、2525、587 和 465 都可以使用。您可以在端口 25、2525 和 587 上通过未加密或 TLS 连接。您可以在端口 465 上通过 SSL 连接。
-- http://docs.sendgrid.com/documentation/get-started/smtp-ports/
【讨论】:
您好 AKX,感谢您的回复。我已经用未加密的 SSL 和 TLS 尝试了你提到的所有端口——它不适用于 SendGrid 或 SES。两者都给出了相同的错误。 那是一个糟糕的服务提供商。 :( 我想你已经和他们的客户服务讨论过,看看你是否可以改变 SMTP 中继的东西?如果做不到这一点,我想你将不得不使用 HTTP API(如果它们足以满足你的工作) . 是的,我已经和他们的客服谈过了,但没有任何结果。好的,我可能会尝试 API。以上是关于如果您的托管服务提供商不允许 SMTP 中继,如何发送电子邮件?的主要内容,如果未能解决你的问题,请参考以下文章