Страницы: 1
RSS
Перестала работать отправка почты через CDO, отказ SMPT сервера
 
Доброго времени суток, уважаемые форумчане. В некоторых своих файлах использовал метод отправки почты без использования сторонних программ через CDO, взятый отсюда:https://www.excel-vba.ru/chto-umeet-excel/kak-otpravit-pismo-iz-excel/. До последнего времени все было ОК, но вот уже несколько дней код (нетронутый) письмо не отправляет и показывает ошибку -2147220975: sMsg = "Отказ сервера SMTP". Повторюсь, код не трогал, настройки, пароли не менял, при пошаговой проверке все значения переменных корректны, до строки:
Код
.Send
все ОК, ставлю не ней стоп, в Watches значение Err.Number =0. Прохожу следующий шаг и  :cry: Err.Number = -2147220975. Письма на своей почте не вижу. Что могло случиться? Код за исключением своего адреса и пароля и разумеется проверочного ящика не трогал, проверил еще раз сегодня. Если не трудно, не мог бы кто-нибудь проверить?
 
просто закрыт релэй SMTP на сервере.
По вопросам из тем форума, личку не читаю.
 
Простите за мое невежество, БМВ, что такое релэй и что делать в таком случае? (для проверки пробовал отправлять и с яндекса на mail.ru и наоборот)
 
OlegO, для теста отправлял с mail.ru на gmail, но ругнулось другой ошибкой. Раскомментировал в коде приведённую ниже строку и письмо отправилось успешно.
Код
        '.Item(CDO_Cnf & "smtpusessl") = True
 
wfreedom, у меня эта строка расскомментирована. Как я понимаю она отвечает за шифрование при идентификации на сервере
Изменено: OlegO - 20.02.2021 19:16:04
 
OlegO,прикрепите ваш файл пожалуйста
 
wfreedom, Вас устроит, файл но без данных моих ящиков (с которого и на который отправляю) и пароля? Все таки немного личное :oops: поверьте, он взят по ссылке из поста №1 и откорректированы в нем только установочные личные данные
Изменено: OlegO - 20.02.2021 19:25:38
 
OlegO,конечно, мне ваши данные не нужны, главное чтобы было видно какой smtp сервер используете
 
Исходящий ящик на Яндексе, SMPT - smtp.yandex.ru, с mail.ru (используя smtp.mail.ru) тоже пробовал
Изменено: OlegO - 20.02.2021 19:28:15
 
OlegO, Проверьте ту строку в коде ещё раз. На этот раз отправлял с яндекса на мэйлру и выдало такую же ошибку как и у вас, но стоило раскомментировать строку и всё заработало. Прикрепляю файл на всякий случай.
 
У меня, увы неудачно. Если прав БМВ (пост №2) и мой ящик попал в черный список (я так понял значение релэя из статей в инете), то во первых этих попыток (пока отлаживал список адресов для рассылки, пока пытался понять в чем дело) было ну насколько десятков, а во-вторых че дальше то делать?
 
OlegO, всё, что могу предложить это обратиться в поддержку яндекса либо отправлять с другого адреса
 
Да, я и сам пришел к такому выводу. Спасибо за помощь
 
Непонятно, как можно объясниться со службой поддержки. если приходится только выбирать варианты проблем из предложенных, а просто написать письмо, изложив проблему нет (да и как бы они отреагировали на макрос тоже вопрос), ну да ладно. Вопрос вот еще какой: через макрос письмо не отправляется, а вот вручную, с того же и на тот же адрес без проблем. Может не в релэе, будь он неладен дело?
 
OlegO, какой сервер (провайдер) сейчас все больше и больше уходят от 25 порта и кроме SSL нужно порт указать другой
Код
'.Item(CDO_Cnf & "smtpserverport") = 465 'для Яндекса и Gmail 465
По вопросам из тем форума, личку не читаю.
 
БМВ, спасибо за отклик. Эта строка также присутствует в моем  коде и раскомментирована
 
тогда элементарная проверка любым клиентом и если не сработает, то скрипт не виновен.
По вопросам из тем форума, личку не читаю.
 
Специально завел ящик чисто для теста, в прилагаемом файле нужно указать только ящик на который следует отправить почту, но макрос не срабатывает, ошибка та же (отказ сервера SMPT). Проверьте, если нетрудно
 
Доброе время суток
Цитата
OlegO написал:
отказ сервера SMPT
А настройки по пункту первому выполнили? У меня через yandex не отправляло с таким же как у вас ссобщением. Ну и правильный номер порта не стесняйтесь указывать. :)
 
Доброго утра (у меня) и Вам, Андрей. Что Вы имеете ввиду под первым пунктом настройки? Значение SMPT сервера? У меня, при "исходящем" ящике на яндексе указано smtp.yandex.ru. Номер порта указан 465, все как в файле. Я специально выложил файл в посте №18, чтобы любой желающий мог проверить эту ситуацию, в файле "исходящий" ящик и пароль к нему указаны
 
Цитата
OlegO написал:
У меня, при "исходящем" ящике на яндексе указано smtp.yandex.ru
Вы по ссылке прошли - прочитали? Там и ссылка на страницу где нужно галки проставить.
Цитата
OlegO написал:
Номер порта указан 465, все как в файле.
Да, да, кончено, мне делать видимо нечего тень на плетень навожу
Код
        .Item(CDO_Cnf & "smtpserverport") = 25 'для Яндекса и Gmail 465
 
