2009-04-20 8 views
5

Je souhaite envoyer un courrier électronique à partir de Microsoft Access sans assistance à l'aide de VBA. Je comprends que la méthode intégrée "SendObject" utilise MAPI signifiant des invites de sécurité et quelque chose comme Outlook configuré. Puisque je veux utiliser le planificateur de tâches pour lancer différents rapports, je m'éloigne de MAPI et préférerais une autre solution. Pas une demande d'expédition, mais juste en interne. Des idées?Courrier électronique utilisant Access et VBA sans MAPI

Répondre

1

Vous aurez besoin d'un serveur SMTP qui vous permettra d'envoyer des emails. Ensuite, vous devez utiliser l'objet de message CDO.

+0

Je pensais que CDO est venu avec IIS - Je l'utilise sur le client? Pour le serveur SMTP serais-je capable d'utiliser quelque chose comme Gmail? – Knox

+1

Oui, utilisez-le dans le VBA. Je n'ai rien trouvé qui limite cela à IIS ou même Exchange, mais vous pouvez avoir des problèmes avec votre fournisseur. Je ne sais pas assez sur Gmail. Je suppose qu'ils vous permettent de vous connecter avec Outlook via SMTP (je sais que vous ne voulez pas faire cela avec votre application, mais ce serait un bon test de connexion.). – JeffO

+0

J'utilisais vraiment gmail comme exemple; Je pense qu'ils utilisent un port inhabituel ou quelque chose. Je vais essayer CDO. – Knox

5

Voici le code de test qui a fonctionné pour moi avec CDO et Gmail.

Sub mtest() 

Dim cdoConfig 
Dim msgOne 

Set cdoConfig = CreateObject("CDO.Configuration") 
With cdoConfig.Fields 
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = 465 
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com" 
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "gmailname" 
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "yourpw" 

.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True 
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 

.Update 
End With 

Set msgOne = CreateObject("CDO.Message") 
Set msgOne.Configuration = cdoConfig 
msgOne.To = "[email protected]" 
msgOne.From = "[email protected]" 
msgOne.Subject = "Test email" 
msgOne.TextBody = "It works just fine" 
msgOne.send 
End Sub 
+0

été à la recherche de code qui fonctionne parfaitement avec gmail. J'ai foiré sur la configuration de smtpauthenticate. Merci! – killerbarney

1

Je le fais de cette façon, notez, vous devez avoir installé Outlook pour que cela fonctionne.


Sub btnSendEmail_Click() 
    Dim OutApp As Object 
    Dim OutMail As Object 

    Application.ScreenUpdating = False 
    Set OutApp = CreateObject("Outlook.Application") 
    OutApp.Session.Logon 

    strBody = "<html><head></head><body>" 
    strBody = strBody & "Your message goes here" 
    strBody = strBody & "</body></html>" 

    Set OutMail = OutApp.CreateItem(0) 

    OutMail.To = "[email protected]" 
    OutMail.BCC = "[email protected]" 
    OutMail.Subject = "Test message" 
    OutMail.HTMLBody = strBody 


    OutMail.Send 'Send | Display 
    Set OutMail = Nothing 
End Sub 
+0

Je ne voulais pas utiliser Outlook car il fonctionnerait sans surveillance, probablement dans un compte sans Outlook installé. – Knox

1

Redemption Outlook est gratuit et très largement utilisé: http://www.dimastr.com/redemption/

Il est très très proche du modèle objet de perspectives d'origine, de sorte que la courbe d'apprentissage est le gâteau :)

+0

Merci pour la suggestion. – Knox

Questions connexes