1

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

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

我查看了 Zend_Mail 和 Pear Net::SMTP,它们似乎只允许 SMTP 身份验证,它们需要发送电子邮件。

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

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

4

2 回答 2

1

不知道你想如何处理这个。SMTP AUTH 只是一个由邮件客户端发送到邮件服务器的命令,邮件服务器根据某种数据库对客户端进行身份验证。我猜你的想法是以某种方式拥有一个“假”的 php 邮件客户端,它可以通过身份验证动作,然后返回 AUTH 命令是否成功。

我可以想到可能的工作方式,但我不知道维护类,我怀疑你会找到一个,因为它有点“hacky”的做事方式。

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

于 2012-06-28T16:21:21.510 回答
1

有用于 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;
于 2012-07-02T21:31:52.190 回答