Версия для печати темы (https://pro1c.org.ua/index.php?s=73943cd9b1c9986562dccf59dca0b059&showtopic=46343)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Отправить письмо на почту посредством 1С

Автор: Gigi 19.06.18, 9:18

Всем привет!
Меня интересует вопрос указанной темы.
По этому вопросу рыл усердно..
Вот код:

&НаКлиенте
Процедура ОтправкаНаМыло()
//==============================================
    Профиль = Новый ИнтернетПочтовыйПрофиль;
    Профиль.АдресСервераSMTP = "smtp.mail.ru";
    Профиль.ПортSMTP = 25;
    Профиль.АутентификацияSMTP = СпособSMTPАутентификации.БезАутентификации;
    Профиль.ПользовательSMTP = "ЛогинПочтыОтправителя";
    Профиль.ПарольSMTP = "ПарольПочтыОтправителя";
//==============================================    
    Письмо = Новый ИнтернетПочтовоеСообщение;
    Письмо.Кодировка = "UTF-8";
    Письмо.Тема = "Тестовое сообщение";
    Письмо.ИмяОтправителя = "Ф.И.О";
    Письмо.Отправитель.Адрес = "ПочтаОтправителя@mail.ru";
    Письмо.Получатели.Добавить("ПочтаПолучателя@mail.ru");
    ТекстСообщения="Письмо отправлено - " +ТекущаяДата();
    Письмо.Тексты.Добавить(ТекстСообщения,ТипТекстаПочтовогоСообщения.ПростойТекст);    
//==============================================
Почта = Новый ИнтернетПочта;
//Попытка
    Почта.Подключиться(Профиль);
    Сообщить("Профиль подключен!");
    Почта.Послать(Письмо); // На этой линии глючит. Никак не может отправить.
    Сообщить("Письмо отправлено!");
    Почта.Отключиться();
//Исключение
    //Сообщить("Не удалось подключится и отправить письмо!");
//КонецПопытки;
//==============================================
КонецПроцедуры

Вроде сделал как указанно в разных статьях но все обрывается на самом главном... на линии:
Почта.Послать(Письмо);

И пишет:
Цитата
{ОбщаяФорма.Форма_Энергосистема.Форма(37)}: Ошибка при вызове метода контекста (Послать)
Почта.Послать(Письмо);
по причине:
Почтовый ящик не доступен (SMTP error code 550): ПочтаПолучателя@mail.ru

В чем причина?
Буду признателен!

Автор: Bernet 19.06.18, 9:28

Gigi @ Сегодня, 10:18 * ,
Судя по всему что-то не так с почтой, вы уверены что правильно ввели email адрес?

Автор: Gigi 19.06.18, 9:44

Bernet @ Сегодня, 9:28 * ,

Цитата(Bernet @ 19.06.18, 9:28) *
вы уверены что правильно ввели email адрес?

Вроде бы да...
И кроме того вот другой форум:
http://pro1c.org.ua/redirect.php?https://www.mista.ru/topic.php?id=771984
Там в конце темы аналогичная проблема. То же самое сообщение ошибки что в моем случае.
Не думаю что ошибка в не правильном логине и пароле отправителя. Потому что, ведь пишет почту получателя... то что она не доступна.
Но вы имеете ввиду адрес получателя ... тоже правильно ввел. Но ладно еще раз проверю ... И жду ответа. И буду признателен

Gigi @ Сегодня, 9:36 * ,
А вот еще на счет портов и т.д.
http://pro1c.org.ua/redirect.php?https://help.mail.ru/mail-help/mailer/popsmtp
Короче ... Хотел понять в чем ошибка. В чем причина сбоя
И буду весьма..

Автор: Bernet 19.06.18, 9:49

Gigi @ Сегодня, 10:18 * ,
Кстати, добавьте строки:

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

SSL шифрование обязательно и для gmail и для mail.ru вроде бы

Автор: Gigi 19.06.18, 10:33

Bernet @ Сегодня, 9:49 * ,
Ладно добавлю и запущу тестовый отсыл.
Если честно плаваю во всем этом. Ох ... не знание ... мешает.
Но вообще ПортSMTP указан правильный? ... 25
Я пробовал сменить его на 465. Как указано в этой ссылке:
http://pro1c.org.ua/redirect.php?https://help.mail.ru/mail-help/mailer/popsmtp
И сделав это вообще хуже стало... пишет:

Цитата
{ОбщаяФорма.Форма_Энергосистема.Форма(34)}: Ошибка при вызове метода контекста (Подключиться)
Почта.Подключиться(Профиль);
по причине:
SMTP greeting failure: 421 SMTP connection broken (reply)

Ладно! Ша добавлю линию ... и проверю

Gigi @ Сегодня, 9:56 * ,
Проверил ... Никакого эффекта
Вот код с добавкой:
Процедура ОтправкаНаМыло()
//==============================================
    Профиль = Новый ИнтернетПочтовыйПрофиль;
    Профиль.АдресСервераSMTP = "smtp.mail.ru";
    Профиль.ПортSMTP = 25;
    Профиль.АутентификацияSMTP = СпособSMTPАутентификации.БезАутентификации;
    Профиль.ПользовательSMTP = "ЛогинПочтыОтправителя";
    Профиль.ПарольSMTP = "ПарольПочтыОтправителя";
    Профиль.ИспользоватьSSLSMTP = Истина;
    Профиль.ИспользоватьSSLPOP3 = Истина;
//==============================================    
    Письмо = Новый ИнтернетПочтовоеСообщение;
    Письмо.Кодировка = "UTF-8";
    Письмо.Тема = "Тестовое сообщение";
    Письмо.ИмяОтправителя = "Ф.И.О";
    Письмо.Отправитель.Адрес = "ЛогинПочтыОтправителя@mail.ru";
    Письмо.Получатели.Добавить("ЛогинПочтыПолучателя@mail.ru");
    ТекстСообщения="Письмо отправлено - " +ТекущаяДата();
    Письмо.Тексты.Добавить(ТекстСообщения,ТипТекстаПочтовогоСообщения.ПростойТекст);    
//==============================================
Почта = Новый ИнтернетПочта;
//Попытка
    Почта.Подключиться(Профиль);
    Сообщить("Профиль подключен!");
    Почта.Послать(Письмо); // На этой линии глючит. Никак не может отправить.
    Сообщить("Письмо отправлено!");
    Почта.Отключиться();
//Исключение
    //Сообщить("Не удалось подключится и отправить письмо!");
//КонецПопытки;
//==============================================
КонецПроцедуры

Пишет:
Цитата
{ОбщаяФорма.Форма_Энергосистема.Форма(36)}: Ошибка при вызове метода контекста (Подключиться)
Почта.Подключиться(Профиль);
по причине:
TLS/SSL failure for smtp.mail.ru: Invalid token, probably not an SSL server


Gigi @ Сегодня, 10:02 * ,
Ничего не пойму ... думал может антивирус блокирует.
Но в том и дело что вроде отключил на время ... что бы не выпендривался.

Gigi @ Сегодня, 10:05 * ,
Просто это не сильно важный вопрос. Но будет жаль если отчеты по почте отправлять через 1С не получиться.
Очень удобно было бы так.
Поэтому и обращаюсь за помощью.
За что буду признателен!

Автор: Bernet 19.06.18, 10:40

Gigi @ Сегодня, 11:33 * ,
У меня такой код в самописной конфигурации работал, правда с gmail, для mail.ru только порты могут быть другие, а так принцип тот же
Код

Функция ОтправитьУведомлениеНаПочтуПользователю(СтруктураПараметров) Экспорт
    
    ТекстОшибок = "";
    
    ПолучательПисьма = Неопределено;
        
    СтруктураПараметров.Свойство("ПолучательПисьма", ПолучательПисьма);
    
    УчетнаяЗаписьДляРассылки = Константы.УчетнаяЗаписьДляРассылки.Получить();
    Если НЕ ЗначениеЗаполнено(УчетнаяЗаписьДляРассылки) Тогда
        ТекстОшибок = ТекстОшибок + "Не выбрана учетная запись для рассылки уведомлений на почту.";
        Возврат ТекстОшибок;
    КонецЕсли;
    
    Если ПолучательПисьма = Неопределено Тогда
        ТекстОшибок = ТекстОшибок + Символы.ПС + "Не указана почта получателя уведомления!";
        Возврат ТекстОшибок;
    КонецЕсли;
    
    Профиль = ПолучитьИнтернетПочтовыйПрофиль(УчетнаяЗаписьДляРассылки);
    
    ИнтернетПочта = Новый ИнтернетПочта;
    
    Попытка
        ИнтернетПочта.Подключиться(Профиль);
    Исключение
        
        ТекстОшибок = ТекстОшибок + Символы.ПС + (Строка(УчетнаяЗаписьДляРассылки) + ". " + ОписаниеОшибки());
        Возврат ТекстОшибок;
        
    КонецПопытки;
    
    ПочтовоеСообщение = Новый ИнтернетПочтовоеСообщение;
                            
    ПочтовоеСообщение.Кодировка = "utf-8";
    ПочтовоеСообщение.ИмяОтправителя  = СокрЛП(УчетнаяЗаписьДляРассылки.АдресЭлектроннойПочты);
    ПочтовоеСообщение.Отправитель     = СокрЛП(УчетнаяЗаписьДляРассылки.АдресЭлектроннойПочты);
    ПочтовоеСообщение.Тема            = "Тема";
    
    Получатель = ПочтовоеСообщение.Получатели.Добавить();
    Получатель.Адрес           = СокрЛП(ПолучательПисьма);
    Получатель.ОтображаемоеИмя = СокрЛП(ПолучательПисьма);
    Получатель.Кодировка       = "utf-8";

    ТекстСообщения = ПочтовоеСообщение.Тексты.Добавить();
    ТекстСообщения.Кодировка = "utf-8";
    Если УчетнаяЗаписьДляРассылки.КодировкаПисемПоУмолчанию = "HTML" Тогда
        ТекстСообщения.ТипТекста = ТипТекстаПочтовогоСообщения.HTML;    
    ИначеЕсли УчетнаяЗаписьДляРассылки.КодировкаПисемПоУмолчанию = "TEXT" Тогда    
        ТекстСообщения.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст;
    КонецЕсли;
    ТекстСообщения.Текст = ПолучитьТекстДляУведомленияНаПочту(ТекстСообщения.ТипТекста, СтруктураПараметров);
    
    Попытка
        ИнтернетПочта.Послать(ПочтовоеСообщение);
    Исключение
        ТекстОшибок = ТекстОшибок + Символы.ПС + (Строка(УчетнаяЗаписьДляРассылки) + ". " + ОписаниеОшибки());
        Возврат ТекстОшибок;    
    КонецПопытки;
    
КонецФункции

Функция ПолучитьИнтернетПочтовыйПрофиль(УчетнаяЗапись) Экспорт

    Профиль = Новый ИнтернетПочтовыйПрофиль;
    
    Профиль.АдресСервераPOP3 = УчетнаяЗапись.POP3Сервер;
    Профиль.АдресСервераSMTP = УчетнаяЗапись.SMTPСервер;
    Если УчетнаяЗапись.ВремяОжиданияСервера > 0 Тогда
        Профиль.ВремяОжидания = УчетнаяЗапись.ВремяОжиданияСервера;
    КонецЕсли;
    Профиль.Пароль           = УчетнаяЗапись.Пароль;
    Профиль.Пользователь     = УчетнаяЗапись.Логин;
    Профиль.ПортPOP3         = УчетнаяЗапись.ПортPOP3;
    Профиль.ПортSMTP         = УчетнаяЗапись.ПортSMTP;
    
    Профиль.ИспользоватьSSLSMTP = Истина;
    Профиль.ИспользоватьSSLPOP3 = Истина;
    
    Если УчетнаяЗапись.ТребуетсяSMTPАутентификация Тогда
        Профиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию;
        Профиль.ПарольSMTP         = УчетнаяЗапись.ПарольSMTP;
        Профиль.ПользовательSMTP   = УчетнаяЗапись.ЛогинSMTP;
    Иначе
        Профиль.АутентификацияSMTP = СпособSMTPАутентификации.БезАутентификации;
        Профиль.ПарольSMTP         = "";
        Профиль.ПользовательSMTP   = "";
    КонецЕсли;
    
    Возврат Профиль;

КонецФункции


УчетнаяЗапись - это справочник, где хранятся логин, пароль и все остальные настойки доступа к почте. Сравните с вашим, может быстрее найдете в чем проблема

Автор: Gigi 19.06.18, 13:59

Bernet @ Сегодня, 10:40 * ,
Ну ладно!
Выше указанным способом никак не получается.
Пробовал даже
VBA код

Sub Primer() ' Пример использования функции Send_Mail
txt = "Это письмо сформировано макросом" & vbNewLine & _
"без использования внешних программ и подключения дополнительных библиотек"
If Send_Mail("ПолучательЛогин1@mail.ru", "ПолучательЛогин2@mail.ru", "ПолучательЛогин3@mail.ru", "ОтправительЛогин@mail.ru", "проверка отправки почты", txt) Then
MsgBox "Письмо успешно отправлено", vbInformation
Else
MsgBox "Не удалось отправить письмо", vbExclamation
End If
End Sub
Private Sub SaveAccountData() ' запускать один раз - для записи в реестр Windows параметров почтового аккаунта
SaveSetting Application.Name, "mail", "smtpserver", "smtp.mail.ru" ' Ваш SMTPServer
SaveSetting Application.Name, "mail", "sendusername", "ОтправительЛогин@mail.ru" ' Ваша учетная запись
SaveSetting Application.Name, "mail", "sendpassword", "" ' Ваш пароль
End Sub
Function Send_Mail(ByVal MailTo As String, ByVal MailCopy As String, ByVal MailCCopy As String, ByVal MailFrom As String, _
ByVal MailSubject As String, ByVal MailText As String, _
Optional ByVal MailAttachment As String = "") As Boolean
' функция для отправки почты без использования внешних почтовых программ
' ----------------------------------------------------------------------
' в качестве параметров получает:
' MailTo - адрес получателя письма
' MailFrom - адрес отправителя письма
' MailSubject - тема письма
' MailText - текст письма
' MailAttachment - полный путь к файлу вложения (необязательный параметр)
' ----------------------------------------------------------------------
' возвращает TRUE, если отправка почты произошла успешно, и FALSE в обратном случае

Const cdoConfigURL = "http://schemas.microsoft.com/cdo/configuration/"
On Error Resume Next: Err.Clear

SMTPserver = GetSetting(Application.Name, "mail", "smtpserver", "")
sendusername = GetSetting(Application.Name, "mail", "sendusername", "")
sendpassword = GetSetting(Application.Name, "mail", "sendpassword", "")
If Len(SMTPserver) = 0 Or Len(sendusername) = 0 Or Len(sendpassword) = 0 Then Exit Function

Set cdoConfig = CreateObject("CDO.Configuration")
With cdoConfig.Fields
.Item(cdoConfigURL & "sendusing") = 2
.Item(cdoConfigURL & "smtpauthenticate") = 1
.Item(cdoConfigURL & "smtpserver") = SMTPserver
.Item(cdoConfigURL & "sendusername") = sendusername
.Item(cdoConfigURL & "sendpassword") = sendpassword
.Item(cdoConfigURL & "smtpserverport") = 465 'порт для SSL: 465
.Item(cdoConfigURL & "smtpusessl") = 1 'использовать аутентификацию: да
.Update
End With
Set cdoMessage = CreateObject("CDO.Message")
With cdoMessage
Set .Configuration = cdoConfig
.BodyPart.Charset = "koi8-r"
.From = MailFrom:
.CC = MailCopy
.BCC = MailCCopy
.To = MailTo
.Subject = MailSubject
.TextBody = MailText
If Len(MailAttachment) > 0 Then .AddAttachment MailAttachment
.Send
End With
Set cdoMessage = Nothing: Set cdoConfig = Nothing

' If Err.Number = -2147220973 Then MsgBox ("Отсутствует связь с интернетом")
' If Err.Number = -2147220975 Then MsgBox ("SMTP сервер ответил отказом")
' If Err.Number = 0 Then MsgBox ("Письмо отправлено")
Send_Mail = Err = 0
End Function

Тоже не получилось...
Поэтому уже по другому хотел спросить
Ну на пример таким путем:
ЗапуститьПриложение("mailto:ПолучательЛогин@mail.ru");

Открывается браузер и почта Mail.ru ... Если она авторизована то создается новое сообщение с указанным получателем.
Что нужно что бы письмо можно было отправить из 1С хотя бы так. Вернее не отправить а просто процедурой 1С открыть браузер и войти в свою почту.
Следующее:
1) Войти в свою почту вне зависимости от сервера mail.ru, rambler.ru и т.д. (что должно быть указано в самой процедуре) и вне зависимости от того она открыта или нет (что требует указания пароля в процедуре)
2) В самой процедуре 1С определить: Имя отправителя, тему сообщения, текст сообщения, и т.д. ...И САМОЕ ГЛАВНОЕ к новому сообщению прикрепить файл отправки (что конечно и тут требует указания адреса файла в самой процедуре)
Т.е. Все это программно и автоматический нажав на кнопку процедуры. Что бы в браузере автоматический проставлялись все указанные параметры отправки.
Вот как нужно, раз с первым более удобным способом не получается... Т.е. хотя бы так.
Иными словами это не отправка а автоматическое открытие почтового ящика с автоматизацией всех настроек перед отправкой.
Рассчитываю на вашу помощь... Могу сам помучиться но это дольше.
Так что, если не трудно малая процедурка
Буду признателен!
Gigi @ Сегодня, 12:02 * ,
Это просто HTML команды через 1С. Которые чуть подзабыл.
Нужно вспомнить. Но я просил сэкономить время.
Пожалуйста если не трудно!
Gigi @ Сегодня, 12:36 * ,
Просмотрел эту статью:
http://pro1c.org.ua/index.php?showtopic=11029
Короче smile.gifsmile.gif В теории все хорошо... но на деле ... smile.gifsmile.gif По моему это труднее чем модули состыковать на космической орбите. smile.gifsmile.gif
Gigi @ Сегодня, 13:01 * ,
<a href="mailto:gigi_spoke@mail.ru" target="_blank" >Открыть почту</a>
<br>
<a href="mailto:gigi_spoke@mail.ru?subject=Тестовая отправка&amp;body=Здравствуйте!">Открыть почту с настройкой отправки</a>

