tra-loi-cau-hoi-phat-trien-web.com

PHPMailer - SMTP ERROR: Lệnh mật khẩu không thành công khi gửi thư từ máy chủ của tôi

Tôi đã sử dụng khái niệm phpmailer () để gửi thư đến người dùng từ máy chủ được chia sẻ của mình bằng cách sử dụng tập lệnh php, nhưng tôi không thể gửi mặc dù mọi thứ đều đúng trong tập lệnh của tôi theo mã phpmailer.

Mã của tôi như thế này:  

  $message = " This is testing message from my server";

  $mail = new PHPMailer(); // create a new object
  $mail->IsSMTP(); // enable SMTP
  $mail->Host = "smtp.gmail.com";
  $mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
  $mail->SMTPAuth = true; // authentication enabled
  $mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for GMail
  $mail->Port = 465; // or 587
  $mail->IsHTML(true);
  $mail->Username = "[email protected]"; // My gmail username
  $mail->Password = "************"; // My Gmail Password
  $mail->SetFrom("[email protected]");
  $mail->Subject = "Test Mail from my Server";
  $mail->Body = $message;
  $mail->AddAddress($email);
   if($mail->Send())
      {
    print json_encode("SUCCESS");
}
else
{
    echo "Mailer Error: " . $mail->ErrorInfo;

}

Lưu ý: Tôi đã sử dụng "GMail" làm máy chủ SMTP của tôi và SMTPSecure là "ssl" và cổng là "465" và tên người dùng và mật khẩu là tên người dùng và mật khẩu GMail của tôi

Tôi đã sử dụng máy chủ chia sẻ VPS và tôi giữ tập lệnh php của mình trên máy chủ đó.

Tôi nghĩ rằng không có vấn đề gì trong tập lệnh php của tôi và tôi không biết tại sao nó không hoạt động.

Tôi đã nhận được LRI như thế này.

  2014-02-21 12:30:11   CLIENT -> SERVER: EHLO jkcorporates.com
  2014-02-21 12:30:11   CLIENT -> SERVER: AUTH LOGIN
  2014-02-21 12:30:11   CLIENT -> SERVER: bW9vcnRoaS5tcmsxMEBnbWFpbC5jb20=
  2014-02-21 12:30:11   CLIENT -> SERVER: OTk0MTI0MTE0MA==
  2014-02-21 12:30:11   SMTP ERROR: Password command failed: 534-5.7.14 
  534-5.7.14 i-_eumA> Please log in via your web browser and then try again.
  534 5.7.14 54 k76sm17979938yho.18 - gsmtp
  2014-02-21 12:30:11   CLIENT -> SERVER: QUIT
  " The ERROR is  "  SMTP connect() failed.

Xin vui lòng cho một số giải pháp cho điều đó.
Cảm ơn trước.

Hãy nhớ: Tôi sử dụng Tên máy chủ được chia sẻ 'VPS.mydomain.com' và tôi muốn sử dụng GMail làm máy chủ SMTP của mình để gửi thư cho người dùng.

45
Punniyam Moorthi

Một chút muộn, nhưng có lẽ ai đó sẽ thấy nó hữu ích.

Liên kết khắc phục sự cố (bạn phải đăng nhập vào tài khoản google):

https://security.google.com/sinstall/security/activity?hl=vi&pli=1

https://www.google.com.vn/sinstall/u/1/security/lesssecurur xuất hiện lại

https://accounts.google.com/b/0/DisplayUnlockCaptcha

Một số giải thích về những gì xảy ra:

Vấn đề này có thể do các ứng dụng 'kém an toàn' cố gắng sử dụng tài khoản email (đây là theo trợ giúp của google, không chắc họ đánh giá thế nào là an toàn và không an toàn) OR nếu bạn đang thử để đăng nhập nhiều lần liên tiếp OR nếu bạn thay đổi quốc gia (ví dụ: sử dụng VPN, di chuyển mã đến máy chủ khác hoặc thực sự cố gắng đăng nhập từ một phần khác của thế giới).

