如何让PHPMailer发送测试电子邮件



我有一个运行在Debian/Bullseye上的本地Apache2服务器。我一直在努力让PHPMailer做任何事情。安装PHPMailer似乎有两种不同的方法——第一种是使用composer,这是我尝试的第一种方法。它在站点的根目录中创建了一个供应商文件夹,其中包括一个autoload.php文件等。该文件包含:

<?php
// autoload.php @generated by Composer
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInitd359baac21f520c04e608f4eed750560::getLoader();

这看起来并不完整(没有结束标记(。无论如何,我不能得到"test.php";样品工作。

另一种方法是从gethub站点下载.zip文件,并将其提取到站点的根目录中。重命名后,这给了我一个PHPMailer文件夹。使用";mailer.php";样本也没有任何作用。

在这两种情况下,我都修改了smtp信息,以使用域的实际帐户信息(发送电子邮件、登录密码、smtp服务器名称、主机的smtp安全性和端口设置(,但我甚至没有收到拒绝邮件的消息。什么都没发生。我只剩下一个空白的网页。

我确实有php在运行,因为我以前使用的php脚本仍然有效(从我的测试站点来看——实时站点现在坚持使用smtp,不允许我安装PEAR模块(。

这是我正在使用的mailer.php脚本,其中隐藏了一些细节:

<?php
//Import PHPMailer classes into the global namespace
//These must be at the top of your script, not inside a function
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerSMTP;
use PHPMailerPHPMailerException;
require 'PHPMailer/src/Exception.php';
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.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 = 'mail.<domain>.ca'; //Set the SMTP server to send through
$mail->SMTPAuth = true; //Enable SMTP authentication
$mail->Username = 'mail@<domain>.ca'; //SMTP username
$mail->Password = '<secret>'; //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('mail@<domain>.ca', ‘from me’);
$mail->addAddress('gary@<domain>.ca', ‘to me’); //Add a recipient
//    $mail->addAddress('Recipient@emailaddress.com'); //Name is optional
//    $mail->addReplyTo('yourname@domain.com', ‘Your Name’);
//    $mail->addCC('cc@example.com');
//    $mail->addBCC('bcc@example.com');
//Attachments Optional
//    $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 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}";
}
?>

TLS线路来自托管公司,所以我认为它们是正确的。

我已经评论了一些我不需要测试的选项,但它仍然不起作用。有人能猜出我做错了什么吗?

谢谢。

好的,明白了。主机公司提供了测试代码,他们的样本使用了smtp.domain.com。实际上,他们的smtp服务器是邮件,而不是smtp。我想,当面对一个不存在的服务器时,代码会挂起。。。

相关内容

  • 没有找到相关文章

最新更新