2013-10-10 172 views
6

我對PHP完全陌生,我想用PHP發送郵件。我有一個聯繫我們的表格,它會接受與我聯繫的人的電子郵件,因此郵件將發送給我。我正在使用來自https://github.com/PHPMailer/PHPMailer/tree/master的PHPMailer庫,以下是我正在使用的代碼片段。PHP連接()PHPMailer中的失敗錯誤

<?php 
require("class.phpmailer.php"); 
$mail = new PHPMailer(); 
$mail->IsSMTP(); 

$mail->SMTPSecure = 'tls'; 

$mail->Host  = "resolver1.opendns.com"; // this SMTP server of my machine 
//$mail->Host  = "208.67.222.222";//ip ; which one to use the resolver1.opendns.com or 208.67.222.222 ??? 

$mail->From  = "[email protected];//email id of the person 

$mail->AddAddress("[email protected]");//my email id 

$mail->Subject = "First PHPMailer Message"; 
$mail->Body  = "Hi! \n\n This is my first e-mail sent through PHPMailer."; 
$mail->WordWrap = 50; 

if(!$mail->Send()) 
{ 
    echo 'Message was not sent.'; 
    echo 'Mailer error: ' . $mail->ErrorInfo; 
} 
else 
{ 
    echo 'Message has been sent.'; 
} 
?> 

我收到錯誤「消息未發送.Mailer錯誤:SMTP連接()失敗。」 我沒有得到什麼問題..? $ mail-> Host =「」;請評論這代表什麼?

+0

如果在你的網絡接口的IPv6地址,那麼請刪除它。 –

+0

我不認爲resolver1.opendns.com會接受你的電子郵件。 –

+0

我必須添加'$ mail-> Port = $ SmtpPort;'才能工作。它在開發服務器上工作,但在此之前不在生產環境中。 – minipif

回答

0

你應該檢查resolver1.opendns.com的tcp端口25,它表明是阻止或不啓動stmpd,如sendmail或某些MTA。

嘗試 的telnet resolver1.opendns.com 25

,你會發現TCP端口25未打開。

23

添加$mail->SMTPDebug = 1;並嘗試調試該問題。

+0

對我來說,在我的RHEL系統中,當我配置Postfix但是沒有使用替代方法將其切換到默認MTA時,出現此錯誤。 – im3r3k

1

也許這是你的配置問題。 PHPMailer的配置

例子是這樣的:

<?php 
require 'class.phpmailer.php'; 

$mail = new PHPMailer; 

$mail->isSMTP();          // Set mailer to use SMTP 
$mail->Host = 'smtp1.example.com;smtp2.example.com'; // Specify main and backup server 
$mail->SMTPAuth = true;        // Enable SMTP authentication 
$mail->Username = 'jswan';       // SMTP username 
$mail->Password = 'secret';       // SMTP password 
$mail->SMTPSecure = 'tls';       // Enable encryption, 'ssl' also accepted 

$mail->From = '[email protected]'; 
$mail->FromName = 'Mailer'; 
$mail->addAddress('[email protected]', 'Josh Adams'); // Add a recipient 
$mail->addAddress('[email protected]');    // Name is optional 
$mail->addReplyTo('[email protected]', 'Information'); 
$mail->addCC('[email protected]'); 
$mail->addBCC('[email protected]'); 

$mail->WordWrap = 50;         // Set word wrap to 50 characters 
$mail->addAttachment('/var/tmp/file.tar.gz');   // Add attachments 
$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name 
$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; 
    exit; 
} 

echo 'Message has been sent'; 

這裏$ MAIL->主機是SMTP郵件服務器。通常以smtp開始。

4

作爲@joydesigner的例子,要通過SMTP連接,您需要通過hostname, username and password,然後它應該連接併發送電子郵件。

$mail->Host = 'smtp1.example.com;smtp2.example.com'; // Specify main and backup server 
$mail->SMTPAuth = true;        // Enable SMTP authentication 
$mail->Username = 'jswan';       // SMTP username 
$mail->Password = 'secret';       // SMTP password 
$mail->SMTPSecure = 'tls';       // tls or ssl connection as req 

在這裏我看到你已經通過只,host信息,請添加username & password以及和嘗試一次。

還要檢查TLS/SSL PORT爲您開放,您的服務器:

檢查有:

telnet resolver1.opendns.com 25 
相關問題