Domanda

Ho avuto questo annotato su alcuni del mio codice per un po ':

/**
 * 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
 */

Non mi ricordo dove l'ho preso da ( possibile fonte ), ma che non dovrebbe essere rilevante a questa domanda. In pratica, ogni volta che provo ad inviare un'email con BCC tramite SMTP gli indirizzi BCC non sono nascosti - ho letto tutta la RFC per il protocollo SMTP (un paio di anni fa) e non credo che mi manca nulla <. / p>

La cosa strana è, se mando una mail con BCC utilizzando il funzione incorporata mail() tutto funziona appena a destra e non ho idea del perché -. Vorrei rotolare il mio e-mail del mittente, ma non riesco a capire questo

Qualcuno può far luce in questo buio soggetto?

È stato utile?

Soluzione

indirizzi BCC non vengono spogliati fuori al server di posta elettronica di destinazione. Non è così che funziona.

Come SMTP funziona davvero

  • Il mittente invia un elenco di comandi RCPT TO al server SMTP, uno per ogni indirizzi e-mail di ricezione, e questo comando non distinguere se il destinatario è un normale Per, CC o BCC ricevitore tipo.
  • Abbastanza presto dopo aver chiamato il comando che indica al server SMTP che è il mittente, che è il server, e tutto il resto, solo allora il mittente chiamerà il comando DATA, in che conterrà il contenuto della e-mail - che consistono del intestazioni e-mail e il corpo - quello che sono ricevuti dal client di posta elettronica. Tra queste intestazioni e-mail sono i soliti dall'indirizzo, a indirizzo, indirizzo CC.
  • indirizzo
  • La BCC non viene mostrato al ricevitore, semplicemente perché non è stampato sotto il comando DATA, non perché il server SMTP di destinazione li strappato via. Il server SMTP di destinazione sarà solo fare riferimento al RCPT TO per la lista di indirizzi email che devono ricevere il contenuto della posta elettronica. Realmente non importa se il ricevitore è nel campo A, Cc o Ccn lista.
    Update (per chiarire). indirizzi e-mail BCC devono essere incluso nella lista dei comandi RCPT TO, ma l'intestazione BCC dovrebbe non da stampare sotto il comando DATA

Citando una parte del RFC che penso è rilevante per il vostro caso:

  

Si noti che i dati di posta elettronica include le voci di intestazione nota come Data, Oggetto, A, Cc, da [2].

srotolare la propria e-mail del mittente

Un paio di anni fa, io francamente credo, è abbastanza indietro nel tempo lungo per presumere che si ancora memorizzare end-to-end di RFC 821 . :)

Altri suggerimenti

Molto in ritardo, ma la risposta accettata è essenzialmente sbagliato.

Prima di tutto, SMTP non ha nulla a che fare con BCC. SMTP, come un protocollo, si occupa solo un percorso di ritorno (la richiesta MAIL), un elenco di destinatari (richiesta RCPT), ed i dati da trasferire (la richiesta DATA). Se si desidera inviare una e-mail a qualcuno tramite SMTP, quindi è necessario fornire il proprio indirizzo in una richiesta RCPT, punto.

Il contenuto di una e-mail - il DATA, in modo efficace - sono specificate completamente a parte, in RFC2822 . C'è un sacco di latitudine nel modo in cui BCC dovrebbero essere gestite. Le specifiche dà 3 modi di trattare BCC, e in solo uno di loro è il BCC spogliato durante la preparazione l'e-mail. Se io uso Thunderbird come client di posta elettronica, per esempio, e puntarlo a un server SMTP, e poi guardare il messaggio sulla linea, poi trovo che il BCC Thunderbird è passato (dal DATA SMTP), e la connessione SMTP invece contiene una richiesta RCPT standard per l'indirizzo bcc'ed. Così, Thunderbird converte BCC a RCPT, ma che non è l'unico modo per farlo.

Un altro posto per la maniglia BCC è al MTA - in altre parole, qualunque sia il vostro server SMTP client di posta elettronica sia puntato. Sendmail, per esempio, cerca tutti i To, Cc, e le linee Bcc nel DATA SMTP, e poi costruisce un elenco di indirizzi da quelle linee, e quindi Rimuove la linea Bcc. È possibile convincere Sendmail per mantenere il Bcc, se si vuole. Se sendmail non è il MTA di destinazione, quindi si connette a un altro MTA tramite SMTP, e inviare gli indirizzi dei destinatari tramite RCPT. In altre parole, se sendmail è il MTA di destinazione, e si ottiene un Bcc, si eliminerà fuori, contrariamente alla dichiarazione del Amry.

C'è anche una certa confusione nei commenti. È possibile specificare indirizzi RCPT a qualsiasi dominio, non solo un elenco di indirizzi nello stesso dominio. La MTA deve cercare i record MX per i domini di destinazione di capire dove inviare tutto. Le dichiarazioni google.com e yahoo.com sono sbagliati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top