Вот каким макаром ... Ну из 1С будет через:
ЗапуститьПриложение("mailto:gigi_spoke@mail.ru?subject=Тестовая отправка&amp;body=Здравствуйте!");

Просто во первых нужно что бы открывался не тот почтовый сервис который в браузере указан по умолчанию.. а программно любой указанный в коде ссылки.
Во вторых что бы не просто открывался, а автоматический авторизовывался по указанному в ссылке логину и паролю.
В третьих нужно автоматический прикрепить файл к сообщению, чего че то не нашел в параметрах спец ссылки "Mailto".
Короче ... видимо то что хотел ... ну никак

Автор: Prospero 19.06.18, 22:57

Gigi, Ваш код работает, во всяком случае проверил на Gmail.
Попробуйте изменить способ аутентификации

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

и порт для SMTP на маилру 465

Проверил на Маил.Ру
Действительно, выскакивает ошибка
Цитата
Произошла ошибка при работе с SMTP. Код ошибки: 25 (Отказ в установлении соединения со стороны сервера.)

Заведите ящик на GMail smile.gif

Автор: Batchir 20.06.18, 8:22

1. http://pro1c.org.ua/redirect.php?http://pro1c.org.ua/index.php?showtopic=101
2. http://pro1c.org.ua/redirect.php?https://help.mail.ru/mail-help/mailer/popsmtp
3. Не забываем что мэйл ру не дружит с некоторыми странами

