带有 bcc 的 php pear 电子邮件

问题描述

我正在尝试使用密件抄送发送电子邮件。我可以很容易地通过密件抄送发送它,但这并不是我想要的。有效的代码

$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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...