Đang cố gắng gửi thư đến một địa chỉ gmail nhưng nó vẫn liên tục gặp lỗi này "SMTP -> LRI: Không thể kết nối với máy chủ: Đã hết thời gian kết nối (110) Kết nối SMTP () không thành công. Tin nhắn không được gửi. Lỗi kết nối: SMTP () thất bại." Điều gì có thể là vấn đề?
require 'class.phpmailer.php'; // path to the PHPMailer class
require 'class.smtp.php';
$mail = new PHPMailer();
$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPDebug = 2;
$mail->Mailer = "smtp";
$mail->Host = "ssl://smtp.gmail.com";
$mail->Port = 587;
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = "[email protected]"; // SMTP username
$mail->Password = "mypasswword"; // SMTP password
$Mail->Priority = 1;
$mail->AddAddress("[email protected]","Name");
$mail->SetFrom($visitor_email, $name);
$mail->AddReplyTo($visitor_email,$name);
$mail->Subject = "Message from Contact form";
$mail->Body = $user_message;
$mail->WordWrap = 50;
if(!$mail->Send()) {
echo 'Message was not sent.';
echo 'Mailer error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent.';
}
Xóa hoặc nhận xét dòng-
$mail->IsSMTP();
Và nó sẽ làm việc cho bạn.
Tôi đã kiểm tra và thử nghiệm nhiều câu trả lời từ các trang web khác nhau nhưng không có giải pháp nào ngoại trừ giải pháp trên.
Bạn phải cài đặt php_openssl.dll, nếu bạn sử dụng wamperver, việc tìm kiếm và áp dụng tiện ích mở rộng cho PHP khá dễ dàng.
Trong ví dụ thay đổi này:
//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 465 ssl
$mail->Port = 465;
//Set the encryption system to use - ssl (deprecated) or tls
$mail->SMTPSecure = 'ssl';
và sau đó bạn đã nhận được một email từ gmail nói về việc kích hoạt tùy chọn Ứng dụng truy cập ít an toàn hơnhere https://www.google.com.vn/sinstall/security/lesssecur Ứng dụng lại
Tôi khuyên bạn nên thay đổi mật khẩu và mã hóa liên tục
Bạn không có cài đặt SMTPSecure để xác định loại xác thực đang được sử dụng và bạn đang chạy cài đặt Máy chủ với 'ssl: //' (PS - ssl không qua cổng 465, nếu bạn cần chạy nó ssl thay vào đó, hãy xem câu trả lời được chấp nhận tại đây . Đây là các dòng để thêm/thay đổi:
+ $mail->SMTPSecure = 'tls';
- $mail->Host = "ssl://smtp.gmail.com";
+ $mail->Host = "smtp.gmail.com";
Bạn đang chạy trên Localhost? và bạn đã chỉnh sửa php.ini
chưa?
Nếu chưa, hãy thử điều này:
1. Mở xampp-> php-> php.ini
2. Tìm kiếm extension=php_openssl.dll
3. Chữ cái đầu tiên sẽ trông như thế này ;extension=php_openssl.dll
4. Gỡ bỏ ';' và nó sẽ trông như thế này extension=php_openssl.dll
5. Nếu bạn không thể tìm thấy extension=php_openssl.dll
, hãy thêm dòng này extension=php_openssl.dll
.
6. Sau đó khởi động lại Xampp của bạn.
Chúc may mắn ;)
tôi đã gặp vấn đề này khi nói rằng tôi đã nhận được một email từ google nói với tôi rằng ai đó cố gắng đăng nhập vào tài khoản của bạn là bạn và tôi trả lời là có, sau đó nó bắt đầu làm việc vì vậy nếu đây là trường hợp bạn xem trong email của mình và cho phép máy chủ
Đăng nhập tài khoản Google của bạn tại myaccount.google.com/security đi đến "Đăng nhập" và sau đó "Bảo mật", cuộn xuống dưới cùng sau đó bật tùy chọn "Cho phép ứng dụng kém an toàn".
Dưới đây là danh sách này bạn nên xem xét khi giao dịch với PHPMailer:
extension=php_openssl.dll
trong PHP.ini của bạn$mail->SMTPSecure = 'tls';
và $mail->Port = 587;
Bạn đang làm tốt tất cả. Chỉ cần bạn kiểm tra các cổng SMTP khác nhau như 465 và các cổng khác hoạt động trên hệ thống của bạn . Một lưu ý khác là cho phép truy cập vào các ứng dụng kém an toàn hơn bằng tài khoản google nếu không nó sẽ gây ra lỗi tương tự.
Tôi đã trải qua cả một ngày và điều duy nhất tôi làm sai là cổng số. Tôi chỉ thay đổi cổng số. Và nó hoạt động.
Tôi biết đã được một thời gian kể từ câu hỏi này nhưng tôi đã có vấn đề chính xác và giải quyết nó bằng cách vô hiệu hóa SMTP_BLOCK trên csf.conf (chúng tôi sử dụng CSF cho tường lửa).
Để vô hiệu hóa, chỉ cần chỉnh sửa csf.conf và tắt SMTP_BLOCK như vậy:
###############################################################################
# SECTION:SMTP Settings
###############################################################################
# Block outgoing SMTP except for root, exim and mailman (forces scripts/users
# to use the exim/sendmail binary instead of sockets access). This replaces the
# protection as WHM > Tweak Settings > SMTP Tweaks
#
# This option uses the iptables ipt_owner/xt_owner module and must be loaded
# for it to work. It may not be available on some VPS platforms
#
# Note: Run /etc/csf/csftest.pl to check whether this option will function on
# this server
# SMTP_BLOCK = "1" --> this will cause phpmailer Connection timed out (110)
SMTP_BLOCK = "0"
Để nó hoạt động, tôi phải truy cập myaccount.google.com -> "ứng dụng và trang web được kết nối" và chuyển "Cho phép ứng dụng kém an toàn hơn" thành "BẬT" (gần cuối trang).
Cổng: 25 hoặc 587 (một số nhà cung cấp chặn cổng 25)
Tôi làm việc bằng cách thay đổi cổng sau khi triển khai ứng dụng lên máy chủ.
$mail->Port = 25;
$mail->Port = 587;
GL
Nếu nó hoạt động trên localhost của bạn nhưng không phải trên máy chủ web của bạn:
Một số trang web lưu trữ chặn một số cổng SMTP gửi đi . Nhận xét dòng $mail->IsSMTP();
như được lưu ý trong câu trả lời được chấp nhận có thể làm cho nó hoạt động, nhưng nó chỉ đơn giản là vô hiệu hóa cấu hình SMTP của bạn và sử dụng cấu hình email của trang web lưu trữ.
Nếu bạn đang sử dụng GoDaddy, không có cách nào để gửi thư bằng cách sử dụng một SMTP khác. Tôi đang sử dụng SiteGround và thấy rằng họ chỉ cho phép truy cập SMTP từ các cổng 25 và 465, với loại mã hóa SSL, vì vậy tôi sẽ tìm tài liệu cho Máy chủ của bạn và đi từ đó.