Cómo usar CC y BCC con PHPMailer

Mailbox with enveloppes isolated on white.

¿Qué es PHPMailer?

Comencemos por el principio: PHPMailer es una librería que permite enviar emails desde PHP (Podés consultar algunas opciones acá).

Si bien no es la única (De hecho, mi preferida es SwiftMailer), su principal ventaja es que suele estar disponible en entornos de hosting compartido, con lo cual, su uso es bastante popular.

¿Cómo se usa?

Su uso es bastante simple: basta con crear una instancia de PHPMailer para tener acceso a una gran cantidad de funcionalidad:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require_once 'vendor/autoload.php';

$mail = new PHPMailer();

$mail->isSMTP();                                      
$mail->Host = 'mail.google.com';
$mail->SMTPAuth = true;                               
$mail->Username = 'usuario@gmail.com';                
$mail->Password = 'miSuperPassword';                           
$mail->SMTPSecure = 'tls';                            
$mail->Port = 587;                                   

$mail->setFrom('acedmy@leewayweb.com', 'Leeway Academy');
$mail->addAddress('juan.perez@yahoo.com', 'Juan Perez'); 

$mail->Subject = 'Este es el asunto';
$mail->Body    = 'Este el cuerpo del mensaje';

if(!$mail->send()) {
    echo 'No se pudo enviar el mensaje...'.$mail->ErrorInfo;
} else {
    echo 'El mensaje se envió!';
}

Claro que, antes de poder usarla, la librería debe estar instalada… En este ejemplo vemos cómo se utiliza asumiendo que se ha usado composer para incorporarla al proyecto.

Para agregar otros destinatarios en copia (CC) o copia oculta (BCC), simplemente debemos agregar estas líneas:

$mail->addCC('copiado@hotmail.com');
$mail->addBCC('copia_oculta@outlook.com');

Antes de realizar el envío.

Por útlimo, como siempre, no hay que olvidar el $mail->send().

¿Alguna pregunta? ¡Deja un comentario!

 

mchojrin

Por mchojrin

Ayudo a desarrolladores PHP a acceder mercados y clientes más sofisticados y exigentes

10 comentarios

    1. Hola Aníbal, no estoy seguro de comprender lo que quieres hacer… ¿estás tratando de modificar el subject de un email para aquellas personas que reciban una copia? De ser así, me parece que no se trataría de cc ni bcc si no de enviar otros correos cuyo contenido sea el mismo.

      Saludos,

  1. Buenas noches estoy realizando una pruebas de envió con copia pero al usar $mail->addBCC(‘email@dominio.com’); la copia oculta no llega a su destino pero si utilizo $mail->addCC(‘email@dominio.com’) esta copia si llega. pero necesito enviar copia oculta, pero no se por que razón no llega la copia oculta a su destino.

    1. Hola!

      Es raro lo que comentas… será que está cayendo en spam el correo? ¿A qué dominio estás enviando? ¿Qué sistema operativo usas?

      Otra cosa para verificar es qué sistema de envíos subyacente usas… ¿es SMTP, mail…?

      Saludos!

      1. NO se van a spam, el dominio al que envió es al de la empresa el cual funciona perfecto, y el sistema operativo del servidor es linux además realice pruebas usando solo la función mail() de php y usando la librería phpMailer y en ninguno de los dos casos me funciono, lo raro también es que no arroja error pero los correos no llegan pero si pruebo solo copia normal hay si llegan. por otro lado estube leyendo en otras paginas y algunas personas mensionan que la funcion «Bcc» solo funciona en win32

        1. Yo probaría enviar a otro dominio diferente (yahoo suele ser bueno para las pruebas) a ver qué pasa.

          Algo que podría afectar es el remitente, ¿está bien configurado?

          Otra cosa que podrías probar es usar un servicio de SMTP o, mejor aún si es posible, cambiarte a SwiftMailer

  2. Buenas tardes, estoy intentando implementar un WebMail pero no sé como podría hacer la función de reenviar, ni la de leer los mensajes que han sido enviados, me urge prisa y sería mu agradecido si me puede ayudar

    1. Hola Manuel:

      Mi recomendación es que guardes en tu servidor todos los mensajes que entran y salen (salvo que los usuarios decidan borrarlos, claro) y uses funciones de envío de mail (Como PHPMailer, SwiftMailer o similar) para comunicarte con otros servicios.

      De esa forma, el re-enviar simplemente sería enviar un mensaje que ya tienes disponible en tu base de datos (es decir, no sería diferente de enviar un email creado desde 0) y leer los mensajes enviados sería también simple, ya que están guardados en tu base de datos.

      ¿Cómo implementaste la recepción de mensajes desde cualquier dirección?

¿Te quedó alguna duda? Publica aca tu pregunta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.