Pregunta

He tenido esta anotado en algunos de mi código por un tiempo:

/**
 * Add a BCC.
 *
 * Note that according to the conventions of the SMTP protocol all
 * addresses, including BCC addresses, are included in every email as it
 * is sent over the Internet. The BCC addresses are stripped off blind
 * copy email only at the destination email server.
 *
 * @param string $email
 * @param string $name
 * @return object Email
 */

No recuerdo dónde lo saqué a partir de ( posible fuente ), pero que no debe ser relevante para esta pregunta. Básicamente, cada vez que intento enviar un correo electrónico con los CCB a través de SMTP las direcciones BCC no se ocultan - He leído todo el RFC para el protocolo SMTP (hace un par de años) y no creo que me falta nada <. / p>

Lo extraño es que, si envío un correo electrónico con los CBC utilizando el función integrada de mail() todo funciona a la perfección y no tengo idea de por qué -. me gustaría rodar mi propio remitente de correo electrónico, pero no llego a entender esto

Por favor alguien puede arrojar algo de luz en este oscuro tema?

¿Fue útil?

Solución

El BCC direcciones no se quitaron en el servidor de correo electrónico de destino. Así no es como funciona.

¿Cómo funciona realmente SMTP

  • El emisor enviará una lista de comandos RCPT TO al servidor SMTP, uno para cada dirección de correo electrónico del receptor, y este comando no distingue si el receptor es una a la normalidad, CC o CCO tipo de receptor.
  • Muy pronto después de llamar al comando que indica al servidor SMTP quién es el remitente, que es el servidor, y todo lo demás, sólo entonces el remitente llamar al comando DATA, en el que contendrá el contenido del correo electrónico - que consisten en las encabezados de correo electrónico y el cuerpo - la que son recibidos por clientes de correo electrónico. Entre estos encabezados de correo electrónico son los habituales de la dirección, de dirección, dirección de CC.
  • Dirección
  • El BCC no se muestra al receptor, simplemente porque no se imprime bajo el mando DATA, no porque el servidor SMTP de destino los despojó de distancia. El servidor SMTP de destino solo se referirá a la RCPT TO para la lista de direcciones de correo electrónico que deben recibir el contenido del correo electrónico. Realmente no importa si el receptor está en la lista de CC o CCO A,.
    Actualizar (aclarar):. direcciones de correo electrónico de CCC deben estar inscritos en la lista de comandos RCPT TO, pero la cabecera BCC debe no imprimirse bajo el mando DATA

Citando una parte de la RFC que creo que es relevante para su caso:

Tenga en cuenta que los datos de correo incluye los elementos de encabezado memorando como Fecha, Asunto, Para, Cc De [2].

El despliegue de su propio correo electrónico del remitente

Hace un par de años, yo creo, francamente, es bastante atrás en el tiempo a largo suponer que todavía memorizar extremo a extremo de RFC 821 . :)

Otros consejos

Muy tarde, pero la respuesta aceptada es esencialmente equivocado.

En primer lugar, SMTP no tiene nada que ver con BCC. SMTP, como un protocolo, sólo se refiere a una vía de retorno (la solicitud MAIL), una lista de destinatarios (la solicitud RCPT), y los datos a transferir (la solicitud DATA). Si desea enviar un correo electrónico a alguien a través de SMTP, entonces usted tiene que suministrar su dirección en una solicitud RCPT, y punto.

El contenido de un correo electrónico - la DATA, efectivamente - se especifica completamente por separado, en RFC2822 . Hay una gran cantidad de flexibilidad en la forma en BCC deben ser manejados. La especificación da 3 maneras de manejar BCC, y en sólo uno de ellos es el BCC despojado a cabo mientras se prepara el correo electrónico. Si utilizo Thunderbird como cliente de correo electrónico, por ejemplo, y el punto a un servidor SMTP, y luego ver el mensaje en la línea, entonces me parece que el BCC Thunderbird ha ido (del DATA SMTP), y la conexión SMTP en cambio contiene una solicitud RCPT estándar para la dirección de bcc'ed. Así, Thunderbird convierte BCC a RCPT, pero eso no es la única manera de hacerlo.

Otro lugar para BCC mango está en el MTA - en otras palabras, cualquier servidor SMTP su cliente de correo se señaló. Sendmail, por ejemplo, busca en todos los To, Cc, y líneas Bcc en la DATA SMTP y, a continuación construye una lista de direcciones de esas líneas, y después elimina la línea Bcc. Puede persuadir a Sendmail para mantener el Bcc si quieres. Si sendmail no es el destino MTA, a continuación, se conecta a otro MTA a través de SMTP, y enviar las direcciones de los destinatarios a través de RCPT. En otras palabras, si sendmail es el MTA de destino, y se pone un Bcc, se tira hacia fuera, contrariamente a la afirmación de Amry.

También hay cierta confusión en los comentarios. Puede especificar direcciones RCPT a cualquier dominio, no sólo una lista de direcciones en el mismo dominio. La MTA tiene que buscar los registros MX de los dominios de destino para resolver dónde enviar todo. Las declaraciones de Google.com y Yahoo.com están equivocados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top