我已经在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
答案 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"
现在它正常工作。