2011-06-10 34 views
13

Tengo un proyecto que estoy trabajando en mi trabajo y estoy usando correo de pera. Necesito usar smtp porque necesitamos poder seguir todo desde nuestro servidor de correo. Y los usuarios deben poder iniciar sesión antes de enviar un correo electrónico basado en la compañía. No podemos usar la función de correo de php para esto.envío de múltiples CC y BCC con PHP PEAR CORREO

Mi problema es que no puedo encontrar ninguna documentación en la red para el envío de CC y CCO, así como el envío de múltiples CCB. Es muy fácil de hacer con la función de correo php '. Todo lo que hacer es añadirlo a la variable $ cabecera al igual que

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

Este es mi código de la función php donde uso PERA

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

} 

He estado tratando de encontrar una solución a esto con no hay información real regresando a mi manera. Si alguien pudiera ayudarme con esto, sería muy apreciado.

+0

No sé lo que mail.php que utiliza es, pero me gustaría sugerir el uso de PHPMailer (http: //phpmailer.worxware.com) o Swiftmailer (http://swiftmailer.org) en su lugar. –

+2

¿Ha intentado agregar todas las direcciones de correo electrónico incluidas las direcciones bcc y cc a la lista de destinatarios y luego especificar las direcciones cc y bcc en los encabezados? – Jrod

+0

Además, ¿puedes enviar correos desde el sistema? Su host podría estar bloqueando el puerto 25 – Colum

Respuesta

3

sólo tiene que añadir a todo, CC, CCO en $ destinatarios variables. El encabezado decide dónde enviar.

25

Hay un problema con Bcc cuando se utiliza la función PEAR Mail: Thunderbird muestra el encabezado Bcc, por lo que el destinatario no está oculto, que es el punto completo de Bcc. También se muestra en la lista de encabezado A: (ya que debe incluir la lista CCO en destinatarios).

Editar: RESOLVER - He encontrado desde otro sitio que la solución es sólo para incluir la lista de CCO en los $ destinatarios, y no en cualquiera de las cabeceras. ¡Funciona!

Por lo tanto:

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

Edición # 2: Reconociendo mi fuente - http://raamdev.com/2008/adding-cc-recipients-with-pear-mail/

+1

Gracias por el crédito fuente. :) (me doy cuenta de que mi agradecimiento es un poco tarde, pero mejor tarde que nunca!) –

+0

esta es la mejor respuesta. Yo también lo probé y lo hice funcionar. Hasta ahora (y esta respuesta) no pude resolver el problema de bcc. –

+1

Sí, pero eso no es una verdadera CBC, ¿verdad? Simplemente está enviando múltiples mensajes de correo electrónico. –