Автор: barul4ik 20.06.18, 8:40

Для отправки писем из 1С использовал утилиту stunnel.
http://pro1c.org.ua/index.php?showtopic=28847

Автор: Bernet 20.06.18, 8:42

barul4ik @ Сегодня, 9:40 * ,
Эту утилиту нужно было юзать с платформой 8.2, которая не поддерживала SSL-шифрование. 8.3 уже поддерживает, использовать эту утилиту уже не обязательно

Автор: Gigi 20.06.18, 9:52

Bernet @ Сегодня, 8:42 * ,
ЭВРИКА! smile.gifsmile.gif
Дорогие друзья ... ВСЕ РАБОТАЕТ! smile.gifsmile.gif
Просто нужно было поставить АутентификацияSMTP на ПоУмолчанию (что было вами рекомендовано) и еще как вы же говорили добавить:

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

Ну еще порт сменить на 465. Что тоже было здесь предложено.
А остальное оставить как есть. И уже теперь все заработало
Надо отпраздновать! smile.gifsmile.gif
Вот финальный вариант тестовой процедуры отправки.
&НаКлиенте
Процедура ОтправитьНаПочту(Команда)
Если Вопрос("Отправить отчет на почту?",РежимДиалогаВопрос.ДаНет,,,"Отправка отчета на почту")=КодВозвратаДиалога.Да Тогда
ОтправкаНаПочту("smtp.mail.ru",465,"mail.ru","Логин","Пароль","gigi@mail.ru");
//ОтправкаНаПочту("smtp.rambler.ru",465,"rambler.ru","Логин","Пароль","gigi@mail.ru");
//ОтправкаНаПочту("smtp.gmail.com",465,"gmail.com","Логин","Пароль","gigi@mail.ru");
КонецЕсли;    
КонецПроцедуры

