Я на самом деле начал думать об этом, потому что я забыл отправить кому-то письмо по электронной почте, которую я должен был отправить, и я хотел, чтобы он получил копию без двойной отправки всем остальным. Я просто отправил его ему, но мне все еще интересно.
Где обрабатываются списки CC и BCC в SMTP? Нужно ли управлять SMTP-сервером или это можно сделать на стороне клиента?
Благодарность!
Ответы:
Короче говоря - да, это возможно, если вы можете подключиться непосредственно к SMTP-серверу получателя. По причинам, изложенным Рупом в своем ответе, это может быть не особенно практично, и если вы находитесь в сети за брандмауэром, вы, возможно, вообще не сможете установить соединение с удаленным сервером через TCP-порт 25.
Предполагая, что это не относится к вам, вот деталь:
Когда вы (как почтовый клиент) подключаетесь к почтовому серверу получателя, все, о чем заботится этот сервер (для целей доставки), - это получатели, указанные в
RCPT TO:
. См. RFC2821 - Простой протокол пересылки почты . Он не различает тип получателя (to :, cc: или bcc :), он просто знает, что вы говорите «убедитесь, что получатель на вашем сервере получает это».Однако, что касается действительного почтового клиента получателя, именно заголовки в сообщении говорят, кем были все получатели сообщения. См. RFC2822 - Формат интернет-сообщения .
Другими словами, заголовки TO :, CC: и BCC: существуют для почтового клиента, тогда как фактическое распределение обрабатывается во время SMTP-диалога с почтовыми серверами.
Таким образом, вы можете на самом деле поговорить с SMTP-сервером, который выглядит примерно так:
Чистый эффект заключается в том, что он
user_i_missed_out@mydomain.co.uk
получает копию электронного письма, в котором он указан в списке копий, а также в качестве исходного адресатаrecipient_on_original@somewhere.com
и исходного получателя копииanother_recipient_on_original@somewhere.com
.Однако, поскольку мы никогда не подключались к почтовым серверам последних двух, они фактически не получают письмо во второй раз. И поскольку мы не можем изменить письма, которые уже были отправлены им, они никогда не заметят, что мы добавили другого получателя cc.
источник
Что происходит
т. е. если вы можете внедрить письмо в 3, доставить непосредственно на домашний SMTP-сервер пропущенного пользователя CC, то вы можете доставить ему CC без необходимости отправлять почту всем остальным. В частности, получатель BCC получит заголовки и текст сообщения, в которых они вообще не упоминаются (за исключением, возможно, заголовка X-Envelope-To).
С практической точки зрения, однако, намного легче отправить всем. Чтобы сделать это эффективно, вам нужно изменить почтовый клиент и локальный SMTP-сервер, чтобы он поддерживал поддельный список получателей или список исключений для отправки, который он обрабатывает во время расширения получателей.
источник
Эта проблема фактически решается существующей незавершенной работой IETF: Cosmetic Carbon Copy . К сожалению, я не знаю ни одного почтового клиента, который бы на самом деле внедрял CCC, так как черновик считается бессмысленной шуткой для Первоапрельского дня.
На самом деле, то, что вы спрашиваете, возможно, в основном потому, что содержание электронного письма фактически не влияет на то, кому письмо отправляется на уровне SMTP. Почтовые клиенты пишутся так, чтобы отправлять почту всем в полях «Кому», «CC» и «BCC», но они не обязаны делать это по какому-либо стандарту.
Обновлено: если быть точным, при отправке почты на SMTP-сервер отправитель использует команду RCPT, чтобы указать, на какие адреса электронной почты должно быть доставлено сообщение. Затем он отправляет содержимое письма с помощью команды DATA. SMTP-сервер не должен смотреть на контент. Должна быть возможность добавить одного получателя в строку заголовка CC сообщения и попросить SMPT-сервер доставить его только на этот один адрес.
источник
Если я правильно понимаю, что вы пытаетесь сделать, это отправить сообщение во второй раз, включая первоначальных получателей в заголовках To: и CC:, но только это сообщение было получено некоторыми дополнительными получателями. Как уже отмечалось в других ответах, это может быть выполнено вашим почтовым клиентом, который связывается с SMTP-сервером и указывает только одного получателя, но включает заголовки To: и Cc: исходного письма.
Apple Mail клиент имеет функциональные возможности, которые могут сделать это эффективно. Функция Redirect может быть найдена в меню Message или в контекстном меню сообщения. Эта функция предназначена для прозрачной пересылки электронной почты кому-либо без добавления Fwd: в строку темы и увеличения уровня цитаты, но ее также можно использовать в сообщениях, которые вы отправили ранее. Он сохраняет поля To / Cc / From исходного сообщения одинаковыми и добавляет новых получателей в заголовки Resent-To и Resent-CC. Единственными получателями повторно отправленного сообщения будут те, кого вы укажете при его составлении. Не совсем очевидно, как это работает, когда вы используете эту функцию, поэтому обязательно проверьте ее заранее.
источник
Это может быть разрешено / не разрешено для каждого клиента, но вы можете попробовать поместить что-то фальшивое (например, «; нераскрытые получатели ;;») в Кому и поместить всех в BCC. Затем повторение процесса сделает его похожим на одно и то же электронное письмо, если никто не будет внимательно следить за отметками времени, потоками сообщений и тому подобным.
источник