Лучше использовать StringBuilder (это - несинхронизируемая версия; когда Вы создаете строки параллельно?) в эти дни, почти в каждом случае, но вот то, что происходит:
, Когда Вы используете + с двумя строками, это компилирует код как это:
String third = first + second;
К чему-то вроде этого:
StringBuilder builder = new StringBuilder( first );
builder.append( second );
third = builder.toString();
Поэтому для просто небольших примеров, это обычно не имеет значения. Но когда Вы создаете сложную строку, Вы часто добирались намного больше для контакта с, чем это; например, Вы могли бы использовать много различных операторов добавления или цикл как это:
for( String str : strings ) {
out += str;
}
В этом случае, новое StringBuilder
экземпляр и новое String
(новое значение out
- String
с неизменны) требуются в каждом повторении. Это очень расточительно. При замене этого синглом StringBuilder
средства можно просто произвести сингл String
и не заполнить "кучу" String
с, о которой Вы не заботитесь.
Адрес получателя в команде SMTP RCPT TO:
- это то, что почтовый транспорт использует для определения фактического получателя электронной почты. Адреса в заголовках «Кому:» и «Копия:» предназначены для чтения почтовыми программами, чтобы отображать их получателей, но на самом деле они не используются почтовым транспортом.
Большинство почтовых клиентов устанавливают одинаковые адреса в SMTP RCPT TO:
и MAIL FROM:
команды, которые они вставляют в заголовки To :, Cc: и From :, поэтому адреса "конверта" будут такими же, как адреса в заголовках.
Адреса конверта и заголовка обычно совпадают для большинства законных писем. Заметными исключениями являются адреса Bcc: и списки рассылки.
Спамеры часто подделывают адреса заголовков, чтобы избежать спам-фильтров.
Суть в том, что накладные расходы были бы слишком большими. Когда почтовые серверы обрабатывают миллионы сообщений в день, это намного быстрее во время сеанса SMTP (конверт), когда почтовый сервер может обрабатывать отдельные команды.
Если вы не использовали конверт, вам пришлось бы отправить всю сообщение на SMTP-сервере, прежде чем вы сможете узнать, нужно ли отклонить сообщение. Некоторые сообщения довольно большие (я видел более 100 мегабайт сообщений, работающих с изображениями ГИС).
Используя конверт, мы можем выдавать определенные 1-строчные команды для почтового сервера, и почтовый сервер сообщит нам, если мы успешно или нет, прямо сейчас.
Конверт используется SMTP-сервером, а заголовки сообщений используются программой чтения почты, как и все остальные
Что не было сказано, так это то, что RCPT TO:
используется для маршрутизации сообщения конкретному пользователю независимо от того, где имя пользователя появляется в заголовках. Пользователь не обязательно должен появляться в заголовках To:
или даже в Cc:
. Подумайте о Скрытая копия:
, где единственное, что знает получатель, - это то, от кого было отправлено сообщение. В этом случае Кому: Заголовки
и CC:
должны быть пустыми - отсюда слепая часть BCC. В другом случае, если в сообщении электронной почты есть пользователь, упомянутый в списке CC вместе с 10 другими пользователями, как маршрутизация SMTP может выбрать подходящего пользователя. Ответ заключается в том, что он использует линию RCPT
для маршрутизации сообщения.
Это также используется при маршрутизации через списки рассылки. Заголовок To: будет содержать адрес электронной почты списка рассылки. Система SMTP будет генерировать отдельные сообщения для каждого пользователя в списке, каждое с определенным RCPT TO: Ответ заключается в том, что он использует линию
RCPT
для маршрутизации сообщения.
Это также используется при маршрутизации через списки рассылки. Заголовок To: будет содержать адрес электронной почты списка рассылки. Система SMTP будет генерировать отдельные сообщения для каждого пользователя в списке, каждое с определенным RCPT TO: Ответ заключается в том, что он использует линию
RCPT
для маршрутизации сообщения.
Это также используется при маршрутизации через списки рассылки. Заголовок To: будет содержать адрес электронной почты списка рассылки. Система SMTP будет генерировать отдельные сообщения для каждого пользователя в списке, каждое с определенным RCPT TO:пользователь @ хост ...
конверт. В этом случае имя пользователя даже не появится ни в одном из других заголовков.