发送多个CC';使用PHP PEAR MAIL的s和BCC

发送多个CC';使用PHP PEAR MAIL的s和BCC,php,email,pear,Php,Email,Pear,我有一个项目,我在我的工作,我正在使用梨的邮件。我需要使用smtp,因为我们需要能够跟踪邮件服务器上的所有内容。用户需要能够在发送基于公司的电子邮件之前登录。我们不能使用php的邮件函数来实现这一点 我的问题是,我在网上找不到任何发送抄送和密件抄送以及发送多个密件抄送的文档。使用php的邮件功能非常容易。您只需将其添加到$header变量,如下所示 $headers .= 'Cc: birthdayarchive@example.com' . "\r\n"; $headers .= 'Bcc:

我有一个项目,我在我的工作,我正在使用梨的邮件。我需要使用smtp,因为我们需要能够跟踪邮件服务器上的所有内容。用户需要能够在发送基于公司的电子邮件之前登录。我们不能使用php的邮件函数来实现这一点

我的问题是,我在网上找不到任何发送抄送和密件抄送以及发送多个密件抄送的文档。使用php的邮件功能非常容易。您只需将其添加到$header变量,如下所示

$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";
这是我使用PEAR的php函数的代码

function sender_mail($email,$subject,$mailmsg, $cc, $bcc){

    include("Mail.php");
    /* mail setup recipients, subject etc */

    //DEFAULT VALUE OF FROM 
    $from = "noreply@addata.net";

    //GET EMAIL OF USER
    $result = mysql_query("SELECT email, email_pass FROM u_perinfo WHERE user_id = '$_SESSION[uid]'")
    or die("There was an error when grabbing your email information");
    if(mysql_num_rows($result) > 0){
        $row = mysql_fetch_array($result);
        if($row[0] != ''){
            $from = $row[0];
        }
        $email_pass = $row[1];
    }

    $recipients = "$email";
    $headers["From"] = "$from";
    $headers["To"] = "$email";
    $headers["Subject"] = $subject;
    $headers["Cc"] = "$cc";  //Line added by Me to see if it works
    $headers["Bcc"] = "$bcc";  //Line added by Me to see if it works


    //$mailmsg = "Welcome to Addatareference.com! \r\n\r\nBelow is your unique login information.  \r\n\r\n(Please do not share your login information.)$accountinfo";
    /* SMTP server name, port, user/passwd */
    $smtpinfo["host"] = "smtp.emailsrvr.com";
    $smtpinfo["port"] = "25";
    $smtpinfo["auth"] = true;
    $smtpinfo["username"] = "$from";
    $smtpinfo["password"] = "$email_pass";
    /* Create the mail object using the Mail::factory method */
    $mail_object =& Mail::factory("smtp", $smtpinfo);
    /* Ok send mail */
    $mail_object->send($recipients, $headers, $mailmsg);

}

我一直在试图找到一个解决办法,没有真正的信息回来我的方式。如果有人能帮我解决这个问题,我将不胜感激。

您是否尝试添加多个地址

$headers['Cc'] = 'cc@example.com, bb@example.com, dd@ex.com';

根据。

您只需在$recipients变量中将所有内容添加到、抄送、密件抄送即可。标题决定发送到哪里

使用PEAR邮件功能时,密件抄送有一个问题:Thunderbird显示密件抄送头,因此收件人不隐藏,这是密件抄送的全部要点。它还显示在收件人:标题列表中(因为您必须在收件人中包含密件抄送列表)

编辑:已解决-我从另一个站点发现,解决方案只是将密件抄送列表包含在$recipients中,而不是任何标题中。它起作用了

因此:


编辑#2:确认我的来源-

不知道您使用的Mail.php是什么,但我建议改用PHPMailer()或Swiftmailer()。您是否尝试过将所有电子邮件地址(包括密件抄送地址和抄送地址)添加到收件人列表中,然后在标题中指定抄送地址和密件抄送地址,您能从系统发送邮件吗。您的主机可能阻塞了端口25。我很确定@jrod在这里有答案。把你要发送到的每个地址都放在收件人列表中,并用标题区分“收件人”、“抄送”和“密件抄送”。这似乎是一种非常奇怪的地址选择结构。我花了很长时间才弄明白到底发生了什么。我想我可以用rtfm。是的,很好。谢谢你的信用来源。:)(我意识到我的感谢有点晚了,但迟做总比不做强!)这是更好的答案。我也测试了一下,让它正常工作。到目前为止(以及这个答案),我无法解决密件抄送的问题。是的,但这不是一个真正的密件抄送,对吗?它只是发送多封电子邮件。
$bcc = "foo@example.com";
$to = "bar@example.com";
$headers = array(..other stuff.., 'To' => $to, ..rest of header stuff); // No Bcc header!
$recipients = $to.", ".$bcc;
$mail = $smtp->send($recipients, $headers, $message);