Để giải quyết tôi đã phải: (lần đầu tiên)

  • đăng nhập vào tài khoản của tôi qua web
  • xem các nỗ lực gần đây để sử dụng tài khoản và chấp nhận quyền truy cập đáng ngờ: LIÊN KẾT NÀY
  • vô hiệu hóa tính năng chặn các ứng dụng/công nghệ đáng ngờ: LIÊN KẾT NÀY

Điều này hoạt động lần đầu tiên, nhưng vài giờ sau, có lẽ vì tôi đang thực hiện nhiều thử nghiệm nên vấn đề đã xuất hiện trở lại và không thể khắc phục bằng phương pháp trên. Ngoài ra, tôi đã phải xóa captcha (hình ảnh vui nhộn, yêu cầu bạn viết lại một từ hoặc một câu khi đăng nhập vào bất kỳ tài khoản nào hiện nay quá nhiều lần): 

  • sau khi đăng nhập vào tài khoản của tôi, tôi đã đi TẠI ĐÂY
  • Nhấp vào tiếp tục 

Hi vọng điêu nay co ich. 

144
callmebob

Dùng cái này:

https://www.google.com/settings/u/1/security/lesssecureapps
https://accounts.google.com/b/0/DisplayUnlockCaptcha
https://security.google.com/settings/security/activity?hl=en&pli=1

liên kết này cho phép truy cập vào tài khoản google 

CẬP NHẬT 19-05-2017:

Các url bạn phải truy cập từ địa chỉ IP sẽ được gửi email

21
Sanya Snex

Như những người khác đã đề xuất, bạn có thể kích hoạt các ứng dụng "kém an toàn" hoặc đơn giản là bạn có thể chuyển từ ssl sang tls:

$mailer->Host = 'tls://smtp.gmail.com';
$mailer->SMTPAuth = true;
$mailer->Username = "[email protected]";
$mailer->Password = "***";
$mailer->SMTPSecure = 'tls';
$mailer->Port = 587;

Khi sử dụng tls không cần cấp quyền truy cập cho các ứng dụng kém an toàn hơn, chỉ cần đảm bảo, IMAP được bật.

7
Sebastian Henzl

Đã giải quyết vấn đề - PHPMailer - SMTP ERROR: Lệnh mật khẩu không thành công khi gửi thư từ máy chủ của tôi

    require_once('class.phpmailer.php');
    include("class.smtp.php"); 
    $nameField = $_POST['name'];
    $emailField = $_POST['email'];
    $messageField = $_POST['message'];
    $phoneField = $_POST['contactno'];
    $cityField = $_POST['city'];

$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch

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

$body .= $nameField;

try {
     //$mail->Host       = "mail.gmail.com"; // SMTP server
      $mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
      $mail->SMTPAuth   = true;                  // enable SMTP authentication
      $mail->SMTPSecure = "ssl";                 // sets the prefix to the servier
      $mail->Host       = "smtp.gmail.com";      // sets GMAIL as the SMTP server
      $mail->Port       = 465;   // set the SMTP port for the GMAIL server
      $mail->SMTPKeepAlive = true;
      $mail->Mailer = "smtp";
      $mail->Username   = "[email protected]";  // GMAIL username
      $mail->Password   = "********";            // GMAIL password
      $mail->AddAddress('[email protected]', 'abc');
      $mail->SetFrom('[email protected]', 'def');
      $mail->Subject = 'PHPMailer Test Subject via mail(), advanced';
      $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically
      $mail->MsgHTML($body);
      $mail->Send();
      echo "Message Sent OK</p>\n";
      header("location: ../test.html");
} catch (phpmailerException $e) {
      echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
      echo $e->getMessage(); //Boring error messages from anything else!
}

Quan trọng: 

Truy cập google Cài đặt và bật các ứng dụng 'kém an toàn' hơn. Nó sẽ hoạt động . Nó hoạt động cho tôi.

6
Ajitabh Ranjan

