To
, From
, CC
и даже BCC
- это просто заголовки в электронном письме. Вы можете добавить все, что захотите, по крайней мере, если вы используете библиотеку, которая дает вам контроль над заголовками в вашем письме.
Давайте рассмотрим очень простой пример использования telnet для отправки электронной почты.
Сначала найдите, какие почтовые серверы обрабатывают почту для домена (здесь gmail.com), например, с помощью host
:
robert@here:~$ host gmail.com
gmail.com has address 142.250.115.19
gmail.com has address 142.250.115.83
gmail.com has address 142.250.115.17
gmail.com has address 142.250.115.18
gmail.com has IPv6 address 2607:f8b0:4000:803::2005
gmail.com mail is handled by 5 gmail-smtp-in.l.google.com.
gmail.com mail is handled by 10 alt1.gmail-smtp-in.l.google.com.
gmail.com mail is handled by 20 alt2.gmail-smtp-in.l.google.com.
gmail.com mail is handled by 30 alt3.gmail-smtp-in.l.google.com.
gmail.com mail is handled by 40 alt4.gmail-smtp-in.l.google.com.
Я буду использовать первый указанный почтовый сервер, gmail-smtp-in.l.google.com. Согласно RFC 5321 вы можете подключиться к почтовому серверу и отправить электронное письмо следующим образом:
robert@here:~$ telnet gmail-smtp-in.l.google.com 25
Trying 142.250.138.27...
Connected to gmail-smtp-in.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP v9si1145647ooe.55 - gsmtp
Каждая строка, начинающаяся с цифр, представляет собой ответ SMTP-сервера. Код в 200 - это нормально, 400 - временная ошибка, а 500 - постоянная ошибка.
Затем вы говорите привет, или, скорее, расширенное приветствие (ehlo), и сервер отвечает со всеми поддерживаемыми им расширениями:
ehlo me
250-mx.google.com at your service, [1.2.3.4]
250-SIZE 157286400
250-8BITMIME
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
Затем вы сообщаете серверу, что хотите отправить электронное письмо, с помощью команды mail from:
и сообщаете ему адрес электронной почты отправителя SMTP-конверта. Если сервер принимает электронное письмо, он снова отвечает тем, что начинается с кода 200 с.
mail from: <[email protected]>
250 2.1.0 OK v9si1145647ooe.55 - gsmtp
Затем вы указываете получателя конверта SMTP, и сервер снова принимает его с кодом 200s:
rcpt to: <[email protected]>
250 2.1.5 OK v9si1145647ooe.55 - gsmtp
Далее идет команда data
, которую сервер подтверждает кодом 354, предлагая вам ввести сообщение:
data
354 Go ahead v9si1145647ooe.55 - gsmtp
Электронное письмо состоит из заголовков, затем пустой строки, а затем тела письма. Пример ниже очень упрощен, но должен работать. Вы указываете From:
заголовок, To:
, может быть, CC:
или BCC:
(sic!) Заголовок и, конечно, Subject:
, Date:
и другие.
From: me
To: you
CC: me again
Subject: test
Hello, this is a test.
Здесь вы видите 4 заголовка (From
, To
, CC
и Subject
), за которыми следует пустая строка, разделяющая заголовки и тело письма, а затем тело, которое представляет собой всего лишь одну строку.
Завершите электронное письмо одной точкой в отдельной строке:
.
250 2.0.0 OK 1619472375 v9si1145647ooe.55 - gsmtp
Теперь сервер принял сообщение и должен либо доставить, либо отклонить его. Теперь вы можете отправить другое электронное письмо (начните с mail from:
выше) или закончите диалог:
quit
221 2.0.0 closing connection v9si1145647ooe.55 - gsmtp
Connection closed by foreign host.
Как видите, я ввел [email protected]
в качестве адреса электронной почты получателя в конверте SMTP. Это то, что имеет значение, именно сюда отправляется электронное письмо. Ничто не мешает вам добавлять людей в строки CC:
или BCC:
, даже не указав для них rcpt-to:
. Они не получат электронное письмо, но будут смотреть на получателей, которые действительно получают электронное письмо, что эти люди также должны его получить. Ничто не мешает вам добавить в заголовок To:
адрес электронной почты, отличный от того, который вы использовали в команде rcpt-to:
.
Обычно MUA добавляет заголовок To:
или CC:
, который соответствует адресу конверта SMTP, но это не обязательно. Однако отсутствие некоторых из этих заголовков или наличие заголовков, не соответствующих командам конверта SMTP, может принести вам несколько очков спама.
Во многих случаях вам не нужно имя пользователя или пароль. И это намеренно. Например, вы являетесь пользователем Gmail и хотите отправить что-то кому-нибудь на yahoo.com. Вам потребуется ваше имя пользователя и пароль Gmail для входа в свою учетную запись Gmail, но вам не нужна учетная запись на yahoo.com для отправки электронной почты кому-то с учетной записью yahoo.com. Если бы вам требовалось иметь логин на каждом почтовом сервере, на который вы когда-либо хотели бы отправлять сообщения, вам бы потребовалось безумное количество имен пользователей и паролей! Это преимущество электронной почты, она открыта, бесплатна, каждый может запустить сервер и отправлять и получать электронную почту.
Du kannst Dir die Welt machen, wie sie Dir gefällt. ;-)
Если все это звучит странно, имейте в виду, что электронная почта - это система, которой уже почти 50 лет, с защитой, вложениями и символами, отличными от ascii, закрепленными на протяжении многих лет, с постоянной заботой об обратной совместимости. Но если бы вы не могли подключиться по telnet к другим почтовым серверам, вы бы никогда не смогли никому отправить электронное письмо. Как человек, управляющий почтовым сервером, вы не можете создать учетные записи для всего мира, чтобы иметь возможность получать электронную почту от всех.
Когда вы делаете это программно, это зависит от того, какую библиотеку вы используете. Большинство библиотек устанавливают для заголовков значения по умолчанию и позволяют при необходимости переопределять заголовки.
person
Robert
schedule
26.04.2021
To
,From
,CC
и дажеBCC
- это просто заголовки в электронном письме. Вы можете вставить все, что захотите, по крайней мере, если вы используете библиотеку, которая дает вам контроль над заголовками в вашем письме. Для stackoverflow лучше всего включить код, который вы пробовали, с объяснением того, где вы застряли. Что происходит, когда вы запускаете код, чего вы ожидали вместо этого? Вы упомянули Thunderbird. Stackoverflow предназначен только для вопросов программирования, а не для общего использования программного обеспечения. Тем не менее, если у вас есть надстройка Thunderbird, это, безусловно, по теме. Опять же, нам нужно увидеть код. См. Также Как задать вопрос. - person Robert   schedule 26.04.2021data
вы можете ввести любые заголовки, которые захотите. Конечно, вы можете активировать спам-фильтры, когда ваши заголовки и SMTP-конверт не совпадают, но передача заголовкаTo:
без включения этого электронного письма в конверт, вероятно, прекрасна, особенно если получатели находятся в разных доменах. - person Robert   schedule 27.04.2021