2017-05-26 54 views
0

我已經在XAMPP中配置了php.ini和sendmail.ini來發送電子郵件,並且其工作正常。現在,當我在php更改代碼使用SMTP它不工作...它使用相同的主機,相同smtpsecure,同一端口,相同的電子郵件在XAMPP和其不工作...PHP郵件程序SMTP不起作用

[sendmail] 

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

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 = '[email protected]';     // 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("[email protected]"); 
$mail->addAddress('[email protected]');  // 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.smarteducation.pl.</p> 
</p>"; 
if(!$mail->Send()){ 
    echo "\n"."Mailer Error: " . $mail->ErrorInfo; 
} 
else{ 
    echo "Message sent!"; 
} 
?> 

Errors: SERVER -> CLIENT: 220 smtp.gmail.com ESMTP f40sm329317edb.7 - gsmtp CLIENT -> SERVER: EHLO PhpStorm 2017.1 SERVER -> CLIENT: 501-5.5.4 HELO/EHLO argument "PhpStorm 2017.1" invalid, closing connection.501 5.5.4 https://support.google.com/mail/?p=helo f40sm329317edb.7 - gsmtp SMTP ERROR: EHLO command failed: 501-5.5.4 HELO/EHLO argument "PhpStorm 2017.1" invalid, closing connection.501 5.5.4 https://support.google.com/mail/?p=helo f40sm329317edb.7 - gsmtp CLIENT -> SERVER: HELO PhpStorm 2017.1 SERVER -> CLIENT: SMTP ERROR: HELO command failed: SMTP NOTICE: EOF caught while checking if connected SMTP Error: Could not connect to SMTP host. SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

回答

0

我想通了這一點......太多時間在這樣的花.. 我添加虛擬主機在XAMPP:

<VirtualHost *:80> 
ServerAdmin [email protected] 

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" 

現在它的工作正常。

1

這實際上是在PHPStorm了一個問題,我報here

有一個在PHPMailer的6.0分支自動解決辦法,但你應該能夠通過Hostname屬性設置爲一些有效的做自己,例如:

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

Hostname屬性是提出的名稱在HELO/EHLO命令中的Host屬性中的服務器 - 不要讓這兩個困惑!