SMTP: É possível alguém CC sem enviar o original?


23

Eu realmente comecei a pensar sobre isso porque eu esqueci de colocar alguém em um email que eu deveria mandar, e eu queria que ele pegasse uma cópia sem enviar para todos os outros. Acabei apenas encaminhando para ele, mas ainda estou curioso.

Onde as listas CC e BCC são tratadas no SMTP? Você precisaria controlar o servidor SMTP ou o lado do cliente?

Obrigado!

email  smtp 

5
Por que isso está sendo downvoted? É uma questão interessante depois de tudo ...

5
@ Aquiles - Os detalhes de se isso é ou não possível é absolutamente uma questão de programação IMHO. Ele é definido nos RFCs 2821 e 2822. No final do dia, todos os clientes de email são programados de acordo com essas definições, e todo e qualquer desenvolvedor aqui pode ter que se aprofundar no SMTP em algum momento. Eu certamente tenho.

3
Por favor, pare de votar para fechar isso como "pertence a SuperUser". Só porque o OP diz que foi a ação de enviar um e-mail que o levou a pensar sobre o problema, ele não faz a pergunta "não relacionada à programação". Se eu tivesse uma questão de implementação http que me ocorreu quando cliquei em um link da Web, seria "não relacionado à programação"? Não.

Respostas:


17

Em suma - sim, é possível se você pode se conectar diretamente ao servidor SMTP destinatários. Pelas razões Rup descreve em sua resposta talvez não seja especialmente prático, e se você estiver em uma rede por trás de um firewall, talvez não consiga obter uma conexão com um servidor remoto na porta TCP 25.

Supondo que isso não se aplique a você, então aqui está o detalhe:

Quando você (como cliente de e-mail) se conecta ao servidor de e-mail do destinatário, tudo o que o servidor deseja (para fins de entrega) são os destinatários especificados em RCPT TO:. Vejo RFC2821 - Simple Mail Transfer Protocol . Ele não diferencia entre o tipo de destinatário (para :, cc: ou bcc :), ele só sabe que você está dizendo "certifique-se de que o destinatário do seu servidor receba isso".

No entanto, no que diz respeito ao cliente de email real do destinatário, são os cabeçalhos na mensagem que dizem quem eram todos os destinatários da mensagem. Vejo RFC2822 - formato de mensagem da Internet .

Em outras palavras, os cabeçalhos TO :, CC: e BCC: estão disponíveis para o benefício do cliente de email, enquanto a distribuição real é manipulada durante a 'conversação' do SMTP com os servidores de email.

Então, você pode, de fato, ter uma conversa com um servidor SMTP que se pareça com isto:

C:>telnet aspmx.l.google.com 25
220 mx.google.com ESMTP f70si17620845wej.110
HELO myserver.mydomain.co.uk
250 mx.google.com at your service
MAIL FROM: <test@mydomain.co.uk>
250 2.1.0 OK f70si17620845wej.110
RCPT TO: <user_i_missed_out@mydomain.co.uk>
250 2.1.5 OK f70si17620845wej.110
DATA
354  Go ahead f70si17620845wej.110
To: recipient_on_original@somewhere.com
cc: another_recipient_on_original@somewhere.com, user_i_missed_out@mydomain.co.uk
Subject: My email

Hi - this is a test
.
250 2.0.0 OK 1277401976 f70si17620845wej.110
QUIT
221 2.0.0 closing connection f70si17620845wej.110


Connection to host lost.

O efeito líquido é que user_i_missed_out@mydomain.co.uk recebe uma cópia do email que o tem na lista de cc, bem como o destinatário original recipient_on_original@somewhere.come o destinatário original de cc another_recipient_on_original@somewhere.com.

No entanto, como na verdade nunca nos conectamos aos servidores de e-mail dos dois últimos, eles não recebem o e-mail na segunda vez. E, como não podemos alterar os e-mails que já foram enviados para eles antes, eles nunca perceberão que adicionamos outro destinatário de cc.


