David Emerson
newsgrps at dalyn.co.nz
Mon Mar 17 20:20:28 CDT 2014
I thought as much Stuart but not sure what I should use.
I have the following in the code below which I tried:
' .Item(cdoSMTPAuthenticate) = cdoBasic
' .Item(cdoSendUserName) = "username"
' .Item(cdoSendPassword) = "password"
I used the Windows username and password but I suspect that it should have
been the Exchange credentials. Can anyone clear this up for me before I go
back to the client and do some testing?
Regards
David
-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Stuart McLachlan
Sent: Tuesday, 18 March 2014 11:11 a.m.
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] Error Sending Emails Through Exchange
I don't use CDO ( I role my own email code), but I'd strongly suspect this
line:
.Item(cdoSMTPAuthenticate) = cdoAnonymous
You will need an authenticated connection to the Exchange server before it
will accept email for an outside address.
On 18 Mar 2014 at 9:53, David Emerson wrote:
> Hi Listers,
>
> Below is the error message my Access database is getting when I try to
> send out an email using cdosys.dll:
>
> Error Number : -2147220977
> Error Msg: The server rejected one or more recipient addresses. The
> server response was: 550 5.7.1 Unable to relay.
>
> The VBA code I am using is below:
>
> Dim msg As Message, strSMTPServer As String, intSMTPConnectionTimeout
As Integer, intSMTPServerPort As Integer
> Dim strOrganisation As String, strFrom As String, strSubject As
String, strBody As String, strHeader As String
>
> strSMTPServer = DLookup("EmailSMTPServer", "tlkpVariable",
"VariableID = > 1")
> intSMTPConnectionTimeout = DLookup("EmailSMTPConnectionTimeout",
"tlkpVariable", "VariableID = 1")
> intSMTPServerPort = DLookup("EmailSMTPServerPort", "tlkpVariable",
"VariableID = 1")
> strOrganisation = DLookup("EmailOrganisation", "tlkpVariable",
"VariableID = 1")
> strFrom = DLookup("EmailSender", "tlkpVariable", "VariableID = 1")
> strSubject = DLookup("EmailSubject", "tlkpVariable", "VariableID = 1")
> strBody = DLookup("EmailBody", "tlkpVariable", "VariableID = 1")
>
> Set msg = CreateObject("CDO.Message")
> With msg
> With .Configuration.Fields
> .Item(cdoSMTPAuthenticate) = cdoAnonymous
> ' .Item(cdoSMTPAuthenticate) = cdoBasic
> ' .Item(cdoSendUserName) = "username"
> ' .Item(cdoSendPassword) = "password"
> .Item(cdoSendUsingMethod) = cdoSendUsingPort
> .Item(cdoSMTPServer) = strSMTPServer
> .Item(cdoSMTPConnectionTimeout) =
intSMTPConnectionTimeout
> .Item(cdoSMTPServerPort) = intSMTPServerPort
> .Update
> End With
> .Organization = strOrganisation
> .To = strTo
> .Subject = Nz(strSubject, " ")
> .TextBody = Nz(strBody, " ")
> .From = strFrom
> .Send
> End With
> Set msg = Nothing
>
> The lines in red above have also been tried using the users windows
> logon and password but the same message appeared (not sure if this was
> the correct data for these properties though).
>
> The code has worked fine for other clients but they have not used
> Microsoft Exchange for their emails.
>
> It also works if the recipient address has the same domain as the
> server.
>
> Any help would be appreciated.
>
> Regards
>
> David Emerson
> Dalyn Software Ltd
> Wellington, New Zealand