维护良好的PHP SMTP身份验证类,无需发送电子邮件(登录测试)


Well maintained PHP SMTP auth class, without sending an e-mail (Login test)?

我想实现一种登录的替代方法(用于@mother_company.xyz类型的电子邮件)并强加它。

原因是让电子邮件提供商(在本例中为 Exchange)处理密码恢复、密码存储以防止密码被盗,并让邮件服务器管理员负责传递帐户(此外,邮件地址所有者验证被消除,帐户可以在首次登录时自动创建)。

我看过Zend_Mail和梨网::SMTP他们似乎只允许SMTP身份验证,他们需要发送电子邮件。

是否存在(最好是独立的,最好是维护的)PHP SMTP类,它可以执行所有SMTP身份验证类型+所有加密方法(SSL,TLS,StartTLS等),并且不需要为所呈现的目的进行修改(它还必须返回有用的代码来确定登录是成功还是失败)

如果这样的类可以通过试验(仅基于域名)自动配置 SMTP 连接数据,然后返回缓存/存储的配置,那就太好了。

有适用于 php5 的 Swiftmailer 邮件工具。它由几个组件组成。其中一个组件是Swift_SmtpTransport。它扩展了高度可配置的类Swift_Transport_EsmtpTransport。 您可以使用此类的 start() 方法来检查 AUTH 请求是否成功

require_once("lib/swift_required.php");
$swiftMailerSMTP=Swift_SmtpTransport::newInstance("smtp.gmail.com", 587, "tls")
    ->setUsername("john.doe@domain.tld")
    ->setPassword("iforgotmypassword")
;
//throws Swift_TransportException on auth failure
$swiftMailerSMTP->start();
//end the connection, just in case the current script is going to run for a long while
$swiftMailerSMTP->stop();
$swiftMailerSMTP=null;

不确定您要如何处理此问题。SMTP AUTH 只是邮件客户端发送到邮件服务器的命令,该服务器根据某种数据库对客户端进行身份验证。我猜你的想法是以某种方式拥有一个"假"php 邮件客户端,它可以完成身份验证的动作,然后返回 AUTH 命令是否成功。

我可以想到可能起作用的方法,但我不知道维护类,我怀疑你会找到一个,因为它有点"黑客"的做事方式。

如果它是您的身份验证所针对的交换,为什么不使用LDAP身份验证。它相当容易做到,php LDAP模块为您维护,并正确实现身份验证(这总是一件好事)