2015-05-30 272 views
2

這裏是從本地主機發送電子郵件的代碼,因爲我從網上引用了很多。郵件錯誤:SMTP連接()在PHP郵件程序中失敗(https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting)

HTML表單:

<form method="post" action="email.php"> 
    Email: <input name="email" id="email" type="text" /><br /> 

    Message:<br /> 
    <textarea name="message" id="message" rows="15" cols="40"></textarea><br /> 

    <input type="submit" value="Submit" /> 
</form> 

email.php:

<?php 

// $email and $message are the data that is being 
// posted to this page from our html contact form 
$email = $_REQUEST['email'] ; 
$message = $_REQUEST['message'] ; 

require_once('class.phpmailer.php'); 
require 'PHPMailerAutoload.php'; 
require 'class.smtp.php'; 

$mail = new PHPMailer(); 
$body='hellooooo'; 
$mail->IsSMTP(); 

$mail->Host = "ssl://smtp.gmail.com"; // specify main and backup server 

$mail->SMTPAuth = true; // turn on SMTP authentication 

$mail->Username = "[email protected]"; // SMTP username 
$mail->Password = "zzz"; // SMTP password 
$mailer->SMTPSecure = 'ssl'; 
$mailer->Port = 465;//587; 
$mail->AddAddress("xxx", "xx"); 
$mail->SetFrom('[email protected]','xxxx'); 
$mail->WordWrap = 50; 

$mail->IsHTML(true); 

$mail->Subject = "You have received feedback from your website!"; 

$mail->MsgHTML($body); 

if(!$mail->Send()) 
{ 
echo "Message could not be sent. <p>"; 
echo "Mailer Error: " . $mail->ErrorInfo; 
exit; 
} 

echo "Message has been sent"; 
?> 

所以,當我運行我的代碼,它顯示了這樣的錯誤,

Message could not be sent.

Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

而且我在這個刪除分號從以下文件中選擇;extension=php_openssl.dll,然後重新啓動xampp。

c/xampp/apache/bin/php.ini and c/xampp/php/php.ini 

仍然停留同樣的錯誤..

注:我新來的PHP,但我想知道具體的這一個,解決問題。我提到了類似的問題,但它並沒有幫助我,

任何人都可以幫我解決這個問題嗎?

謝謝,

+0

感謝您的編輯,我忘了刪除密碼.. – pcs

+1

永遠不要暴露您的用戶名和密碼!它需要第二個劫持你的帳戶伴侶。 –

+0

@Maverick:我已經做了,你上面的鏈接解釋了什麼..仍然我有同樣的錯誤.. – pcs

回答

1

它看起來像連接到您的身份驗證失敗的憑據。我經常從本地發送郵件,我發現它比使用Gmail更容易使用另一個SMTP,比如mandrillapp,免費直到12,000封郵件。在你的代碼中有很多我不明白的東西,所以我會分享我的。

<?php 

require 'PHPMailer-master/PHPMailerAutoload.php'; 

$mail = new PHPMailer; 
//$mail->SMTPDebug = 3;        // Enable verbose debug output 

$mail->isSMTP();          // Set mailer to use SMTP 
$mail->Host = 'smtp.mandrillapp.com'; // Specify main and backup SMTP servers 
$mail->SMTPAuth = true;        // Enable SMTP authentication 
$mail->Username = '[email protected]';     // SMTP username 
$mail->Password = 'mandrilapp_will_give_you_a_password';       // SMTP password 
$mail->Port = 587;         // TCP port to connect to 

$mail->From = '[email protected]'; 
$mail->FromName = 'Test phpmailer'; 
$mail->addAddress('[email protected]');    // Name is optional 

$mail->isHTML(true);         // Set email format to HTML 

$mail->Subject = 'Here is the subject'; 
$mail->Body = 'This is the HTML message body <b>in bold!</b>'; 
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; 

if(!$mail->send()) { 
    echo 'Message could not be sent.'; 
    echo 'Mailer Error: ' . $mail->ErrorInfo; 
} else { 
    echo 'Message has been sent'; 
} 

一定有PHPMailer的主文件夾(你可以從here下載)在同一水平作爲你的PHP文件。這是我如何鏈接phpmailer。希望它有幫助,如果您有任何問題,請問我!

+1

您需要的唯一文件是這一個:PHPMailerAutoload.php。該文件將自動加載您需要的每個文件。 –

+0

您是否註冊了mandrillapp並根據您的賬戶提供了您的憑據(用戶名,密碼)?不要忘記激活一個API密鑰,這是您的密碼。我的代碼中唯一改變的地方是用戶名,密碼和addAddress給你的收件人(用你自己的電子郵件測試) –

+0

當然,這是因爲我從來沒有使用gmail smtp工作。我和你有同樣的問題,所以我嘗試了Mandrillapp,這是免費的,直到你發送12,000封郵件並給你一個smtp,用戶名和密碼。它很適合在本地測試郵件。 –