&НаКлиенте
Процедура ОтправкаНаПочту(АдресСервераSMTP,ПортSMTP,Домен,Логин,Пароль,ПочтаПолучателя)
//==============================================
    Профиль = Новый ИнтернетПочтовыйПрофиль;
    Профиль.АдресСервераSMTP = АдресСервераSMTP;    
    Профиль.ПортSMTP = ПортSMTP;
    Профиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию;
    Профиль.ПользовательSMTP = Логин;
    Профиль.ПарольSMTP = Пароль;
    Профиль.ИспользоватьSSLSMTP = Истина;
    Профиль.ИспользоватьSSLPOP3 = Истина;    
//==============================================    
    Письмо = Новый ИнтернетПочтовоеСообщение;
    Письмо.Кодировка = "UTF-8";
    Письмо.Тема = "Тестовое сообщение";
    Письмо.ИмяОтправителя = "Дональд Трамп";
    Письмо.Отправитель.Адрес = Логин+"@"+Домен;
    Письмо.Получатели.Добавить(ПочтаПолучателя);
    ТекстСообщения="Письмо отправлено - " +ТекущаяДата();
    Письмо.Тексты.Добавить(ТекстСообщения,ТипТекстаПочтовогоСообщения.ПростойТекст);    
//==============================================
Почта = Новый ИнтернетПочта;
Попытка
    Почта.Подключиться(Профиль);
    //Состояние("Отправка..",0);
    Сообщить("Профиль подключен!");
    Почта.Послать(Письмо);
    Сообщить("Письмо отправлено!");
    Почта.Отключиться();
