使用套接字和STMP TLS的意外服务器响应


Unexpected server response using sockets and STMP TLS

这是我第一次用SMTP做任何事情,所以如果我在这里做错了什么,请耐心等待:)通常,我只使用PHPMailer,但在这种情况下这不是一个选项

我正在尝试向邮件列表中的人发送电子邮件。我正在使用fsockopen,我需要使用TLS连接来完成此操作。

我就是这么做的:

  • $conn=fsockopen()//我的详细信息在那里,它连接起来了
  • HELO myhost.com(fwrite)
  • STARTTLS(写入)
  • stream_socket_enable_crypto($conn,true,stream_crypto_METHOD_TLS_CLIENT)
  • HELO myhost.com(fwrite)
  • AUTH LOGIN(fwrite)
  • base64_编码用户名(fwrite)
  • base64_编码密码(fwrite)
  • 邮件发件人:(转发)
  • RCPT到:;(fwrite)
  • DATA(转发)
  • 包含我所有标题的字符串(fwrite)
  • fclose($conn)

这就是出现问题的地方

使用加密连接后,我似乎无法成功读取服务器响应。例如,当我在身份验证后尝试使用fgets($conn,1024)读取响应时,需要花费很长时间,然后最终我将得到一个高度加密的代码,无法查找响应"235"(以确保我的身份验证成功)。

然后当我写邮件时,我的回复会是这样的:

.0.0 SMTP server ready

虽然我想我会想要这样的东西:

250 2.0.0

出了问题,但我不知道为什么。我希望你们所有的专家都能帮助我解决这个问题:)

提前感谢!

解决了它

以防其他人遇到这个问题。

此订单有效

  • $conn=fsockopen()//我的详细信息在那里,它连接起来了
  • EHLO myhost.com(fwrite)
  • STARTTLS(写入)
  • stream_socket_enable_crypto($conn,true,stream_crypto_METHOD_TLS_CLIENT)
  • EHLO myhost.com(fwrite)
  • AUTH LOGIN(fwrite)
  • base64_编码用户名(fwrite)
  • base64_编码密码(fwrite)
  • 邮件发件人:(转发)
  • RCPT到:;(fwrite)
  • DATA(转发)
  • 包含我所有标题的字符串(fwrite)
  • fclose($conn)

在每次通话之间,我添加了以下内容:

stream_set_timeout($conn, 300);
set_time_limit(310);

突然间,我收到了来自服务器的预期回复,邮件成功发送。

解决了IT

以防其他人遇到这个问题。

此订单有效

  • $conn=fsockopen()//我的详细信息在那里,它连接起来了
  • EHLO myhost.com(fwrite)
  • STARTTLS(写入)
  • stream_socket_enable_crypto($conn,true,stream_crypto_METHOD_TLS_CLIENT)
  • EHLO myhost.com(fwrite)
  • AUTH LOGIN(fwrite)
  • base64_编码用户名(fwrite)
  • base64_编码密码(fwrite)
  • 邮件发件人:(转发)
  • RCPT到:;(fwrite)
  • DATA(转发)
  • 包含我所有标题的字符串(fwrite)
  • fclose($conn)

在每次通话之间,我添加了以下内容:

stream_set_timeout($conn, 300);
set_time_limit(310);

突然间,我收到了来自服务器的预期回复,邮件成功发送。

–entiendoNull