这是我第一次用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