4

O que acontece é

  1. Você envia o email para o servidor SMTP local (ou do ISP)
  2. Seu servidor SMTP local expande a lista de destinatários e elabora a lista de servidores com os quais precisará falar para todos os destinatários. Remove o cabeçalho BCC da mensagem.
  3. Para cada servidor, ele se conecta e diz "Aqui está um email para os destinatários X, Y: aqui estão os cabeçalhos e o corpo da mensagem"

ou seja, se você puder injetar o e-mail em 3, enviar diretamente para o servidor SMTP home do usuário CC perdido, poderá entregar o CC sem precisar enviar o e-mail para todos os outros. Em particular, um destinatário do BCC receberá cabeçalhos de mensagens e corpo que não os mencionam (exceto talvez um cabeçalho 'X-Envelope-To').

Em termos práticos, porém, é muito mais fácil enviar para todos. Para fazer isso de maneira eficiente, é necessário modificar seu cliente de e-mail e o servidor SMTP local para oferecer suporte a uma lista de destinatários falsa ou a uma lista de exclusão que realmente não é enviada, processada durante a expansão do destinatário.


2

Este problema é realmente resolvido por um trabalho em andamento da IETF: Cópia de carbono cosmético . Infelizmente, eu não sei de nenhum cliente de email que realmente implemente CCCs, pois o rascunho é amplamente considerado uma piada sem sentido para o Dia da Mentira.

Com toda a seriedade, o que você está pedindo é possível, principalmente porque o conteúdo de um email não afeta realmente para quem o email é enviado na camada SMTP. Os clientes de email são gravados para enviar emails para todos nos campos Para, CC e CCO, mas não são obrigados a fazer isso por nenhum padrão.

Atualizada: Para ser preciso, ao enviar mensagens para um servidor SMTP, o remetente usa o comando RCPT para especificar a quais endereços de email uma mensagem deve ser entregue. Em seguida, ele envia o conteúdo do email com um comando DATA. O servidor SMTP não deve olhar para o conteúdo. Deve ser possível adicionar um destinatário à linha de cabeçalho CC de uma mensagem e solicitar ao servidor SMPT que entregue apenas esse endereço.


0

Se eu entendi isso corretamente, o que você está tentando fazer é enviar uma mensagem uma segunda vez, incluindo os destinatários originais nos cabeçalhos Para: e CC:, mas somente essa mensagem recebida por alguns destinatários adicionais. Como outras respostas notaram, isso pode ser feito pelo seu cliente de e-mail se comunicando com o servidor SMTP e especificando apenas um destinatário, mas incluindo os cabeçalhos To: e Cc: do e-mail original.

o Apple Mail O cliente tem uma funcionalidade que pode fazer isso de maneira eficiente. o Redirecionar função pode ser encontrada no menu Mensagem ou no menu contextual de uma mensagem. Esta função foi projetada para ser usada como uma forma de enviar um e-mail para alguém sem adicionar o Fwd: à linha de assunto e aumentar o nível de cotação, mas também pode ser usado em mensagens que você enviou anteriormente. Ele mantém os campos Para / Cc / De da mensagem original iguais e adiciona os novos destinatários nos cabeçalhos Resent-To e Resent-CC. Os únicos destinatários da mensagem reenviada serão aqueles que você especificar ao compor. Não é totalmente óbvio como isso funciona quando você faz uso do recurso, portanto, certifique-se de testá-lo de antemão.


-1

Pode ser permitido / proibido em uma base cliente por cliente, mas você pode tentar colocar algo falso (como ";; destinatários não revelados ;;") no Para e colocando todos no BCC. Então, a repetição do processo fará com que pareça o mesmo e-mail, desde que ninguém esteja observando de perto o suficiente para os registros de data e hora e as mensagens encadeadas.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.