Pergunta

Então eu estou tentando enviar uma mensagem automática a partir de um Excel VBA back-end.Eu sou muito competente no meu VBA habilidades e ter usado o método abaixo com grande sucesso no passado.Eu estou tendo problemas usando este método no meu novo ambiente, e sei que ele tem algo a ver com a configuração do Exchange server, o problema é que o cara que gerencia o exchange server nem eu somos Intercâmbio de especialistas.

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

Estou tentando enviar para um grupo de distribuição que requer autenticação.Nós descobrimos como remover essa "funcionalidade" para enviar um e-mail, mas isso não é o ideal.Tentei usar basic/limpar confiança de (1) para o método de autenticação, fornecido pelo meu nome de usuário e senha para os campos necessários no objeto de configuração e ainda não há dados.Quando eu enviar um e-mail do Outlook eu não tenho problemas no envio de um e-mail que requer autenticação, mas quando usando o CDO Exchange não me permite autenticar.Ele também nunca resolve o endereço do remetente, não tenho certeza se essa é ou não, mas por causa da divulgação completa, aí está.Eu sei que o SMTP do Exchange server está configurado para permitir anônimo enviar, mas o que parece ser a única opção que o CDO vai usar.

Eu estou no meu juízo final.Qualquer Troca de gurus lá fora, que pode ser capaz de oferecer algumas sugestões?

Obrigado, Chade

Foi útil?

Solução

Bem, eu finalmente consegui resolver o meu próprio problema.Se mais alguém está tendo problemas semelhantes, eu pensei que eu iria partilhar.Girou para fora para ser uma porta de problema.

As portas padrão para troca são de 25 e 465 para SSL (eu acredito).

Neste exemplo, a porta 25 era configurado para enviar anonimamente por trás do nosso firewall (por impressoras e aparelhos de fax, principalmente).Eu tentei usar a porta 465, mas é relatado que a porta não existe.

Depois de muito cavar no servidor do exchange descobri que alguns arbitrário número de porta foi usado para configurar as mensagens autenticadas contra.Uma vez eu codificado o número de porta correto no código acima, eu não tinha problemas em conseguir que ele funcione.Codificação feliz!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top