phpmailer:仅使用“回复”;答复「;地址
我在我的网站上使用phpmailer,为了帮助解决垃圾邮件问题,我创建了一个邮箱(使用SMTP)发送这些电子邮件 我已将电子邮件设置为来自邮箱地址,然后我添加了一个回复至地址,用于我希望回复的目的地:phpmailer:仅使用“回复”;答复「;地址,php,phpmailer,Php,Phpmailer,我在我的网站上使用phpmailer,为了帮助解决垃圾邮件问题,我创建了一个邮箱(使用SMTP)发送这些电子邮件 我已将电子邮件设置为来自邮箱地址,然后我添加了一个回复至地址,用于我希望回复的目的地: $mail = new PHPMailer(); $mail->IsSMTP(); $mail->SMTPAuth = true; $mail->SMTPSecure = 'tsl'; $mail->SMTPDebug = 1; $mail->Host
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'tsl';
$mail->SMTPDebug = 1;
$mail->Host = EMAIL_HOST;
$mail->Port = EMAIL_PORT;
$mail->Username = EMAIL_USER;
$mail->Password = EMAIL_PASS;
$mail->SetFrom('mailbox@email.com', 'Mailbox name');
$mail->AddReplyTo('replyto@email.com', 'Reply to name');
$mail->AddAddress('user@email.com', 'User name);
电子邮件发送成功,似乎通过垃圾邮件过滤器正常,但当我按“回复”时,它包括邮箱帐户和回复帐户
这是注定要发生的吗?我只想在您按“回复”时显示回复地址。这可能吗
非常感谢您提供的任何帮助
编辑: 查看电子邮件标题,似乎发件人地址已包含在“回复收件人”字段中。我不知道为什么
Date: Tue, 1 May 2012 11:16:25 +0100
To: User name <user@email.com>
From: Mailbox name <mailbox@email.com>
Reply-to: Mailbox name <mailbox@email.com>, Reply to name <replyto@email.com
Subject: Email subject
Message-ID: <54c530c0d1f3ff33fc87c4c41c2c9ffd@localhost>
X-Priority: 3
X-Mailer: PHPMailer 5.1 (phpmailer.sourceforge.net)
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="b1_54c530c0d1f3ff33fc87c4c41c2c9ffd"
--b1_54c530c0d1f3ff33fc87c4c41c2c9ffd
Content-Type: text/plain; charset = "iso-8859-1"
Content-Transfer-Encoding: 8bit
日期:2012年5月1日星期二11:16:25+0100
收件人:用户名
发件人:邮箱名称
回复:邮箱名称,回复名称我已经找到了这个问题的答案,而且它非常简单!基本上,需要在发件人地址之前添加回复地址,例如:
$mail->addReplyTo('replyto@email.com', 'Reply to name');
$mail->SetFrom('mailbox@email.com', 'Mailbox name');
更详细地查看phpmailer代码,这是有问题的一行:
public function SetFrom($address, $name = '',$auto=1) {
$address = trim($address);
$name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
if (!self::ValidateAddress($address)) {
$this->SetError($this->Lang('invalid_address').': '. $address);
if ($this->exceptions) {
throw new phpmailerException($this->Lang('invalid_address').': '.$address);
}
echo $this->Lang('invalid_address').': '.$address;
return false;
}
$this->From = $address;
$this->FromName = $name;
if ($auto) {
if (empty($this->ReplyTo)) {
$this->AddAnAddress('ReplyTo', $address, $name);
}
if (empty($this->Sender)) {
$this->Sender = $address;
}
}
return true;
}
具体而言,这一行:
if (empty($this->ReplyTo)) {
$this->AddAnAddress('ReplyTo', $address, $name);
}
谢谢大家的帮助 至少在当前版本的PHPMailers中,有一个函数cleareplytos()用于清空reply to数组
$mail->ClearReplyTos();
$mail->addReplyTo(example@example.com, 'EXAMPLE');
这不是我预期的情况,听起来像是你的邮件客户端出现了问题,请尝试另一个,看看是否是这种情况。你可以检查脚本生成的其中一封电子邮件的原始标题吗?这将有助于解释问题。看起来所有邮件客户端都会出现这种情况,请查看它正在定义回复到的两个地址的标题:reply to:Mailbox name,reply to name
我想知道为什么会发生这种情况。查找AddReplyTo()函数我还不能回答我自己的问题,但看看phpmailer代码,这是因为AddReplyTo代码出现在SetFrom代码之后,而phpmailer将SetFrom地址添加到replyto列表(如果尚未定义)。您可能使用早期版本。这不再是一个好答案。我尝试了不同的方法,phpmailer似乎比我狡猾的把戏更健壮。。。您的输入似乎错误“$this->AddReplyTo”应该是“$smth->AddReplyTo”。也就是说,不要使用普通单词(如$this),并始终检查拼写,在这种情况下,它的“addReplyTo”以小写字母“add”开头。事实上,这种错误行为在多年前已从PHPMailer中删除,因此此答案不再适用。这正是我所寻找的。非常感谢。你的回答对我帮助很大。非常感谢你。