问题描述
我正在尝试使用密件抄送发送电子邮件。我可以很容易地通过密件抄送发送它,但这并不是我想要的。有效的代码是
$message = new Mail_mime();
$message->setTXTBody($_text);
...
$body = $message->get();
$thisSubject = $subject;
if (isset($_POST['_cc_sender'])) {
$extraheaders = array("Bcc"=>$from_email,"From"=>$from_email,"Subject"=>$thisSubject);
} else {
$extraheaders = array("From"=>$from_email,"Subject"=>$thisSubject);
}
$headers = $message->headers($extraheaders);
$mail_obj = Mail::factory("mail");
$mail_obj->send($to,$headers,$body);
电子邮件表单可以设置“_cc_sender”以让提交者收到一份副本。问题是暴露了 $to
地址。为了隐藏它,我想我只需将电子邮件发送给提交者,然后将密件抄送给预期的收件人,如下所示:
$message = new Mail_mime();
$message->setTXTBody($_text);
...
$body = $message->get();
$thisSubject = $subject;
if (isset($_POST['_cc_sender'])) {
$extraheaders = array("Bcc"=>$to,"Subject"=>$thisSubject);
$send_to = $from_email;
} else {
$extraheaders = array("From"=>$from_email,"Subject"=>$thisSubject);
$send_to = $to;
}
$headers = $message->headers($extraheaders);
$mail_obj = Mail::factory("mail");
$mail_obj->send($send_to,$body);
但是,当我这样做时,我最终收到了发送到 $from_email
的两条消息。一个似乎是密件抄送,因为我的(Thunderbird)消息过滤器对它们的处理方式不同 - 将它们移到子文件夹中。
需要明确的是,如果我只使用密件抄送,提交者会收到密件副本,而预期收件人会收到电子邮件。但是,当我尝试切换谁获得密件抄送时,两封电子邮件都会发送给提交者。
如果我将密件抄送切换为抄送,我会看到两个标题都设置正确(它将转到 $from_email
,抄送到 $to
)。但是,电子邮件仍会发送到 $from_email
两次。
我已经做了var_dumps
我能想到的所有事情,他们只是展示了我的期望。据我所知,“to:”字段/收件人设置在 $mail_obj->send
中 - 它没有显示在我的 var_dumps
中 - 所以我不知道为什么发送会出错。
我发现的一件事是将 Mail::factory
参数从 "mail"
更改为 "sendmaiL"
已删除第二封电子邮件。现在我只是把它送到 $send_to
地址。这表明问题出在邮件程序上,它可能会奇怪地处理标题。
我看过另一篇文章,其中建议收件人列表和标题之间应该有所不同。当使用“sendmail”(而不是“mail”)时,这似乎是正确的。使用“sendmail”时,收件人列表($mail_obj->send
中的第一个参数)不会显示在标题中——它全是“密件抄送”。将 $from_email
添加到 $send_to
列表实现了我想要的结果:
$message = new Mail_mime();
$message->setTXTBody($_text);
...
$body = $message->get();
$thisSubject = $subject;
if (isset($_POST['_cc_sender'])) {
$send_to = $from_email . "," . $to;
} else {
$send_to = $to;
}
$extraheaders = array("From"=>$from_email,"Subject"=>$thisSubject);
$headers = $message->headers($extraheaders);
$mail_obj = Mail::factory("sendmail");
$mail_obj->send($send_to,$body);
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)