Перейти к содержимому
Калькуляторы

Вопрос по 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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

 

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.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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 соединение

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

12 часов назад, alibek сказал:

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

 

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

10 часов назад, alibek сказал:

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

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.