Charlotte Foust
cfoust at infostatsystems.com
Wed Mar 3 10:24:12 CST 2010
Max, The problem with CDO is that it may not be there. That's the reason we started using Redemption years ago. CDO is no longer installed with Windows or with Office. If the user doesn't take steps to install it, it won't be available. Charlotte Foust -----Original Message----- From: accessd-bounces at databaseadvisors.com [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Max Wanadoo Sent: Wednesday, March 03, 2010 2:40 AM To: Access Developers discussion and problem solving Subject: Re: [AccessD] Email problem. Again Here are THREE examples that work using CDO. Nothing to Register, just replace the examples with real data. Max Option Compare Database Option Explicit ' intServerPort could be 587 or 465 but usually 25 ' intAuthenticate can be 0 = Anonymous, 1 = Basic 2= cdoNTLM, 3 = cdoMessage Sub SendVia1() Call pfEmailByCDO( _ strFrom:="Server <Server at myserver.com>", _ strSubject:="My Subject", _ strBody:="My Body", _ strTo:="my.client at client.com;secretary at client.com", _ strCC:="", _ strBCC:="", _ strSMTPServer:="mail.myserver.com", _ strSMTPUserName:="server at myserver.com", _ strSMTPPwd:="mysecretpassword", _ strUsesSSL:="False", _ bDisplay:=True, _ intPort:=2, _ intServerPort:=25, _ intAuthenticate:=1, _ intSecs2Wait:=60, _ strAttachment:="c:\MyTest.txt") End Sub Sub SendVia2() Call pfEmailByCDO( _ strFrom:="Developer <great.stuff at developers.com>", _ strSubject:="My Subject", _ strBody:="My Body", _ strTo:="my.client at client.com", _ strCC:="", _ strBCC:="", _ strSMTPServer:="smtp.developers.com", _ strSMTPUserName:="great.stuff at developers.com", _ strSMTPPwd:="mysecretpassword", _ strUsesSSL:="False", _ bDisplay:=True, _ intPort:=2, _ intServerPort:=25, _ intAuthenticate:=1, _ intSecs2Wait:=60, _ strAttachment:="c:\MyTest.txt") End Sub Sub SendViaGoogle() Call pfEmailByCDO( _ strFrom:="My Google <me.google at googlemail.com>", _ strSubject:="My Google Subject", _ strBody:="My Body", _ strTo:="my.client at client.com", _ strCC:="", _ strBCC:="", _ strSMTPServer:="smtp.gmail.com", _ strSMTPUserName:="me.google", _ strSMTPPwd:="mysecretpassword", _ strUsesSSL:="true", _ bDisplay:=True, _ intPort:=2, _ intServerPort:=465, _ intAuthenticate:=1, _ intSecs2Wait:=60, _ strAttachment:="c:\MyTest.txt") End Sub Public Function pfEmailByCDO(strFrom As String, strSubject As String, strBody As String, _ strTo As String, strCC As String, strBCC As String, _ strSMTPServer, strSMTPUserName, strSMTPPwd, strUsesSSL, _ intPort, intServerPort, intAuthenticate, intSecs2Wait, _ bDisplay As Boolean, Optional strAttachment As String) On Error GoTo errhandler Const conErr1 As String = "The SMTP server rejected one or more recipient addresses. Response was: 550 " Const conErr2 As String = "The SMTP server rejected one or more recipient addresses. Response was: 501 bad address syntax: <" Const ConErrX As String = "The transport failed to connect to the SMTP server" Dim strErr As String Dim objMessage Set objMessage = CreateObject("CDO.Message") ' Create the message object. objMessage.from = strFrom objMessage.To = strTo objMessage.cc = strCC objMessage.bcc = strBCC objMessage.Subject = strSubject ' Now for the Message Options Part. objMessage.TextBody = strBody objMessage.AddAttachment strAttachment objMessage.Configuration.Fields.Item(" http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTPServer objMessage.Configuration.Fields.Item(" http://schemas.microsoft.com/cdo/configuration/sendusername") = strSMTPUserName objMessage.Configuration.Fields.Item(" http://schemas.microsoft.com/cdo/configuration/sendpassword") = strSMTPPwd objMessage.Configuration.Fields.Item(" http://schemas.microsoft.com/cdo/configuration/smtpusessl") = strUsesSSL objMessage.Configuration.Fields.Item(" http://schemas.microsoft.com/cdo/configuration/smtpserverport") = intServerPort objMessage.Configuration.Fields.Item(" http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = intAuthenticate objMessage.Configuration.Fields.Item(" http://schemas.microsoft.com/cdo/configuration/sendusing") = intPort objMessage.Configuration.Fields.Item(" http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = intSecs2Wait objMessage.Configuration.Fields.Update ' Update configuration If bDisplay Then MsgBox objMessage.GetStream.ReadText ' Use to show the message. End If objMessage.Send ' Send the message. DoEvents exithere: Exit Function errhandler: strErr = "pfEmailByCDO - Send Errors " & Err.Description If InStr(strErr, ConErrX) > 0 Then strErr = strErr & " No Email Sent" End If Debug.Print strErr MsgBox strErr GoTo exithere End Function Private Function fFileContents(strFilePath As String) As String 'These constants are defined to make the code more readable Const ForReading = 1, ForWriting = 2, ForAppending = 8 Dim fso, f Set fso = CreateObject("Scripting.FileSystemObject") 'Open the file for reading Set f = fso.OpenTextFile(strFilePath, ForReading) 'The ReadAll method reads the entire file fFileContents = f.ReadAll f.Close 'Close the file Set f = Nothing Set fso = Nothing End Function -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com