Pregunta

Así que estoy tratando de enviar un mensaje automatizado desde un backend de Excel VBA. Soy muy competente en mis habilidades de VBA y he usado el método a continuación con un gran éxito en el pasado. Estoy teniendo problemas que utilizan este método en mi nuevo entorno y sé que tiene algo que ver con la configuración del servidor de Exchange, el problema es que el tipo que administra el servidor de Exchange ni I somos expertos en bolsa.

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

Estoy intentando enviar a un grupo de distribución que requiere autenticación. Hemos descubierto cómo eliminar esa "función" para enviar un correo electrónico, pero esto no es ideal. He intentado usar la confianza básica / clara (1) para el método de autenticación, suministró mi nombre de usuario y contraseña a los campos requeridos en el objeto de configuración y aún no hay dados. Cuando enví un correo electrónico de Outlook, no tengo problemas para enviar un correo electrónico que requiera autenticación, pero al usar CDO Exchange no me permitirá autenticarse. También nunca resuelve la dirección del remitente, no está seguro de si eso está relacionado o no, pero por el bien de la divulgación completa, lo es. Sé que el servidor de intercambio / SMTP está configurado para permitir el envío anónimo, pero parece que parece ser la única opción que usará CDO.

Estoy en mi extremo WITS. ¿Algún gurús de intercambio que puede ofrecer algunas sugerencias?

gracias, Chad

¿Fue útil?

Solución

Bueno, finalmente logré resolver mi propio problema.Si alguien más está teniendo problemas similares, pensé que compartiría.Resultó ser un problema del puerto.

Los puertos estándar para el intercambio son 25 y 465 para SSL (creo).

En este caso, el puerto 25 se configuró para enviar de forma anónima de detrás de nuestro firewall (por impresoras y máquinas de fax principalmente).Intenté usar el puerto 465, pero informó que el puerto no existía.

Después de cavar en el servidor de Exchange, encontré que se usaba algún número de puerto arbitrario para configurar los mensajes autenticados.Una vez que haya codificado el número de puerto correcto en el código anterior, no tuve problemas para que funcione.¡Feliz codificación!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top