web-dev-qa-db-fra.com

Envoi de plusieurs CC et BCC avec PHP PEAR MAIL

J'ai un projet sur lequel je travaille dans mon travail et j'utilise le mailing de Pear's. Je dois utiliser smtp car nous devons être en mesure de tout suivre à partir de notre serveur de messagerie. Et les utilisateurs doivent pouvoir se connecter avant d'envoyer un e-mail d'entreprise. Nous ne pouvons pas utiliser la fonction mail de php pour cela.

Mon problème est que je ne peux pas trouver de documentation sur le net pour envoyer CC et Cci ainsi que pour envoyer plusieurs BCC. C'est très facile à faire avec la fonction mail de php. Tout ce que vous faites est de l'ajouter à la variable $ header comme ceci

$headers .= 'Cc: [email protected]' . "\r\n";
$headers .= 'Bcc: [email protected]' . "\r\n";

Ceci est mon code pour la fonction php où j'utilise PEAR

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

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

    //DEFAULT VALUE OF FROM 
    $from = "[email protected]";

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

}

J'ai essayé de trouver une solution à cela sans qu'aucune information réelle ne me revienne. Si quelqu'un pouvait m'aider avec cela, je serais grandement apprécié.

16
Dom

Avez-vous essayé d'ajouter plusieurs adresses "," séparées?

$headers['Cc'] = '[email protected], [email protected], [email protected]';

Cela pourrait fonctionner, selon ligne 218 dans la source .

18
powtac

Il y a un problème avec Cci cependant lorsque vous utilisez la fonction de messagerie PEAR: Thunderbird affiche l'en-tête Cci, donc le destinataire n'est pas masqué, ce qui est tout le point de Cci. Il est également affiché dans le À: liste d'en-tête (puisque vous devez inclure la liste Cci dans les destinataires).

Edit: RESOLU - J'ai trouvé sur un autre site que la solution consiste simplement à inclure la liste Cci dans les destinataires $, et non dans aucun des en-têtes. Ça marche!

Donc:

$bcc = "[email protected]";
$to = "[email protected]";
$headers = array(..other stuff.., 'To' => $to, ..rest of header stuff); // No Bcc header!
$recipients = $to.", ".$bcc;
$mail = $smtp->send($recipients, $headers, $message);

Edit # 2: Reconnaître ma source - http://raamdev.com/2008/adding-cc-recipients-with-pear-mail/

26
Jeff G

Vous avez juste besoin d'ajouter tout à, cc, bcc dans la variable $ destinataires. L'en-tête décide où envoyer.

4
Marghoob Suleman