0

我有一个较旧的 PHP 系统,它使用 SMTP 命令发送邮件。我们正在切换到 gmail,我需要进行身份验证。我可以连接到服务器。不幸的是,我收到了 530-5.5.1 Authentication Required。当我在我的 PHP 代码中发送 MAIL FROM 命令时,请参阅“了解更多信息。

if (fputs($this->Socket,  "MAIL FROM: \"admin\" <admin@yourdomain.com>\r\n")<0){ 

我找不到添加身份验证的明确示例。我在http://www.faqs.org/rfcs/rfc2554.html读到我必须将 AUTH= 添加到我的 MAIL FROM 命令中。我无法解释要放入 AUTH= 的内容

Examples:
   C: MAIL FROM:<e=mc2@example.com> AUTH=e+3Dmc2@example.com
   S: 250 OK

你知道认证的格式吗?

4

1 回答 1

1

有几种方法可以进行 SMTP 身份验证,但其中之一是使用 SMTPAUTH LOGIN命令。会议记录如下所示:

host: 220 banner_here
client: EHLO StephaniePC
host: 250-name.of.host hello [clientip], pleased to meet you
host: 250-AUTH LOGIN PLAIN
host: 250 OK
client: AUTH LOGIN
host: 334 VXNlcm5hbWU6
client: am9lc21pdGg=
host: 334 UGFzc3dvcmQ6
client: bGV0bWVpbg0K
host: 235 2.7.0 Authentication successful
client: MAIL FROM: <sender@senderdomain.tld>
host: 250 2.1.0 Ok
client: RCPT TO: <recipient@recipientdomain.tld>
host: 250 2.1.0 Ok
client: DATA
host: 354 End data with <CR><LF>.<CR><LF>
....

您在上面看到的编码字符串是 base64 编码的。如果您有一个能够记录日志的邮件客户端,您可以尝试通过 gmail 发送消息,会话的脚本应该类似于上面的脚本。

仅供参考,您可能不想自己编写代码来进行 SMTP 身份验证,而是使用phpmailer. phpmailer可以做SMTP认证,非常轻量级,好用。

于 2014-03-26T08:28:45.243 回答