Исключение
    Сообщить("Не удалось подключится и отправить письмо!");
КонецПопытки;
//==============================================
КонецПроцедуры

Все заработало! Можете проверить.
Ладно! Всем спасибо.
И если в коде че то не предусмотрено и надо было еще что то добавить то просьба дать знать что именно.
Просто я смотрел что для корректной настройки отправки по моему если не ошибаюсь еще нужно: "Отключить рассылку: вкл/откл. функции массовой рассылки писем"
Как указано на пример http://pro1c.org.ua/redirect.php?https://ilyakhasanov.ru/baza-znanij/prochee/nuzhno-znat/139-nastrojki-otpravki-pochty-cherez-smtp Просто это я в свойствах ИнтернетПочтовыйПрофиль не нашел. Хотя итак тоже работает!
Ладно! Еще раз всем спасибо!



Автор: Gigi 16.07.18, 16:38

Gigi @ 20.06.18, 10:52 * ,
Опять привет!
Гууу... возвращаюсь опять к этой теме... клянусь сил больше нет...
Думал написал почтовый клиент в 1С который супер облегчает работу .. позволяет одним махом посылать отчеты нескольким получателям (которых 40 или 70).... с уже указанными почтовыми адресами и адресами файлов на диске для отправки.
Программа, которая все это позволяет делать одним махом... без необходимости каждый раз открывать почту и каждому прикреплять файл и тратить на это время. Просто открыл форму и нажал на отправить и все.
Но разве может быть так... думал написал и ЗАКРЫЛ ВОПРОС! Нееет опять всплывает.
Я просто никак не пойму. Уже сто раз тестировал. Все было нормально. Никаких сбоев. Но недавно попробовал послать а в итоги программа на все почты посылает и не дает ошибку. Т.е. там в коде условие... если не нашла почту то должна сообщить что почта не найдена. Поэтому вроде сама программа не выдает такие сообщения и сообщает об успешной доставке.. как прописал в коде. Только вот зайдя в браузер и открыв ту почту с которого слал письма приходят: "Mail delivery failed ". И самое смешное что такое приходит от некоторых адресов а от некоторых нет.
Для теста создал две почты получателя ... оба на майл ру. И потом с программы послал обоим. И программа без сбоя обоим отправила. Только одно дошло а другое нет.
О Господи ... ЧТО ЭТО ТАКОЕ? Я одурею ... сколько можно талдычить одно и то же. СТО РАЗ ПРОВЕРЯЛ... Вроде работало.
Пожалуйста подскажите!
Буду признателен!

