(изменено: A77x7, 15 сентября 2014г. 14:46:25)

Тема: Отправка сообщений через внешнюю почту (CDO)

Код:

public sub send_notification(to_address, body, subject, from_address)
  'if from_address = empty then 
  if from_address = "" then from_address = ThisApplication.CurrentUser.Mail
  if from_address = "" then from_address = "xxx@yyy.ru"
  if subject = empty then subject = "Уведомление системы электронного документооборота (TDMS)"
  
  Set objConf = CreateObject("CDO.Configuration")
  Set objEmail = CreateObject("CDO.Message")
  Set objFlds = objConf.Fields
  
  With objFlds
    .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 'cdoSendUsingPort это порт
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "10.20.111.222" ' Имя SMTP сервера
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 2
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    .Update
  End With
  
  Set objEmail.Configuration = objConf
  objEmail.From = from_address
  objEmail.To = to_address
  objEmail.Subject = subject
  'objEmail.Textbody = body
  objEmail.HTMLBody = body
  objEmail.DSNOptions = 14  'Success, failure or delay (cdoDSNSuccessFailOrDelay)
  objEmail.Fields.Update
  objEmail.Send
end sub

Код взят с этого форума и работает на всех машинах... кроме одной (пока одной).
На этой машине на последней строке (objEmail.Send) получаем ошибку "транспорту не удалось подключиться к серверу", письмо не уходит.
ТДМС и Офис переставляли.
Кроме того, на этой же машине замечена ещё одна странность - не открываются ссылки tdms://...
Точнее они до ТДМС доходят, но в обработчике OnDDE Command == "is_tray_allow" вместо "locate" или "edit", и object == nothing. Даже если ссылка tdms://locate/{...}
Никто не сталкивался? В чём может быть дело?
P.S. Win7x64, Office2010x64, TDMS 4.0.235.1
P.P.S. Переписал этот код на C# (в виде самостоятельного exe) - тоже самое, т.е. ТДМС-то как бы ни причём, хотя опять же is_tray_allow - это чьё?

Re: Отправка сообщений через внешнюю почту (CDO)

A77x7 пишет:

...работает на всех машинах... кроме одной (пока одной).
На этой машине на последней строке (objEmail.Send) получаем ошибку "транспорту не удалось подключиться к серверу", письмо не уходит.
ТДМС и Офис переставляли.
Кроме того, на этой же машине замечена ещё одна странность - не открываются ссылки tdms://...
Точнее они до ТДМС доходят, но в обработчике OnDDE Command == "is_tray_allow" вместо "locate" или "edit", и object == nothing. Даже если ссылка tdms://locate/{...}
Никто не сталкивался? В чём может быть дело?
P.S. Win7x64, Office2010x64, TDMS 4.0.235.1
P.P.S. Переписал этот код на C# (в виде самостоятельного exe) - тоже самое, т.е. ТДМС-то как бы ни причём, хотя опять же is_tray_allow - это чьё?

Я бы подумал, что проблема с правами/реестром. Попробуйте запустить TDMS под учеткой локального администратора и выполнить все команды, которые у вас не работают. Какой результат? Если "вдруг" все заработало, попробуйте повторить те действия под обычным пользователем

Re: Отправка сообщений через внешнюю почту (CDO)

McZag пишет:

Я бы подумал, что проблема с правами/реестром. Попробуйте запустить TDMS под учеткой локального администратора и выполнить все команды, которые у вас не работают. Какой результат? Если "вдруг" все заработало, попробуйте повторить те действия под обычным пользователем

Результат тот же. Никакой разницы. Ну и вообще этот пользователь итак локальный админ.

(изменено: McZag, 16 сентября 2014г. 14:34:59)

Re: Отправка сообщений через внешнюю почту (CDO)

A77x7 пишет:

Результат тот же. Никакой разницы. Ну и вообще этот пользователь итак локальный админ.

1. Проверить доступность сервера и порта.
2. Какой адрес пользователя?

With cdoConfig.Fields
    .Item(cdoConfigURL & "sendusing") = 2
    .Item(cdoConfigURL & "smtpauthenticate") = 1
    .Item(cdoConfigURL & "smtpserver") = SMTPserver
    .Item(cdoConfigURL & "sendusername") = sendusername
    .Item(cdoConfigURL & "sendpassword") = sendpassword
' для отправки почты с аккаунта @gmail.com
    .Item(cdoConfigURL & "smtpserverport") = 465 'порт для SSL: 465
    .Item(cdoConfigURL & "smtpusessl") = 1  'использовать аутентификацию: да
    .Update
End With

Re: Отправка сообщений через внешнюю почту (CDO)

Разобрались, виноват MacAfee (антивирус).
Спасибо.