Jump to content
Калькуляторы

Вопрос по SMTP

По электронной почте RFC достаточно запутанные и большие, пока не могу разобраться.

Допустим мне нужно отправить письмо нескольким получателям.

Гугловская почта при попытке отправить одним письмом сообщает "451-4.3.0 Multiple destination domains per transaction is unsupported."

Как это сделать правильно и по стандартам?

#Перечислять через запятую?
To: user1@domain1.ru, user2@domain2.ru
Cc: user3@domain1.ru
Bcc: user4@domain3.ru
#Каждый получатель в отдельном заголовке?
To: user1@domain1.ru
To: user2@domain2.ru
Cc: user3@domain1.ru
Bcc: user4@domain3.ru
#Или вообще отправлять в несколько заходов?

To: user1@domain1.ru
Cc: user3@domain1.ru

To: user2@domain2.ru

Bcc: user4@domain3.ru

 

Share this post


Link to post
Share on other sites

Гуголь как бы говорит вам, что надо в несколько транзакций отправлять, но надо смотреть какие у них ограничения на количество сессий.

Но вообще на мой взгляд, проще свой почтовик поднять и с него все отправить .

 

 

Share this post


Link to post
Share on other sites

Это резервный вариант, когда свой почтовик для скрипта недоступен.

А вообще, можно ли несколько заголовков указывать? Или все получатели должны быть перечислены в одном заголовке?

Share this post


Link to post
Share on other sites

Обычно в To: указывают одного, а в cc остальных;

Но это не обязательно можно по разному, зависит от того как MTA настроен.

 

 

Share this post


Link to post
Share on other sites

Вообщем скрипт более-менее довел до ума, работает хорошо.

Но есть две странности.

 

1. Привязанный домен в Google — domain.ru. Однако есть более удобный домен prov.ru, который добавлен как альяс и с которого через веб-интерфейс отправляется почта.

Используется учетная запись SNMP auto@domain.ru, однако я бы хотел, чтобы в отправляемых письмах адресатом был auto@prov.ru.

Но когда я отправляю письма, Google перезаписывает заголовок From и письма приходят от auto@domain.ru.

Никто с Google не сталкивался, как его уговорить? В письмах, отправляемых через веб-интерфейс, отправитель из домена @prov.ru, в заголовках есть From: auto@prov.ru и X-Sender-Auth с каким-то ключом. Ключ X-Sender-Auth я никак из скрипта узнать не могу, но возможно есть другие способы.

 

2. Что является транзакцией в SMTP? Возможно ли начать новую транзакцию, не разрывая соединения и не переподключаясь?

Пока что письма получают только адресаты из первого указанного домена, хотя я по всякому экспериментировал, в том числе с RSET и MAIL FROM.

 

Share this post


Link to post
Share on other sites
10 часов назад, alibek сказал:

Вообщем скрипт более-менее довел до ума, работает хорошо.

Но есть две странности.

 

1. Привязанный домен в Google — domain.ru. Однако есть более удобный домен prov.ru, который добавлен как альяс и с которого через веб-интерфейс отправляется почта.

Используется учетная запись SNMP auto@domain.ru, однако я бы хотел, чтобы в отправляемых письмах адресатом был auto@prov.ru.

Но когда я отправляю письма, Google перезаписывает заголовок From и письма приходят от auto@domain.ru.

Никто с Google не сталкивался, как его уговорить? В письмах, отправляемых через веб-интерфейс, отправитель из домена @prov.ru, в заголовках есть From: auto@prov.ru и X-Sender-Auth с каким-то ключом. Ключ X-Sender-Auth я никак из скрипта узнать не могу, но возможно есть другие способы.

 

2. Что является транзакцией в SMTP? Возможно ли начать новую транзакцию, не разрывая соединения и не переподключаясь?

Пока что письма получают только адресаты из первого указанного домена, хотя я по всякому экспериментировал, в том числе с RSET и MAIL FROM.

 

A Typical SMTP Transaction Scenario

 

This SMTP example shows mail sent by Smith at host USC-ISIF, to Jones, Green, and Brown at host BBN-UNIX. Here we assume that host USC-ISIF contacts host BBN-UNIX directly. The mail is accepted for Jones and Brown. Green does not have a mailbox at host BBN-UNIX.

 

         R: 220 BBN-UNIX.ARPA Simple Mail Transfer Service Ready
         S: HELO USC-ISIF.ARPA
         R: 250 BBN-UNIX.ARPA

         S: MAIL FROM:<Smith@USC-ISIF.ARPA>
         R: 250 OK

         S: RCPT TO:<Jones@BBN-UNIX.ARPA>
         R: 250 OK

         S: RCPT TO:<Green@BBN-UNIX.ARPA>
         R: 550 No such user here

         S: RCPT TO:<Brown@BBN-UNIX.ARPA>
         R: 250 OK

         S: DATA
         R: 354 Start mail input; end with <CRLF>.<CRLF>
         S: Blah blah blah...
         S: ...etc. etc. etc.
         S: .
         R: 250 OK

         S: QUIT
         R: 221 BBN-UNIX.ARPA Service closing transmission channel

 

т.е. транзакция заканчивается точкой, QUIT закрывает tcp соединение

Share this post


Link to post
Share on other sites

Точку и последующий RSET и MAIL FROM я делал, не помогало.

Переподключение помогает, но я думал обойтись без него.

Share this post


Link to post
Share on other sites
12 часов назад, alibek сказал:

Точку и последующий RSET и MAIL FROM я делал, не помогало.

Переподключение помогает, но я думал обойтись без него.

ну вот тут пишут конкретно по smtp,  здесь пример на жабе, телнетом попробовать для начала надо, может это конкретно гугл так себя ведет?

Share this post


Link to post
Share on other sites

У гугла только SMTPS, там телнетом затруднительно.

Спасибо за примеры, попробую поэкспериментировать.

Share this post


Link to post
Share on other sites

По поводу пункта 2 — дело то оказалось в другом.

Я отправлял письма на user@prov.ru и user@mail.ru — письмо доходило только на первый адрес, и я думал, что причина именно в том, что я в одной транзакции отправляю письма на разные почтовые домены.

Однако отправил на user@prov.ru и user@yandex.ru — и все прекрасно дошло за один раз.

 

P.S. С mail.ru тоже выяснилось. У меня там был фильтр, который удалял все письма, не адресованные на user@mail.ru полем "Кому", про поле "Копия" я забыл.

Вообщем все работает, скрипт доставляет все письма в одну сессию.

Ошибку 451-4.3.0 я перестал получать, уж не знаю почему.

Share this post


Link to post
Share on other sites
10 часов назад, alibek сказал:

У гугла только SMTPS, там телнетом затруднительно.

Спасибо за примеры, попробую поэкспериментировать.

>openssl s_client -starttls smtp -connect gmail-smtp-in.l.google.com:smtp
...
---
250 SMTPUTF8

 

Share this post


Link to post
Share on other sites

А ведь действительно.

Я как-то в эту сторону подумать не сообразил.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now