Tôi đối mặt với cùng một vấn đề, và nghĩ rằng tôi biết tại sao điều này xảy ra. 

Tài khoản gmail mà tôi sử dụng thường được sử dụng từ Ấn Độ và máy chủ web mà tôi sử dụng được đặt tại Hà Lan. 

Google thông báo rằng đã có một nỗ lực đăng nhập từ vị trí bất thường và yêu cầu phải đăng nhập từ vị trí đó thông qua trình duyệt web.

Hơn nữa, tôi đã phải chấp nhận quyền truy cập đáng ngờ vào tài khoản gmail thông qua https://security.google.com/sinstall/security/activity

Nhưng cuối cùng, vấn đề của tôi vẫn chưa được giải quyết, vì tôi phải đăng nhập vào gmail từ một địa điểm ở Hà Lan.

Tôi hy vọng điều này sẽ giúp bạn một chút! (xin lỗi, tôi không đọc email trả lời trên địa chỉ email này)

2
privacy

Nếu bạn là người dùng G Suit, quản trị viên có thể giải quyết

  1. Chuyển đến bảng quản trị của bạn
  2. Nhập vào thanh tìm kiếm hàng đầu « Bảo mật » (Chọn biểu tượng Bảo mật với Khiên)
  3. Mở Cài đặt cơ bản
  4. Goto Ứng dụng kém an toàn phần
  5. Nhấn: Chuyển đến cài đặt cho các ứng dụng kém an toàn hơn 

Và bây giờ, chọn một trong các Nút Radio A) Vô hiệu hóa quyền truy cập vào các ứng dụng kém an toàn hơn cho tất cả người dùng (Khuyến nghị) B) Cho phép người dùng quản lý quyền truy cập của họ vào các ứng dụng kém an toàn hơn. cho tất cả người dùng (Không được đề xuất)

Thông thường Nó không hoạt động vì a)! Và sẽ bắt đầu làm việc ngay lập tức với tùy chọn c). b) - tùy chọn sẽ cần thêm cấu hình cho mỗi người dùng trong GSuit

Hy vọng nó giúp

1
Vladimir

Lỗi này là do nhiều tính năng bảo mật của gmail ..

Khi lỗi này được tạo ... Vui lòng đăng nhập vào tài khoản gmail của bạn..có thể bạn sẽ tìm thấy cảnh báo bảo mật từ GOOGLE..theo dõi thư ... kiểm tra nhấp vào để có tùy chọn kém an toàn hơn .. Sau đó thử lại phpmailer ..

0
Bhanu

Thư của bạn sẽ không được gửi trực tuyến trừ khi bạn hoàn thành xác minh hai bước cho tài khoản g-mail của mình và sử dụng mật khẩu đó.

0
user10800773

Đối với những người vẫn không thể làm cho nó hoạt động, hãy thử các cách sau ngoài phương thức được cung cấp bởi @CallMeBob.

PHP.ini

  1. Truy cập C:\xampp\php , chỉnh sửa php.ini tệp bằng notepad.
  2. Nhấn CTRL + F trên bàn phím của bạn, nhậpsendmail_pathtrên thanh tìm kiếm và nhấp Tìm tiếp theo hai lần.
  3. Ngay bây giờ, bạn nên ở phần [phần chuyển thư]

Xóa dấu chấm phẩy cho dòng này: sendmail_path = "\" C:\xampp\sendmail\sendmail.exe\"-t"
Thêm dấu chấm phẩy cho dòng này: sendmail_path = "C:\xampp\mailtodisk\mailtodisk.exe"

SendMail.ini

  • Truy cập C:\xampp\sendmail , chỉnh sửa sendmail.ini tệp bằng notepad
  • Thay đổi như sau:


Chú thích:
** smtp_port phải kiểm đếm với những người được viết bằng mã php của bạn.
** Hãy nhớ thay đổi your-gmail-usernameyour-gmail-password thành bất kỳ tài khoản nào bạn đang sử dụng. 
**


Hi vọng điêu nay co ich! :)

0
Rafilson