【问题标题】:Codeigniter Email class connect to smtp server from behind a proxyCodeigniter 电子邮件类从代理后面连接到 smtp 服务器
【发布时间】:2013-08-21 14:30:29
【问题描述】:

我使用Personalized Mailer spark 为应用程序创建了一个简单的邮件列表系统。

此 spark 使用 codeigniter 电子邮件类连接到 smtp 服务器并发送邮件。

问题是我正在使用的服务器使用代理连接到互联网,所以当我测试邮件列表时它没有工作,尽管我在本地服务器上测试它时它工作。

有没有办法修改 codeigniter 电子邮件类以支持使用代理连接到 smtp 服务器?

【问题讨论】:

  • 您是收到错误消息还是邮件没有发送?
  • 电子邮件只是没有发送,因为服务器使用代理连接到互联网,因此如果没有先连接到代理服务器,代码将无法连接到 smtp 服务器。
  • 关于代理的更多细节?
  • 您需要什么样的信息?我知道它是http代理
  • 经过一些调试后,我收到了这个错误消息:Failed to send AUTH LOGIN command 尽管 smtp 设置是正确的并且在 C# 应用程序上测试过

标签: php codeigniter email proxy smtp


【解决方案1】:

好的,要发送电子邮件,您的服务器必须通过fsockopen 建立一个隧道,然后使用该隧道连接到 SMTP。我无法具体告诉您必须在 codeigniter 类中进行哪些更改,但我知道一个可以通过 HTTP PROXY 发送电子邮件的类

http://www.phpclasses.org/package/14-PHP-Sends-e-mail-messages-via-SMTP-protocol.html

下面是一个测试脚本,其中有一个配置代理的选项。

http://www.phpclasses.org/browse/file/31.html

如果您想知道这是如何完成的并且不想在 codeigniter 类中填充相同的逻辑,您可能必须首先通读文件 smtp.php 的行 884 - 953

在我看来,与其把这个类的代码模仿到codeigniter邮件类上,你应该改用这个类,并改变Personalized Mailer代码(这将是相对较少的努力)来使用这个类。

【讨论】:

  • 是否支持带用户名和密码的代理认证?
  • @MBAsfoor 不,它本身不支持身份验证,但您可以修改fsockopen 代码以放置基本 HTTP 授权(如果您的代理服务器设计为根据 RFC 2617 具有基本 HTTP AUTHORIZATION ,例如以username:password@www.example.com/path 的形式,其中example.com 是您的代理),如下所示:codeans.blogspot.com/2008/04/…
  • 我认为它需要大量修改,因为它不支持 html 电子邮件或附件,但我现在会使用它。
  • @M.B.Asfoor 无需手动修改,因为您可以将此类 phpclasses.org/package/… 与上述 smtp 类一起用于 html 电子邮件和附件。
  • 好的,我想我现在会接受这个作为解决方案,谢谢你的帮助。
猜你喜欢
  • 2012-06-04
  • 1970-01-01
  • 2011-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多