Андрей, специально только что просмотрел ссылку из первого поста, привожу часть кода:    
Код
'Назначаем конфигурацию CDO    Set oCDOCnf = CreateObject("CDO.Configuration")
    With oCDOCnf.Fields
        .Item(CDO_Cnf & "sendusing") = 2
        .Item(CDO_Cnf & "smtpauthenticate") = 1
        .Item(CDO_Cnf & "smtpserver") = SMTPserver
        'если необходимо указать SSL
        '.Item(CDO_Cnf & "smtpserverport") = 465 'для Яндекса и Gmail 465
        '.Item(CDO_Cnf & "smtpusessl") = True
        '=====================================
        .Item(CDO_Cnf & "sendusername") = sUsername
        .Item(CDO_Cnf & "sendpassword") = sPass
        .Update
    End With
а вот куда идти для расстановки галок, я не увидел, покажете?
P.S. В тексте статьи указан 465 порт, в файле 25, при 25 порте отказ SMPT сервера, при 465 тоже самое
Изменено: OlegO - 21.02.2021 08:54:04
 
Цитата
OlegO написал:
только что просмотрел ссылку
Я посмотрел приложенный вами файл.
Цитата
OlegO написал:
а вот куда идти для расстановки галок, я не увидел, покажете?
На странице настройки почты Yandex
 
Ага, с Вышей помощью теперь вижу, буду посмотреть, спасибо. Но раньше ничего подобного не делал, а код работал.
P.S. вроде есть прогресс после установки галки на С сервера pop.yandex.ru по протоколу POP3. Я так понимаю, что на mail аналогичную настройку следует искать?
Изменено: OlegO - 21.02.2021 08:57:20
 
Добрый день!
Хочу возобновить данную тему, так как проблема, возникшая у меня, точь в точь, как у OlegO, но есть нюанс в виде небольшого дополнения.
Начало истории совпадает один в один - все работало до определенного момента по идентичному алгоритму:
Код
Sub ПочтаCDO()

Dim msg As Object
Dim config As String
Set msg = CreateObject("CDO.Message")
msg.BodyPart.Charset = "windows-1251"
config = "http://schemas.microsoft.com/cdo/configuration/"
    
    With msg
        .To = "Получатель@gmail.com"
        .From = "Отправитель@gmail.com"
        .Subject = "Текст"
        .TextBody = "Текст"
        .AddAttachment "c:\Файл"
            With .Configuration.Fields
                .Item(config & "sendusing") = 2
                .Item(config & "smtpserver") = "smtp.gmail.com"
                .Item(config & "smtpauthenticate") = 1
                .Item(config & "smtpserverport") = 465
                .Item(config & "sendusername") = "Отправитель@gmail.com"
                .Item(config & "sendpassword") = "Отправитель_Пароль"
                .Item(config & "smtpusessl") = True
                .Item(config & "smtpconnectiontimeout") = 60
                .Update
            End With
        .Send
    End With

Set msg = Nothing

End Sub

И вот в один прекрасный день появляется ошибка.

С этого момента, что бы я не делал, результат неизменный - смотри "Ошибка SMTP сервера.png"  :D .
А нюанс мой заключается в том, что с данного почтового адреса, но в почтовом клиенте Thunderbird, с параметрами сервера исходящей почты (SMTP) "Настройки SMTP в Thunderbird.png" все прекрасно оправляется. Значит дело не в почтовом адресе.
Не будучи профессионалом в данной области, рискну предположить, что настройки SMTP в коде чем то отичаются от настроек в Thunderbird.
Хотя до возникновения ошибки, ни там, ни там, я ничего не менял.
Или может, что-то изменилось в структуре CDO, вследствие чего обращение CDO к серверу SMTP стало невозможным.
В общем теряюсь в догадках, которые ни на шаг меня не приближают к решению проблемы.
Уповаю на совет с вашей стороны, господа.
Изменено: Izobilie Logic - 09.06.2022 23:00:12
 
Добрый день.
история про "в один момент появилась ошибка"

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

вот тут на днях так перестал работать пароль обычный для яндекса, т.е. они заблокировали возможность сторонним приложениям иметь доступ к почте. генерация такого пароля помогла решить проблему без изменения каких-либо других настроек.
 
Цитата
написал:
Прикрепленные файлы
Tips_Macro_SendMailCDO.xls  (63.5 КБ)
Добрый вечер!
Ребята, я тоже пользуюсь этим файлом, и при пользовании появились два вопроса:
1. Текст письма пишется только в ячейки B5, а как можно добавить ячейки, чтобы текст письма отправлялся например и с ячейки B7,B8,C7,C8.
2. Когда в ячейки пишу данный в столбик, примерно 3-4 строки, а получатель получает все в одной строке. Как можно исправить, чтобы как отправлял так и получал получатель письма.
Благодарю.
 
vimpel76 Думаю надо использовать:
   vbCr – возврат каретки;
   vbLf – перевод строки;
   vbCrLf – возврат каретки и перевод строки, аналог нажатия клавиши «Enter»;
   vbNewLine – новая строка.
Вот наглядный пример:
Скрытый текст
Источник:https://vremya-ne-zhdet.ru/vba-excel/perenos-koda-i-teksta/?ysclid=ltsohdd14e708805833
Изменено: Владимир S - 16.03.2024 15:15:11
Страницы: 1
Наверх