Отправка нескольких CC и BCC с PHP PEAR MAIL - PullRequest
15 голосов
/ 10 июня 2011

У меня есть проект, над которым я работаю на своей работе, и я использую почтовую рассылку Pear. Мне нужно использовать SMTP, потому что мы должны иметь возможность отслеживать все с нашего почтового сервера. И пользователи должны иметь возможность войти в систему, прежде чем отправлять электронную почту компании. Мы не можем использовать функцию почты php для этого.

Моя проблема в том, что я не могу найти в сети какую-либо документацию для отправки CC и Bcc, а также для отправки нескольких BCC. Это очень легко сделать с помощью php 'mail funciton. Все, что вы делаете, это добавляете его в переменную $ header как

$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";

Это мой код для функции php, где я использую PEAR

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);

}

Я пытался найти решение этой проблемы без реальной информации, возвращающейся мне на пути. Если бы кто-то мог помочь мне с этим, я был бы очень признателен.

Ответы [ 3 ]

26 голосов
/ 07 мая 2012

Существует проблема с Bcc, хотя при использовании функции PEAR Mail: Thunderbird отображает заголовок Bcc, поэтому получатель не скрыт, что и составляет смысл Bcc. Он также отображается в списке заголовков To: (поскольку вы должны включить список скрытой копии в получателей).

Редактировать: решено - я обнаружил на другом сайте, что решение состоит в том, чтобы просто включить список скрытой копии в список получателей, а не в заголовки. Это работает!

Таким образом:

$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);

Редактировать # 2: Подтверждение моего источника - http://raamdev.com/2008/adding-cc-recipients-with-pear-mail/

18 голосов
/ 11 июня 2011

Вы пытались добавить несколько адресов "," разделенных?

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

Это может работать, согласно строке 218 в источнике .

4 голосов
/ 17 августа 2011

Вам просто нужно добавить все в, cc, bcc в переменную $ receients. Заголовок решает, куда отправить.

...