PHP邮件程序SMTP无法正常工作

时间:2017-05-26 09:28:03

标签: php phpmailer

我已经在XAMPP中配置了php.ini和sendmail.ini来发送电子邮件并且工作正常。现在,当我更改php中的代码以使用SMTP时,它无法工作......它使用相同的主机,相同的smtpsecure,相同的端口,与XAMPP中相同的电子邮件,并且它不起作用...

[sendmail]

smtp_server=smtp.gmail.com
smtp_port=587
error_logfile=error.log
debug_logfile=debug.log
auth_username=testowemailer93@gmail.com
auth_password=1234
force_sender=testowemailer93@gmail.com
php.ini
[mail function]
SMTP=smtp.gmail.com
smtp_port=587
sendmail_from = testowemailer93@gmail.com
sendmail_path = "\"D:\xampp\sendmail\sendmail.exe\" -t"
For Win32 only.
http://php.net/sendmail-from
sendmail_from = testowemailer93@gmail.com

and my php code

<?php
$mail = new PHPMailer;
$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->SMTPDebug = 2;
$mail->Debugoutput = 'html';
$mail->Host = 'smtp.gmail.com';  // Specify main and backup SMTP servers
$mail->Port = 587;
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = 'testowemailer93@gmail.com';                 // SMTP username
$mail->Password = '1234';                           // SMTP password
$mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
$mail->setLanguage('pl', './vendor/phpmailer/phpmailer/language/phpmailer.lang-pl.php');
$mail->setFrom("testowemailer93@gmail.com");
$mail->addAddress('xx.yyy@gmail.com');     // Add a recipient // Name is optional
$mail->IsHTML(true);
$mail->Subject = "Prośba o dostęp demo";
$mail->Body = "<p>Wysłano z formularza kontaktowego na stronie bhp.xyz.pl.</p>
</p>";
if(!$mail->Send()){
    echo "\n"."Mailer Error: " . $mail->ErrorInfo;
}
else{
    echo "Message sent!";
}
?>
  

错误:服务器 - &gt;客户:220 smtp.gmail.com ESMTP f40sm329317edb.7 -   gsmtp客户端 - &gt;服务器:EHLO PhpStorm 2017.1服务器 - &gt;客户:   501-5.5.4 HELO / EHLO论证&#34; PhpStorm 2017.1&#34;无效,关闭   connection.501 5.5.4 https://support.google.com/mail/?p=helo   f40sm329317edb.7 - gsmtp SMTP错误:EHLO命令失败:501-5.5.4   HELO / EHLO论证&#34; PhpStorm 2017.1&#34;无效,关闭连接.501   5.5.4 https://support.google.com/mail/?p=helo f40sm329317edb.7 - gsmtp CLIENT - &gt;服务器:HELO PhpStorm 2017.1服务器 - &gt;客户端:SMTP错误:   HELO命令失败:SMTP注意:检查是否捕获了EOF   已连接SMTP错误:无法连接到SMTP主机。 SMTP连接()   失败。 https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting   邮件程序错误:SMTP连接()失败。   https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

2 个答案:

答案 0 :(得分:1)

这实际上是PHPStorm中的一个错误,我报告了here

PHPMailer 6.0分支中有一个自动解决方法,但您应该可以通过将Hostname属性设置为有效的方法来自行完成,例如:

$mail->Hostname = 'localhost.localdomain';

Hostname属性是HELO / EHLO命令中提供给Host属性中服务器的名称 - 不要让两者混淆!

答案 1 :(得分:0)

我想出来了......在这样的事情上花了太多时间.. 我在XAMPP中添加了虚拟主机:

<VirtualHost *:80>
 ServerAdmin webmaster@localhost

 DocumentRoot "D:/xampp/htdocs/BHP"
 ServerName bhpsmart.com
 SSLEngine on
 SSLCertificateFile "conf/ssl.crt/server.crt"
 SSLCertificateKeyFile "conf/ssl.key/server.key"
 <Directory "D:/xampp/htdocs/BHP">
  Options All
  AllowOverride All
  Order allow,deny
  Allow from all
  Require all granted
 </Directory>

 ErrorLog logs/platforma-error.log
 LogLevel info
 CustomLog logs/platforma.log combined
</VirtualHost>

他们的关键行是:

SSLEngine on
SSLCertificateFile "conf/ssl.crt/server.crt"
SSLCertificateKeyFile "conf/ssl.key/server.key"

现在它正常工作。