Php SMTP服务器响应:530 5.7.0必须首先发出STARTTLS命令

Php SMTP服务器响应:530 5.7.0必须首先发出STARTTLS命令,php,smtp,Php,Smtp,SMTP服务器响应:530 5.7.0必须首先发出STARTTLS命令 我在php脚本文件中使用mail()函数时收到此错误消息 我使用的是gmail SMTP服务器,gmail使用的是安全SSL的STARTTLS 我已经在contact.php文件中使用了这些命令 ini_set("SMTP","smtp.gmail.com"); ini_set("sendmail_from","<email-address>@gmail.com>"); ini_集(“SMTP”、“SMT

SMTP服务器响应:530 5.7.0必须首先发出STARTTLS命令

我在php脚本文件中使用mail()函数时收到此错误消息

我使用的是gmail SMTP服务器,gmail使用的是安全SSL的STARTTLS 我已经在contact.php文件中使用了这些命令

ini_set("SMTP","smtp.gmail.com");
ini_set("sendmail_from","<email-address>@gmail.com>");
ini_集(“SMTP”、“SMTP.gmail.com”);
ini_set(“sendmail_from”,“@gmail.com>”;
那么,我可以使用什么命令来启用STARTTLS或在php、ini文件中进行配置呢?

我知道该库可以处理这种SMTP事务


另外,一个带有sendmail SSL库的假sendmail也可以完成这项工作。

首先,确保您的PHP安装具有SSL支持(在
phpinfo()
的输出中查找“openssl”部分)

您可以在PHP.ini中设置以下设置:

ini_set("SMTP","ssl://smtp.gmail.com");
ini_set("smtp_port","465");

就我而言,斯威夫特·梅勒也帮不上忙。我在这里找到了一个解决方案:-因此,在EHLO命令之后,需要发送STARTTLS命令,使用
stream\u socket\u enable\u crypto($connection,true,stream\u crypto\u METHOD\u TLS\u CLIENT)启用加密和EHLO命令。只有这样,我才能用我“顽固”的SMTP服务器发送电子邮件。

开箱即用的Swift Mailer无法执行STARTTLS,但是有些


我发现修补它有点麻烦(可能是走错了方向),所以我把它压缩到这里准备下载:

我对以下内容有错误的响应:

fputs($connection, 'STARTTLS'.$newLine);
结果发现我使用了错误的连接变量,所以我只需将其更改为:

fputs($smtpConnect, 'STARTTLS'.$newLine);
如果使用TLS,请记住将直升机放在前后:

fputs($smtpConnect, 'HELO '.$localhost . $newLine);
$response = fgets($smtpConnect, 515);
if($secure == 'tls')
{
    fputs($smtpConnect, 'STARTTLS'.$newLine);
    $response = fgets($smtpConnect, 515);
stream_socket_enable_crypto($smtpConnect, true, STREAM_CRYPTO_METHOD_TLS_CLIENT);

// Say hello again!
    fputs($smtpConnect, 'HELO '.$localhost . $newLine);
    $response = fgets($smtpConnect, 515);
}
问题解决了

我编辑了文件
/etc/postfix/master.cf

并评论

-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
并将线路从

-o smtpd_tls_security_level=encrypt 

工作得很好

大宗报价

然后我修改了php.ini文件以使用它(注释掉了其他行):
[邮件功能]
; 仅适用于Win32。
; SMTP=SMTP.gmail.com
; smtp_端口=25
; 仅适用于Win32。
; sendmail_from=@gmail.com
; 仅适用于Unix。您也可以提供参数(默认值:“sendmail-t-i”)。
sendmail\u path=“C:\xampp\sendmail\sendmail.exe-t”
忽略“仅适用于Unix”注释,因为此版本的sendmail适用于Windows。
然后,您必须在安装sendmail的目录中配置“sendmail.ini”文件:
[发送邮件]
smtp_server=smtp.gmail.com
smtp_端口=25
error\u logfile=error.log
debug_logfile=debug.log
验证用户名=
验证密码=
force_sender=@gmail.com
http://byitcurious.blogspot.com.br/2009/04/solving-must-issue-starttls-command.html
>大宗报价

我将分享我的方法,在实现以下内容后,它对我起到了作用:

fputs($connection, 'STARTTLS'.$newLine);
打开Php.ini文件并通过从中获取ref来填充相应字段中的所有值

删除[mail function]语句中的注释,这些注释是smtp服务器的指令,并与它们的值相匹配

另外,sendmail SMTP服务器是一个伪服务器。除了文本终端,它什么都没有(试着在上面写任何东西。:P)。 它将使用gmail s、tp发送邮件。 因此,通过匹配Gmail SMTP设置来正确配置它:

smtp.gmail.com
Port: 587

对于Windows,我能够通过在SMTP虚拟服务器上启用TLS进行安全通信使其正常工作。没有证书的SMTP虚拟服务器上将无法使用TLS。此链接将提供所需的步骤


您知道其他任何免费邮件服务器网站吗??其中不需要ssl。或者,使用
tls://smtp.gmail.com
端口为587。无法连接到位于“”的邮件服务器ssl://smtp.gmail.com端口465,版本说明:从SwiftMailer v5开始,它支持开箱即用的STARTTLS。创建传输实例时添加
setEncrpyion('tls')
setEncryption('ssl')
。阅读请提供一个解释,你到底在这里做什么,我也不确定这会解决OP的问题,因为他可能没有访问您在这里编辑的文件此配置允许Postfix发送非加密电子邮件,即你通过smtp进行身份验证,但发送不可靠的消息。仅链接的答案并不理想。你应该引用和评论链接的相关部分,使之成为一个独立的答案
smtp.gmail.com
Port: 587