我正在尝试通过 PHPMailer 发送电子邮件。
我本地的开发环境:
操作系统 Windows 11 Pro XAMPP 与 PHP 8.2.12 PHPMailer 版本 6.9.1
代码如下所示:
try {
$phpMailer = new PHPMailer(true);
$phpMailer->CharSet = $this->charSet;
// server settings
$phpMailer->isSMTP();
$phpMailer->Host = $this->mailHost;
$phpMailer->SMTPAuth = true;
$phpMailer->Username = $this->mailUser;
$phpMailer->Password = $this->mailPwd;
$phpMailer->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$phpMailer->port = $this->mailPort; // is set to 587
// recipients
$phpMailer->setFrom($this->from, 'test.test');
$phpMailer->addAddress($addressMail);
// content
$phpMailer->isHTML($this->isHtml);
$phpMailer->Subject = $this->subject;
$phpMailer->Body = $this->body;
// add attachments
if (!empty($attachments) && $addAttachment) {
for ($i = 0; $i < count($attachments["filePaths"]); $i++) {
if ( count($attachments["filePaths"]) > 0
&& array_key_exists( $i, $attachments["fileNames"])) {
$phpMailer->AddAttachment($attachments["filePaths"][$i], $attachments["fileNames"][$i]);
}
}
}
$returnValue = $phpMailer->send();
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$phpMailer->ErrorInfo}";
}
但是,我收到消息: 已弃用:动态属性 PHPMailer\PHPMailer\PHPMailer::$port 的创建已弃用
这是什么原因?
我可能使用了错误的版本(升级PHPMailer)?
我尝试将发送切换为 SMTP,但我的服务器不支持它,因此没有发送邮件。
使用端口 465 和 TLS 发送邮件,但我得到该端口已过时的信息。
您应该使用正确的属性名称。
具体来说,您应该使用 $phpMailer->Port(带有大写“P”)而不是 $phpMailer->port。
如果您使用端口 456 发送电子邮件,我会使用 PHPMailer::ENCRYPTION_SMTPS 而不是 PHPMailer::ENCRYPTION_STARTTLS,这用于隐式 SSL