搜索

首页  >  问答  >  正文

简单指南:使用PHPMailer发送测试邮件

<p>我在Debian/Bullseye上运行着一个本地的Apache2服务器。我一直在努力让PHPMailer起作用,但是一直没有成功。安装PHPMailer似乎有两种不同的方法-第一种是使用composer,这是我尝试的第一种方法。它在站点的根目录下创建了一个vendor文件夹,其中包括一个autoload.php文件,以及其他一些文件。该文件包含以下内容:</p> <pre class="brush:php;toolbar:false;"><?php // autoload.php @generated by Composer require_once __DIR__ . '/composer/autoload_real.php'; return ComposerAutoloaderInitd359baac21f520c04e608f4eed750560::getLoader();</pre> <p>这看起来不完整(没有闭合标签)。无论如何,我无法使“test.php”示例工作。</p> <p>另一种方法是从gethub网站下载.zip文件并将其解压缩到站点的根目录。重命名后,我得到了一个PHPMailer文件夹。使用“mailer.php”示例也没有任何效果。</p> <p>在这两种情况下,我都修改了smtp信息,以使用域名的实际帐户信息(发送电子邮件、登录密码、smtp服务器名称、主机的smtp安全性和端口设置),但我甚至没有收到拒绝邮件的回复。什么都没有发生。我只看到一个空白的网页。</p> <p>我确实有运行php,因为我之前使用过的一个php脚本仍然有效(来自我的测试站点-现在的实际站点坚持使用smtp,不让我安装PEAR模块)。</p> <p>以下是我正在使用的mailer.php脚本-其中一些细节被隐藏:</p> <pre class="brush:php;toolbar:false;"><?php //将PHPMailer类导入到全局命名空间 //这些必须在脚本的顶部,而不是函数内部 use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\SMTP; use PHPMailer\PHPMailer\Exception; require 'PHPMailer/src/Exception.php'; require 'PHPMailer/src/PHPMailer.php'; require 'PHPMailer/src/SMTP.php'; //创建一个实例;传递'true'启用异常 $mail = new PHPMailer(true); Try { //服务器设置 $mail->SMTPDebug = SMTP::DEBUG_SERVER; //启用详细调试输出 $mail->isSMTP(); //使用SMTP发送 $mail->Host = 'mail.<domain>.ca'; //设置要通过的SMTP服务器 $mail->SMTPAuth = true; //启用SMTP身份验证 $mail->Username = 'mail@<domain>.ca'; //SMTP用户名 $mail->Password = '<secret>'; //SMTP密码 $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; //启用隐式TLS加密 $mail->Port = 465; //要连接的TCP端口;如果设置了'SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS',请使用587 //收件人 $mail->setFrom('mail@<domain>.ca', ‘from me’); $mail->addAddress('gary@<domain>.ca', ‘to me’); //添加一个收件人 // $mail->addAddress('Recipient@emailaddress.com'); //名称是可选的 // $mail->addReplyTo('yourname@domain.com', ‘Your Name’); // $mail->addCC('cc@example.com'); // $mail->addBCC('bcc@example.com'); //附件(可选) // $mail->addAttachment('/var/tmp/file.tar.gz'); //添加附件 // $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); //可选名称 //内容 $mail->isHTML(true); //将电子邮件格式设置为HTML $mail->Subject = 'Here is the subject'; $mail->Body = 'This is the HTML message body in bold!'; $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}"; } ?></pre> <p>TLS行来自托管公司,所以我认为它们是正确的。</p> <p>我已经注释掉了我在测试中不需要的选项,但它仍然不起作用。有人能找出我做错了什么吗?</p> <p>谢谢。</p>
P粉344355715P粉344355715454 天前643

全部回复(1)我来回复

  • P粉709644700

    P粉7096447002023-08-27 16:24:52

    好的,明白了。主机公司提供了测试代码,他们的示例使用了smtp.domain.com。实际上,他们的smtp服务器是mail,而不是smtp。我猜想当面对一个不存在的服务器时,代码就会停止运行...

    回复
    0
  • 取消回复