Автор: proxy 16.07.18, 17:25

Gigi @ Сегодня, 17:38 * ,
Почта отправляется через какой-то промежуточный сервер посредством SMTP? Используется SSL/TLS? Авторизацию как проходите? Адрес компа, с которого идет отправка, прописан как разрешенный в ТХТ-записи домена в DNS? Если домен почты не свой, а какой-либо сервис, бывают ограничения на пересылку, особенно если письмо опознается как спам.

Покажите содержимое Mail delivery failed, адреса заменить звездочками, главное текст ошибки.

Автор: Gigi 16.07.18, 17:50

proxy @ Сегодня, 17:25 * ,

Цитата(proxy @ 16.07.18, 17:25) *
Почта отправляется через какой-то промежуточный сервер посредством SMTP? Используется SSL/TLS? Авторизацию как проходите? Адрес компа, с которого идет отправка, прописан как разрешенный в ТХТ-записи домена в DNS? Если домен почты не свой, а какой-либо сервис, бывают ограничения на пересылку, особенно если письмо опознается как спам.

Покажите содержимое Mail delivery failed, адреса заменить звездочками, главное текст ошибки.

В принципе отправка по выше указанному коду. А вот что касается SSL/TLS если честно с этим слабо дружу... не очень волоку...
Просто я только что перепроверил... как уже выяснил .... почему до этого все работало... Дело в том, что у меня две копии Инфо-базы. Только форматы разные, Одна файловая, а другая серверная.
Так вот, когда я тестировал я это делал из файлового варианта базы. И там все работало КАК НАДО!
Но когда обновил базу уже в серверный формат и решил уже с сервера отправить письмо то столкнулся с выше указанной проблемой.
Поэтому получается что 1С почтовый клиент в файловом варианте работает как надо, а в серверном варианте почему то на некоторые почты получателя присылает такие сообщения:

Цитата
Mail delivery failed : returning message to sender (Письмо не может быть доставлено и возвращено отправителю)


Цитата
http://pro1c.org.ua/redirect.php?http://help.rambler.ru/mail/mail-soobsheniya-ob-oshibkah/1326/

This message was created automatically by mail delivery software.

A message that you sent could not be delivered to all of its recipients.
The following address(es) failed:

*******@mail.ru
host mxs.mail.ru [94.100.180.104]
SMTP error from remote mail server after end of data:
550 spam message rejected. Please visit http://pro1c.org.ua/redirect.php?http://help.mail.ru/notspam-support/id?c=7BODUaWiTm7U7g25QSftj0pp-kOMnujw6WTBQeFPhpYOAAAA1hsCAJMPxww~ or report details to abuse@corp.mail.ru. Error code:
518313EC6E4EA2A5B90DEED48FED274143FA694AF0E89E8C41C164E996864FE1. ID:
0000000E00021BD60CC70F93.

