16. 1С почта (Объект: ИнтернетПочта)

Отправить письмо

//ПОЧТОВЫЙ ПРОФИЛЬ


Профиль = Новый ИнтернетПочтовыйПрофиль;

Профиль.Пользователь = "xxx@xxxx.xx";

Профиль.Пароль = "xxxxxx";

// SMTP

Профиль.ИспользоватьSSLSMTP = Истина;

Профиль.АдресСервераSMTP = АдресСервера;

Профиль.ПортSMTP = Порт;

Профиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию;

Профиль.ПарольSMTP = "xxxxxx";

Профиль.ПользовательSMTP = "xxx@xxxx.xx";

//ПОЧТОВОЕ СООБЩЕНИЕ


Сообщение = Новый ИнтернетПочтовоеСообщение;

Сообщение.Отправитель = EmailОтправителя;

Сообщение.Тема = ЗаголовокСообщения;

Сообщение.Тексты.Добавить(ТекстСообщения, ТипТекстаПочтовогоСообщения.HTML);

Сообщение.Организация = "The company";

Адрес = Сообщение.Получатели.Добавить(EmailПолучателя);

Адрес.ОтображаемоеИмя = ИмяПолучателя;


// Присоединить к сообщению файл

Сообщение.Вложения.Добавить(ПутьКФайлу);



// ПОЧТОВЫЙ СЕРВЕР


Почта = Новый ИнтернетПочта();


//Подключение к серверу

Попытка

Почта.Подключиться(Профиль);

Исключение

Сообщить("Ошибка при подключении к серверу: " + ОписаниеОшибки());

Возврат Ложь;

КонецПопытки;


//Отправка письма

Попытка

Почта.Послать(Сообщение);

Исключение

Почта.Отключиться();

Сообщить("Ошибка при отправке письма: " + ОписаниеОшибки());


КонецПопытки;


Почта.Отключиться();


Код отклика SMTP 550

Источник: https://its.1c.ru/db/metod8dev/content/2356/hdoc

Первые SMTP-серверы позволяли любому почтовому клиенту рассылать почту другим почтовым серверам, выступая в качестве промежуточного транспорта. В начальной версии протокола SMTP авторизация клиента полностью отсутствовала; позднее, в протоколе SMTP появилась авторизация, что несколько улучшило ситуацию. Такая возможность породила понятие спама. Спам (spam) – нежелательная массовая принудительная рассылка бесполезной информации (чаще всего рекламы). Сейчас же, когда принудительные рассылки приобрели огромный масштаб, администраторам серверов приходится придумывать различные ухищрения для пресечения таких рассылок в целях экономии трафика и процессорного времени. Результатом таких ухищрений часто является возвращаемая почтовым сервером ошибка с кодом 550.

Перечислим несколько типичных ситуаций, при которых возвращается ошибка 550.

    • Иногда сервер отправляет письма всем, кто указан в получателях, но при условии, что адрес отправителя принадлежит доменной зоне сервера (такой сервер еще называют сервером исходящей почты). В этом случае получается, что через сервер нельзя послать письмо постороннему человеку. Пустой адрес отправителя по стандарту является правильным и сервер не должен отвергать такое письмо. Однако не многие сервера прислушиваются к этому правилу и, в целях борьбы со "спамерами", возвращают ошибку с кодом 550 такого вида:

Почтовый ящик не доступен (SMTP error code 550, not local sender over smtp)

Для устранения этой ошибки, нужно присвоить адрес отправителю, принадлежащему тому же домену, что и почтовый сервер, например:

Сообщение = Новый ИнтернетПочтовоеСообщение;

Сообщение.Отправитель = "v8@1c.ru";

    • Бывают серверы, которые отправляют письмо с любым значением свойства отправитель, но возвращают ошибку, если получатель не принадлежит домену сервера (такой сервер еще называют сервером входящей почты).

Почтовый ящик не доступен (SMTP error code 550, 5.7.1 Policy rejection on the target address: v8@1c.ru)

Чаще всего данная проблема снимается авторизацией на сервере (если она поддерживается сервером). Для этого нужно заполнить следующие свойства объекта ИнтернетПочтовыйПрофиль:

Профиль = Новый ИнтернетПочтовыйПрофиль;

Профиль.ПользовательSMTP = <логин>;

Профиль.ПарольSMTP = <пароль>;

Следует заметить, что настройки для SMTP авторизации могут отличаться от настроек POP3. Например, некоторые серверы для POP3 авторизации используют в качестве "логина" первую часть почтового адреса, а для SMTP-авторизации – полный адрес.

    • Иногда серверы настраивают так, что если указан адрес отправителя, принадлежащий домену сервера, и отправитель не входит в разрешенные (задаваемые на сервере) адреса, то сервер откажется принимать письмо для дальнейшей отсылки. В данном случае опять же поможет авторизация.

    • Ошибка 550 возникает также, когда указан несуществующий адрес отправителя или этот адрес запрещен на принимающем сервере.

    • Релей-сервер принимает и отправляет почту без всяких проверок отправителя и получателя. Чаще всего такой тип сервера требует авторизацию и без авторизации может вернуть ошибку:

Почтовый ящик не доступен (SMTP error code 550, Relaying denied)

    • Некоторые почтовые серверы не принимают сообщения от пользователей, которые используют dial-up соединение, принуждая таким образом использовать почтовый сервер Интернет провайдера предоставляющего доступ в Интернет.

Получить письмо

//ПОЧТОВЫЙ ПРОФИЛЬ


Профиль = Новый ИнтернетПочтовыйПрофиль;

Профиль.Пользователь = "xxx@xxxx.xx";

Профиль.Пароль = "xxxxxx";

Профиль.АдресСервераPOP3 = "pop3.mail.ru";

ПРофиль.АутентификацияPOP3 = СпособPOP3Аутентификации.Обычная;

МассивПисем = Новый массив();


//ПОЛУЧЕНИЕ ПИСЕМ


Попытка

Почта = Новый ИнтернетПочта;

Почта.Подключиться(Профиль);

МассивПисем = Почта.Выбрать(Ложь);

Исключение

Сообщить("Ошибка получения почты " + ОписаниеОшибки());

КонецПопытки;