Domanda

Quindi sto cercando di inviare un messaggio automatico da un backend Excel VBA. Sono molto competente nelle mie abilità VBA e ho usato il metodo sottostante con grande successo in passato. Ho problemi che usano questo metodo nel mio nuovo ambiente e so che ha qualcosa a che fare con la configurazione del server di Exchange, il problema è che il ragazzo che gestisce il server di Exchange né sono esperti di scambio.

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
.

Sto tentando di inviare a un gruppo di distribuzione che richiede l'autenticazione. Abbiamo capito come rimuovere quella "funzione" per inviare un'e-mail ma questo non è l'ideale. Ho provato a utilizzare la fiducia di base / chiara (1) per il metodo di autenticazione, ha fornito il mio nome utente e la password ai campi richiesti nell'oggetto di configurazione e ancora nessun dado. Quando invii un'e-mail da Outlook non ho problemi a inviare un'e-mail che richiede l'autenticazione, ma quando si utilizza lo scambio CDO non mi consente di autenticare. Inoltre, non risolve mai l'indirizzo del mittente, non sicuro se è correlato o meno, ma per il bene della rivelazione completa lì è. So che il server Exchange / SMTP è configurato per consentire l'invio anonimo, ma questa sembra essere l'unica opzione che CDO utilizzerà.

Sono al mio wits fine. Qualsiasi guru di scambio là fuori che potrebbe essere in grado di offrire alcuni suggerimenti?

Grazie, Chad

È stato utile?

Soluzione

Bene, sono finalmente riuscito a risolvere il mio problema.Se qualcun altro ha problemi simili ho pensato di condividere.Si è rivelato essere un problema di porta.

Le porte standard per lo scambio sono 25 e 465 per SSL (credo).

In questo caso, la porta 25 è stata configurata per l'invio anonima da dietro il nostro firewall (da stampanti e fax principalmente).Ho provato a utilizzare Port 465 ma ha riferito che il porto non esisteva.

Dopo molto scavare sul server Exchange ho trovato che un numero di porta arbitrario è stato utilizzato per configurare i messaggi autenticati contro.Una volta ho coperto il numero di porta corretto nel codice sopra, non avevo problemi a farlo funzionare.Codifica felice!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top