2014-04-02 37 views
2

所以我一直在使用Gmail和使用PHP郵件,它工作正常。phpmailer與雅虎不工作在任何設置

我試圖做與雅虎郵件一樣的,但它似乎工作。

我已經嘗試過各種端口和設置,但它不工作。

這裏是代碼:

 <!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
    <title>PHPMailer - GMail SMTP test</title> 
</head> 
<body> 
<?php 

//SMTP needs accurate times, and the PHP time zone MUST be set 
//This should be done in your php.ini, but this is how to do it if you don't have access to that 
date_default_timezone_set('Etc/UTC'); 

require 'phpmailer/PHPMailerAutoload.php'; 

//Create a new PHPMailer instance 
$mail = new PHPMailer(); 

//Tell PHPMailer to use SMTP 
$mail->isSMTP(); 

//Enable SMTP debugging 
// 0 = off (for production use) 
// 1 = client messages 
// 2 = client and server messages 

$mail->SMTPDebug = 2; 

//Ask for HTML-friendly debug output 
$mail->Debugoutput = 'html'; 

//Set the hostname of the mail server 
$mail->Host = 'smtp.mail.yahoo.com'; 

//Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission 
$mail->Port = 587; //995 and 465 port tried but not working 

//Set the encryption system to use - ssl (deprecated) or tls 
$mail->SMTPSecure = 'tsl';//only ssl tried not working 

//Whether to use SMTP authentication 
$mail->SMTPAuth = true; 

//Username to use for SMTP authentication - use full email address for gmail 
$mail->Username = "[email protected]"; 

//Password to use for SMTP authentication 
$mail->Password = "sender_pass"; 

//Set who the message is to be sent from 
$mail->setFrom('[email protected]', 'sender_name'); 


//Set who the message is to be sent to 
$mail->addAddress('[email protected]', 'receiver_name'); 

//Set the subject line 
$mail->Subject = 'PHPMailer YMail SMTP test'; 



$mail->msgHTML(file_get_contents('phpmailer/examples/contents.html'), dirname(__FILE__)); 

$mail->AltBody = 'This is a plain-text message body'; 

$mail->addAttachment('phpmailer/examples/images/phpmailer_mini.png'); 

//send the message, check for errors 
if (!$mail->send()) { 
    echo "Mailer Error: " . $mail->ErrorInfo; 
} else { 
    echo "Message sent!"; 
} 

?> 
</body> 
</html> 

,我也得到了以下錯誤:

SERVER -> CLIENT: 220 smtp.mail.yahoo.com ESMTP ready 
CLIENT -> SERVER: EHLO localhost 
CLIENT -> SERVER: AUTH LOGIN 

SERVER -> CLIENT: 530 5.7.0 Must issue a STARTTLS command first 

CLIENT -> SERVER: QUIT 
SERVER -> CLIENT: 221 2.0.0 Bye 
SMTP connect() failed. 
Mailer Error: SMTP connect() failed. 

回答

2

正確的是TLS,你有一個咒語錯誤:

$mail->SMTPSecure = 'tls' 
-2
$mail = new PHPMailer(); 

$body = "<h1>hello, world!</h1>" 

$mail->IsSMTP(); // telling the class to use SMTP 

$mail->SMTPAuth = true;     // enable SMTP authentication 
$mail->SMTPSecure = "ssl";     // sets the prefix to the servier 
$mail->Host  = "smtp.mail.yahoo.com";  // sets YAHOO as the SMTP server 
$mail->Port  = 465;     // set the SMTP port for the GMAIL server 
$mail->Username = "[email protected]"; // GMAIL username 
$mail->Password = "yourpassword";   // GMAIL password 

$mail->SetFrom('[email protected]', 'First Last'); 

$mail->AddReplyTo("[email protected]","First Last"); 

$mail->Subject = "PHPMailer Test Subject via smtp (Gmail), basic"; 

$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test 

$mail->MsgHTML($body); 

$address = "[email protected]"; 
$mail->AddAddress($address, "John Doe"); 

if(!$mail->Send()) { 
    echo "Mailer Error: " . $mail->ErrorInfo; 
} else { 
    echo "Message sent!"; 
} 
+0

不要只張貼代碼,解釋你的答案。 –

1

雅虎SMTP主機是:smtp.mail.yahoo.fr,端口:和SSL是必需的。

與PHPMailer的

所以:

$mail->Host   = "smtp.mail.yahoo.fr, "; 
    $mail->Username  = "[email protected]"; 
    $mail->Password  = "youryahoopw"; 
    $mail->SMTPSecure = "ssl"; 
    $mail->Port   = 465;