Просьба объяснить что с этим делать?
И что именно нужно сделать что бы работало так же как на файловом варианте базы. И отправка доходила и не порождала такие сообщения
Буду очень признателен!

Автор: Zaval 16.07.18, 17:56

Цитата(Gigi @ 16.07.18, 17:38) *
Для теста создал две почты получателя ... оба на майл ру. И потом с программы послал обоим. И программа без сбоя обоим отправила. Только одно дошло а другое нет.

Порядок отправки меняли?

Автор: proxy 16.07.18, 17:58

Gigi @ Сегодня, 18:50 * ,
Самое банальное в ответе почтовой системы - 550 spam message rejected, т.е. формат письма был определен как спам. Нужно добавить в тело письма текст, если есть аттач - называть его без точек, т.е. должна точка быть только перед расширением. В общем стоит поработать над содержанием и оформлением письма, проблема именно в этом.

Что касается SQL и файловой базы, тут нужно внимательно к процедурам, так как в случае SQL часть из них может выполняться на сервере, а часть - на клиенте.

И да, перейдите по ссылке и там нажмите, что письмо ложно определено как спам. Бывает после нескольких таких детектов робот у Мейлру натаскивается и перестает ругаться на ваши письма.

Автор: Gigi 16.07.18, 18:14

Zaval @ Сегодня, 17:56 * ,

Цитата(Zaval @ 16.07.18, 17:56) *
Порядок отправки меняли?

Еще как менял smile.gifsmile.gif
1) На два адреса через ";" результат один получатель получил а другой нет
2) пробовал каждого по отдельности и меняя последовательность smile.gif тот же самый результат. До одного адреса письмо доходит а до другого нет. Хотя оба на мейл ру. А отправитель на рамблере.
И самое смешное что в файловом варианте этих проблем и вовсе нет. При том, что то же самое ... те же самые параметры отправителя и получателей. Любой порядок отправки ... одной отправкой или по отдельности ВСЕ РАБОТАЕТ! И письма всегда ДОХОДЯТ!
Но почему в серверном варианте проблемы? Вот что не пойму.
Короче ... Буду признателен!


Цитата(Gigi @ 16.07.18, 18:04) *
В общем стоит поработать над содержанием и оформлением письма, проблема именно в этом.

Думаете в этом?
Но я понять не могу почему с файлового варианта базы нормально все работает. Параметры отправки ведь ОДИНАКОВЫЕ. Все одинаковое. Просто форматы баз разные.

Цитата(Gigi @ 16.07.18, 18:04) *
И да, перейдите по ссылке и там нажмите, что письмо ложно определено как спам. Бывает после нескольких таких детектов робот у Мейлру натаскивается и перестает ругаться на ваши письма.

Ладно попробую .. хотя не думаю что поможет
Цитата(Gigi @ 16.07.18, 18:04) *
Что касается SQL и файловой базы, тут нужно внимательно к процедурам, так как в случае SQL часть из них может выполняться на сервере, а часть - на клиенте.

скорее всего проблемы возникают в этом профиле. Но тут к сожалению теряюсь в том что именно надо делать.
Если не трудно конкретно ... что нужно сделать что бы в SQL все так же работало как в файловом варианте?
Буду благодарен!

Автор: proxy 16.07.18, 18:28

Цитата(Gigi @ 16.07.18, 19:14) *
Параметры отправки ведь ОДИНАКОВЫЕ. Все одинаковое.

Смотрите в чем нюанс:
1) один раз вы отправляете письмо с текстом "Привет" и вложенной картинкой - почтовая система чуть покривилась, поставила рейтинг СПАМ=3,5/5 но письмо пропустила
2) второй раз вы отправляете то же самое письмо, 1-в-1, с того же адреса. Почтовая система помнит, что уже такое было письмо, и рейтинг СПАМ поднимает до 4,5/5, но, опять же пропускает
3) третий раз письмо - рейтинг СПАМ=6/5 - письмо почтовая система заворачивает, как спам.

Можете для теста вернуться на файловый вариант и отправить повторно то же письмо. Даю 99.9% гарантии, что письмо не дойдет.

Почтовые системы уже давно обучаются и не пропускают однотипные письма с одного адресата. Это раньше можно было по 50 одинаковых рассылать. Теперь для таких целей есть специальные сервисы рассылок, чтобы адрес не заблокировали после первой же попытки разослать много одинаковых писем.

Попробуйте поменять содержимое письма - добавте текста, типа "Вас приветствует чупакабра. Рады вам сообщить %текст_оригинального_письма%. С увлажнением, царь" и попробуйте отправку wink.gif

Автор: Zaval 16.07.18, 18:46

