2010-02-09 65 views
9

Tôi đã cố gắng sử dụng trình gửi thư php nhưng có lỗi như sau.Lỗi gửi thư PHP

SMTP -> FROM SERVER: 
SMTP -> FROM SERVER: 
SMTP -> ERROR: EHLO not accepted from server: 
SMTP -> FROM SERVER: 
SMTP -> ERROR: HELO not accepted from server: 
SMTP -> ERROR: AUTH not accepted from server: 
SMTP -> NOTICE: EOF caught while checking if connectedSMTP Error: Could not authenticate. Message could not be sent. 

Mailer Error: SMTP Error: Could not authenticate. 

và mã của tôi

<?php 
     require("class.phpmailer.php") 
     $mail = new PHPMailer();   
     $mail->IsSMTP();          
     $mail->Host = "smtp.gmail.com"; 
     $mail->Port = 465;   
     $mail->SMTPAuth = true;  

     $mail->SMTPDebug = 2; 
     $mail->Username = "[email protected]"; 
     $mail->Password = "xxxxxxxx"; 
     $mail->From = "[email protected]"; 
     $mail->FromName = "Mailer"; 
     $mail->AddAddress("[email protected]", "mine");    
     $mail->WordWrap = 50;         
     $mail->IsHTML(true);         

     $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. <p>"; 
      echo "Mailer Error: " . $mail->ErrorInfo; 
      exit; 
     } 
     echo "Message has been sent"; 

     ?> 
+0

bạn cần một kết nối an toàn, không bạn? –

Trả lời

14

Một số máy chủ (đặc biệt là chia sẻ lưu trữ) sẽ chặn bạn từ việc sử dụng SSL với SMTP, tôi đã cùng một vấn đề cùng một lúc.

Hoặc thay đổi máy chủ nếu bạn có thể, thử sử dụng hàm PHP mail() mặc định hoặc gửi qua một máy chủ thư khác không yêu cầu SSL, ví dụ: cổng 25 không 465.

Điều gì đó giống như AuthSMTP sẽ là lựa chọn tốt nhất của bạn cho một máy chủ thư thay thế.

+0

Tôi đã thử sử dụng chức năng thư PHp nhưng thư đó cũng không được gửi. – user2480288

1

không chắc chắn nhưng cố gắng $mail->Host = "smtp.gmail.com" =>$mail->Host = "smtp.google.com"

+2

smtp.gmail.com là chính xác. – Shoban

+0

oh tôi xin lỗi :) – Young

2

Có thể là vì tường lửa?

Nếu bạn không thể đăng nhập vào Google Talk, hoặc bạn nhận được một lỗi mà nói, có thể không xác thực để máy chủ, kiểm tra xem bạn đã cài đặt phần mềm cá nhân tường lửa, hoặc nếu bạn máy tính nằm phía sau máy chủ proxy yêu cầu tên người dùng và mật khẩu.

http://www.google.com/support/talk/bin/answer.py?hl=en&answer=30998

+0

không phải là thư, phải không? – hakre

5

Nếu bạn đang làm việc trong localhost của bạn chỉ cần đi đến PHP Extention và kích hoạt hoặc kiểm tra php_openssl nó sẽ được có thể truy cập các cổng SSL.

8

Tôi có cùng sự cố, có vẻ như chúng tôi có để đặt giá trị SMPTSecure. Đầu tiên tôi đã thay đổi cổng từ 465 thành 587 và thêm:
$ mail-> SMTPSecure = "tls"; và nó hoạt động :)

2

Tôi sử dụng cùng một tập lệnh cho một số máy khách và chỉ gặp phải sự cố này khi triển khai tới các nhà cung cấp đám mây Amazon EC2 (chẳng hạn như Openshift).

Đây là các cài đặt đã được thử nghiệm và thử nghiệm trong phpmailer: $ mail-> SMTPSecure = "tls"; // đặt tiền tố cho servier $ mail-> Host = "smtp.gmail.com"; // đặt GMAIL làm máy chủ SMTP $ mail-> Port = 587;

'nhưng' Google chặn các dịch vụ này là 'hành động chống spam'/chính trị và điều này đã khiến tôi phát hiện ra vì nó hoạt động cục bộ và trên hầu hết các nhà cung cấp dịch vụ lưu trữ, bạn không thể làm gì khi không chấp nhận thư gửi đi từ máy chủ DNS/IP của bạn. Chấp nhận và tiếp tục bằng cách tìm kiếm một máy chủ smtp khác để định tuyến thư.

3

thử mã này

require '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.gmail.com'; 

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

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

    //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 = "admin123"; 

    $mail->setFrom('[email protected]', 'development'); //add sender email address. 

    $mail->addAddress('[email protected]', "development"); //Set who the message is to be sent to. 
    //Set the subject line 
    $mail->Subject = $response->subject; 

    //Read an HTML message body from an external file, convert referenced images to embedded, 
    //convert HTML into a basic plain-text alternative body 
    $mail->Body  = 'Name: '.$data['name'].'<br />Location: '.$data['location'].'<br />Email: '.$data['email'].'<br />Phone:'.$data['phone'].'<br />ailment: '.$data['ailment'].'<br />symptoms: '.$data['symptoms']; 

    //Replace the plain text body with one created manually 
    $mail->AltBody = 'This is a plain-text message body'; 

    //Attach an image file 
    //$mail->addAttachment('images/phpmailer_mini.gif'); 
    //$mail->SMTPAuth = true; 
    //send the message, check for errors 
    if (!$mail->send()) { 
     echo "Mailer Error: " . $mail->ErrorInfo; 
    } else { 
     echo "Message sent!"; 
    } 
+0

$ mail-> SMTPSecure = 'ssl'; tạo sự khác biệt cho tôi, cảm ơn! –

+0

@ Cyrille Armanger chấp nhận câu trả lời nếu nó hoạt động :) cảm ơn trước – Priyank

+0

Tôi không phải là người đăng ban đầu, nó chỉ giúp tôi. –

2

Đã cùng một vấn đề, Thay đổi cổng Không trong thiết lập email OpenCart đến 587 và hoạt động tốt

+0

Điều này làm việc cho tôi. – herrmartell

Các vấn đề liên quan