Rumah > Soal Jawab > teks badan
Saya telah menggunakan PHPMailer pada beberapa projek, tetapi kini saya tersekat. Ia memberi saya ralat:
Ralat SMTP: Tidak dapat menyambung ke hos SMTP.
Saya cuba menghantar e-mel daripada Thunderbird dan ia berjaya! Tetapi bukan melalui PHPMailer... Berikut adalah tetapan untuk Thunderbird:
Nama Pelayan: mail.exampleserver.com
Port: 587
Nama pengguna: user@exampleserver.com
Pengesahan Keselamatan: Tidak LS
Pengesahan Keselamatan: TidakSaya membandingkannya dengan pelayan dari projek terakhir saya menggunakan PHPMailer dan ia adalah:
Nama Pelayan: mail.exampleserver2.com
Port: 465
Nama pengguna: user@exampleserver2.com
: Keselamatan Secure Authentication:
LS
Kod php saya ialah:
$mail = new PHPMailer(); $mail->IsSMTP(); // send via SMTP $mail->Host = SMTP_HOST; // SMTP servers $mail->Port = SMTP_PORT; // SMTP servers $mail->SMTPAuth = true; // turn on SMTP authentication $mail->Username = SMTP_USER; // SMTP username $mail->Password = SMTP_PASSWORD; // SMTP password $mail->From = MAIL_SYSTEM; $mail->FromName = MAIL_SYSTEM_NAME; $mail->AddAddress($aSecuredGetRequest['email']); $mail->IsHTML(true); // send as HTMLDi mana silap saya?
P粉3524080382023-10-13 14:23:02
Memandangkan soalan ini sering timbul dalam google, saya ingin berkongsi di sini penyelesaian saya untuk situasi di mana PHP baru sahaja dinaik taraf kepada versi 5.6 (yang mempunyai tingkah laku SSL yang lebih ketat).
Wiki PHPMailer mempunyai bahagian tentang ini:
https://github.com/PHPMailer/ PHPMailer/wiki/Troubleshooting#php-56-certificate-verification-failure
Penyelesaian yang dicadangkan termasuk kod berikut:
$mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) );
Ini sepatutnya berfungsi dengan PHPMailer 5.2.10 (dan ke atas).
NOTA: Nampaknya, seperti yang dicadangkan dalam wiki ini, ini sepatutnya menjadi penyelesaian sementara!