Вопрос

Так что я пытаюсь отправить автоматическое сообщение от Backend Excel VBA. Я очень компетентен в моем навыках VBA и использовал метод ниже с большим успехом в прошлом. У меня есть проблемы с использованием этого метода в моей новой среде, и я знаю, что это есть что связано с конфигурацией сервера Exchange, вопрос заключается в том, что парень, который управляет сервером Exchange, ни экспертов по обмену.

Public Function SendEmail(
    txtTo As String, 
    txtSubject As String, 
    txtBody As String,    
    Optional txtSender As String = vbNullString, 
    Optional txtCC As String = vbNullString, 
    Optional txtBCC As String = vbNullString)

    Dim objMsg As Object, objconfig As Object, objFields As Object

    Set objMsg = CreateObject("CDO.Message")
    Set objconfig = CreateObject("CDO.Configuration")
    Set objFields = objconfig.fields

    'Set the email configuration
    With objFields
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "SMTP"
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 2
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
        .Update
    End With

    'Apply the various fields to the email object
    With objMsg
        .Configuration = objconfig
        .From = txtSender
        .Subject = txtSubject
        .To = txtTo
        .Cc = txtCC
        .Bcc = txtBCC
        .TextBody = txtBody         
        .Send
    End With

    SendEmail = IIf(Err.Number = 0, True, False)

    'clean up
    Set objMsg = Nothing
    Set objconfig = Nothing
    Set objFields = Nothing

End Function
.

Я пытаюсь отправить в группу рассылки, которая требует аутентификации. Мы выяснили, как удалить эту «функцию», чтобы отправить электронную почту, но это не идеально. Я пробовал использовать Basic / Clear Trust (1) для метода аутентификации, подавал мое имя пользователя и пароль к необходимым полям в объекте конфигурации и до сих пор не в кости. Когда я отправляю электронное письмо от Outlook, у меня нет проблем, отправляющих на электронное письмо, которое требует аутентификации, но при использовании CDO Exchange не позволит мне аутентифицироваться. Он также никогда не разрешает адрес отправителя, не уверен, что это связано или нет, но ради полного раскрытия там он есть. Я знаю, что сервер Exchange / SMTP настроен, чтобы разрешить анонимную отправку, но это, кажется, является единственным вариантом, который будет использовать CDO.

Я на моем концах. Любой обмен гууру, который может предложить некоторые предложения?

Спасибо, Чад

Это было полезно?

Решение

Ну, мне наконец смог удалось решить мою собственную проблему.Если у кого-то еще есть подобные проблемы, я думал, что поделился.Оказалось, что это проблема порта.

Стандартные порты для обмена - 25 и 465 для SSL (я верю).

В этом случае порт 25 был сконфигурирован для отправки анонимно из-за нашего брандмауэра (в основном принтеры и факсимильные машины).Я попробовал использовать порт 465, но оно сообщило, что порт не существует.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top