Question

J'essaie donc d'envoyer un message automatisé d'un backend Excel VBA. Je suis très compétent dans mes compétences de la VBA et j'ai utilisé la méthode ci-dessous avec un grand succès dans le passé. J'ai des problèmes en utilisant cette méthode dans mon nouvel environnement et je sais que cela a quelque chose à voir avec la configuration du serveur Exchange, le problème est que le gars qui gère le serveur Exchange, ni des experts échangent.

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

Je tente d'envoyer à un groupe de distribution qui nécessite une authentification. Nous avons compris comment supprimer cette "fonctionnalité" pour envoyer un email mais ce n'est pas idéal. J'ai essayé d'utiliser la fiducie de base / claire (1) pour la méthode d'authentification, a fourni mon nom d'utilisateur et mon mot de passe aux champs requis de l'objet de configuration et toujours pas de dés. Lorsque j'envoie un courrier électronique à partir d'Outlook, je n'ai aucun problème à envoyer à un courrier électronique nécessitant une authentification, mais lorsque vous utilisez CDO Exchange, ne me permettez pas d'authentifier. Il ne résout également jamais l'adresse de l'expéditeur, je ne sais pas si cela est associé ou non, mais pour le souci de la divulgation complète, c'est. Je sais que le serveur Exchange / SMTP est configuré pour permettre l'envoi anonyme, mais cela semble être la seule option que le CDO utilisera.

Je suis à ma fin de mon esprit. Toute gourou échange qui pourrait être capable d'offrir des suggestions?

merci, Tchad

Était-ce utile?

La solution

Eh bien, j'ai finalement réussi à résoudre mon propre problème.Si quelqu'un d'autre a des problèmes similaires, je pensais partager.Il s'est avéré être un problème de port.

Les ports standard d'échange sont 25 et 465 pour SSL (je crois).

Dans ce cas, le port 25 a été configuré pour l'envoi de manière anonyme de notre pare-feu (par imprimantes et télécopieurs principalement).J'ai essayé d'utiliser le port 465 mais cela a rapporté que le port n'existait pas.

Après de nombreuses creuses sur le serveur Exchange, j'ai constaté que certains numéros de port arbitraires ont été utilisés pour configurer les messages authentifiés contre.Une fois que je suis imputé au code de port correct dans le code ci-dessus, je n'avais aucun problème à le faire fonctionner.Codage heureux!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top