尝试使用 PHP 邮件程序 (localhost) 发送电子邮件时,我不断收到错误消息。或者 php 邮件程序无法在本地主机上运行吗?
<?php //Import PHPMailer classes into the global namespace //These must be at the top of your script, not inside a function use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\SMTP; use PHPMailer\PHPMailer\Exception; require 'src/Exception.php'; require 'src/PHPMailer.php'; require 'src/SMTP.php'; //Load Composer's autoloader require 'vendor/autoload.php'; //Create an instance; passing `true` enables exceptions $mail = new PHPMailer(true); try { //Server settings $mail->SMTPDebug = SMTP::DEBUG_SERVER; //Enable verbose debug output $mail->isSMTP(); //Send using SMTP $mail->Host = 'smtp.gmail.com'; //Set the SMTP server to send through $mail->SMTPAuth = true; //Enable SMTP authentication $mail->Username = 'default@gmail.com'; //SMTP username $mail->Password = '00000120'; //SMTP password // $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; //Enable implicit TLS encryption $mail->Port = 465; //TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS` //Recipients $mail->setFrom('NatsuDragneelxd42069@gmail.com', 'Mailer'); $mail->addAddress('Received@gmail.com', 'Joe User'); //Add a recipient //$mail->addAddress('ellen@example.com'); //Name is optional $mail->addReplyTo('Noreply@gmail.com', 'Info'); // $mail->addCC('cc@example.com'); // $mail->addBCC('bcc@example.com'); //Attachments // $mail->addAttachment('/var/tmp/file.tar.gz'); //Add attachments // $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); //Optional name //Content $mail->isHTML(true); //Set email format to HTML $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'; $mail->send(); echo 'Message has been sent'; } catch (Exception $e) { echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}"; }
这是我得到的错误:
服务器-> 客户端: SMTP 错误:无法连接到 SMTP 主机。 Message could not be sent. Mailer Error: SMTP 错误:无法连接到 SMTP 主机。
P粉3641297442024-02-26 11:12:42
我不知道你为什么注释掉这一行,但它会使连接失败,因为它将尝试与需要加密的端口建立未加密的连接:
// $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
取消注释,您可能会更幸运。您可能还想尝试设置 SMTPDebug = SMTP::DEBUG_CONNECTION
,因为它会为您提供有关连接的 TLS 阶段的更多信息。
这可能无法解决您的整个问题,因为 Gmail(自 2022 年 5 月起)不再允许使用常规 ID 和密码进行身份验证。您需要切换到使用 XOAUTH2(PHPMailer 支持),或者在 Gmail 控制台中创建应用程序密码。
另请注意,gmail 不允许您使用任意地址,只能使用您的用户名
地址和预定义别名。
PHPMailer 故障排除指南中涵盖了所有这些内容。