SMTP服务器响应:530 5.7.0必须先发出STARTTLS命令
当我在php脚本文件中使用mail()函数时,我收到此错误消息...
我使用的是使用STARTTLS的gmail SMTP服务器和gmail,它是安全的SSL以防止垃圾邮件 我已经在我的contact.php文件中使用这些命令
ini_set("SMTP","smtp.gmail.com");
ini_set("sendmail_from","<email-address>@gmail.com>");
那么我可以使用什么命令启用STARTTLS或在php,ini文件中配置?
答案 0 :(得分:15)
首先,确保PHP安装具有SSL支持(在phpinfo()
的输出中查找“openssl”部分)。
您可以在PHP.ini中设置以下设置:
ini_set("SMTP","ssl://smtp.gmail.com");
ini_set("smtp_port","465");
答案 1 :(得分:0)
我知道PHPMailer库可以处理这种SMTP事务。
此外,使用sendmail-SSL库的假sendmail应该可以胜任。
答案 2 :(得分:0)
就我而言,Swift Mailer也无济于事。我在这里找到了一个解决方案:http://forum.powweb.com/showthread.php?t=73406 - 所以在EHLO命令之后,需要发送STARTTLS命令,使用stream_socket_enable_crypto( $connection, true, STREAM_CRYPTO_METHOD_TLS_CLIENT );
和EHLO命令启用加密。只有这个允许我用我的“顽固”SMTP服务器发送电子邮件。
答案 3 :(得分:0)
开箱即用的Swift邮件程序无法执行STARTTLS,但有些nice guys have written a patch for it。
我发现修补它是一件苦差事(可能是错误的方式),所以把它压缩起来准备下载:Swift Mailer with STARTTLS
答案 4 :(得分:0)
我对以下内容的回复是错误的:
fputs($connection, 'STARTTLS'.$newLine);
结果我使用了错误的连接变量,因此我只需将其更改为:
fputs($smtpConnect, 'STARTTLS'.$newLine);
如果使用TLS,请记得在之前和之后放置HELO:
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);
}
答案 5 :(得分:0)
我将分享我的方式,并在实施以下后对我有用:
打开Php.ini文件,并从Gmail SMTP Settings
获取参考,填写相应字段中的所有值从[mail function]语句中删除注释,这些语句是对smtp Server的说明并匹配它们的值。
sendmail SMTP服务器也是假服务器。在文本终端旁边没有任何东西(尝试在上面写任何东西。:P)。 它将使用gmail s,tp发送邮件。 因此,请通过匹配Gmail SMTP设置正确配置它:
smtp.gmail.com
Port: 587
答案 6 :(得分:-1)
解决了问题,
我编辑了文件/etc/postfix/master.cf
并评论
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
并从
更改了这一行-o smtpd_tls_security_level=encrypt
到
-o smtpd_tls_security_level=may
并且工作得很好
答案 7 :(得分:-1)
块引用
I then modified the php.ini file to use it (commented out the other lines):
[mail function]
; For Win32 only.
; SMTP = smtp.gmail.com
; smtp_port = 25
; For Win32 only.
; sendmail_from = <e-mail username>@gmail.com
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
sendmail_path = "C:\xampp\sendmail\sendmail.exe -t"
Ignore the "For Unix only" comment, as this version of sendmail works for Windows.
You then have to configure the "sendmail.ini" file in the directory where sendmail was installed:
[sendmail]
smtp_server=smtp.gmail.com
smtp_port=25
error_logfile=error.log
debug_logfile=debug.log
auth_username=<username>
auth_password=<password>
force_sender=<e-mail username>@gmail.com
http://byitcurious.blogspot.com.br/2009/04/solving-must-issue-starttls-command.html
> Blockquote
答案 8 :(得分:-2)
对于Windows,我能够通过启用TLS在SMTP虚拟服务器上进行安全通信来实现它。没有证书的SMTP虚拟服务器上将不提供TLS。此链接将提供所需的步骤。