Цитата(Gigi @ 16.07.18, 19:14) *
Но я понять не могу почему с файлового варианта базы нормально все работает. Параметры отправки ведь ОДИНАКОВЫЕ. Все одинаковое. Просто форматы баз разные.

А еще, возможно, темп отправок.

Автор: andr_andrey 16.07.18, 20:17

Если письма одинаковые, посылать одновременно как СкрытаяКопия не предлагать?

Автор: proxy 16.07.18, 20:55

Цитата(andr_andrey @ 16.07.18, 21:17) *
посылать одновременно как СкрытаяКопия не предлагать

Это для получателя копия выходит скрытая, а почтовый сервер то все адреса видит. Может пропустит, может на части адресов начнет заворачивать доставку - тут как повезет. Раньше 50 адресатов было ОК, сейчас наверное около 10ти. Хотя, если письмо не однострочное, или пустое с картинкой-вложением, может и на больше адресатов пропустит.

Можно попробовать пересылать от Гугла, вместо Мейлру.


Автор: Gigi 17.07.18, 10:44

Цитата(Zaval @ 16.07.18, 18:46) *
1) один раз вы отправляете письмо с текстом "Привет" и вложенной картинкой - почтовая система чуть покривилась, поставила рейтинг СПАМ=3,5/5 но письмо пропустила
2) второй раз вы отправляете то же самое письмо, 1-в-1, с того же адреса. Почтовая система помнит, что уже такое было письмо, и рейтинг СПАМ поднимает до 4,5/5, но, опять же пропускает
3) третий раз письмо - рейтинг СПАМ=6/5 - письмо почтовая система заворачивает, как спам.

Можете для теста вернуться на файловый вариант и отправить повторно то же письмо. Даю 99.9% гарантии, что письмо не дойдет.

В принципе я это предполагал, но в деталях не знал как почтовый сервис определяет сообщение как спам.
Короче ... я сделал проще. И к счастью РЕШИЛ ВОПРОС!
Сперва отправил всем одним махом.... потом взял список абонентов (получателей) и стал каждому тупо звонить и просить их что бы они проверили папку спам на наличие посланного сообщения. И если оно туда попало, что именно так и было, то изъять ее из папки спам, перебросив в папку входящие.
В принципе можно так я думаю. Минус в том что абонентов 50 и больше, но плюс в том что это всего один раз можно не полениться сделать. А уже после думаю любое сообщение от изъятого из спама адреса будет всегда оказываться во входящих В ЛЮБОМ СЛУЧАЕ.
ВЕДЬ ТАК? Если не так просьба дать знать..
Но я так попробовал сделать только с получателями ****@mail.ru. И сработало. Письма после этого были в списке "входящие"
Поэтому вопрос, ответ на который думаю что положительный ... просто хочу получить подтверждение.
Если так же с делать с получателями не только mail.ru, но с gmail.com,rambler.ru,yahoo.com,yandex.ru и т.д. надеюсь так же сработает как с mail.ru?

Автор: proxy 17.07.18, 10:55

Цитата(Gigi @ 17.07.18, 11:44) *
изъять ее из папки спам, перебросив в папку входящие

Если при этом письмо не просто переместили между папками, а нажимали кнопку "пометить как не спам", то следующее письмо с аналогичным содержимым от того же адресата почтовый сервер скорее всего пропустит. Но 100% гарантии, что теперь все письма всегда будут проходить - нет. У некоторых почтовых сервисов можно внести адрес в "белый список" - письма от таких отправителей всегда считаются не спам.

Однако, нужно понимать, что если почтовый сервер ответил отказом на доставку на какой-то адрес, письмо этом адресату не попало, даже в папку спам.

Автор: Gigi 17.07.18, 11:03

Цитата(proxy @ 17.07.18, 10:55) *
Если при этом письмо не просто переместили между папками, а нажимали кнопку "пометить как не спам", то следующее письмо с аналогичным содержимым от того же адресата почтовый сервер скорее всего пропустит. Но 100% гарантии, что теперь все письма всегда будут проходить - нет. У некоторых почтовых сервисов можно внести адрес в "белый список" - письма от таких отправителей всегда считаются не спам.

Однако, нужно понимать, что если почтовый сервер ответил отказом на доставку на какой-то адрес, письмо этом адресату не попало, даже в папку спам.

Понятно!
Ну в принципе как понимается, у каждого почтового сервиса своя специфика. Но в случае с маилРу приходило сообщение "Mail delivery failed : returning message to sender (Письмо не может быть доставлено …" и при этом каждый раз сообщение оказывалось в папке спам. И тут я естественно говорил абонентам что бы они не просто из папки в другую перемещали сообщение, а помечали его галочкой и воспользовались кнопкой "Не спам" на МейлРу.
Поэтому у МайлРу так, а у других наверно или аналогично или чуть по другому. И я думаю что нужно разобраться как у каждого сервиса с настройками.
Ладно! Спасибо!
Пока!

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua