【发布时间】:2017-05-04 18:09:58
【问题描述】:
我正在使用 PHPMailer 和 smtp.gmail.com 向我的用户发送电子邮件。 发送电子邮件,这没有问题,但在客户端,在发件人电子邮件地址中,显示的是我的服务器主机电子邮件地址,而不是我使用 PHPMailer->SetFrom() 设置的电子邮件地址。我想将我的电子邮件地址设置为发件人电子邮件。 我正在使用 php 5.4 & PHPMailer 5.2.4 我的代码如下:
<?php
require_once('class.phpmailer.php');
$mail = new PHPMailer(true);
try {
$mail->SMTPDebug = 2;
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
$mail->Host = "smtp.gmail.com";
$mail->Port = 465;
$mail->Username = "myemail@gmail.com";
$mail->Password = "PASSWORD";
$mail->AddAddress('receiver@email.com', 'John Doe');
$mail->SetFrom('myemail@email.com', 'My Name');
$mail->addReplyTo('myemail@gmail.com', 'My Name');
$mail->Subject = 'PHPMailer Subject';
$mail->MsgHTML('This is the body');
$mail->Send();
echo "Message Sent";
} catch (phpmailerException $e) {
echo $e->errorMessage();
} catch (Exception $e) {
echo $e->getMessage();
}
?>
【问题讨论】:
-
您使用的是什么版本的 PHP 和 PHPMailer?为什么你将 true 传递给构造函数?发布问题时请尽量具体。
-
true 用于在发生 PHPMailer 异常时抛出异常。
-
将
true传递给构造函数会启用异常,并且代码具有要匹配的try/catch 块。我怀疑 OP 也在使用旧版本的 PHPMailer,因为它没有使用自动加载器,也没有加载 SMTP 类,这在过去几年的所有 PHPMailer 版本中都会失败。