Smudger Smith
I like numbers me
- Local time
- Today, 09:36
- Joined
- May 30, 2007
- Messages
- 25
I have some code (Below) that I have used to send e-mails via outlook.
Thanks to Mr Gates I can't do this any more - Looking at varioous threads it seems I have to use SMTP?
How the heck do i change this to SMTP
Guidance please as I have an internal customer on my back about this (And he is quite fat, so it hurts!)
Public Function SendEmailToError()
PROC_DECLARATIONS:
Dim olApp As Outlook.Application
Dim olnamespace As Outlook.NameSpace
Dim olMail As Outlook.MailItem
Dim dbs As Database
Dim rstEmailDets As Recordset
Dim strSender As String
Dim strRecipient As String
Dim strEmail As String
PROC_START:
On Error GoTo PROC_ERROR
PROC_MAIN:
DoCmd.SetWarnings False
Set dbs = CurrentDb
'Put on hourglass
DoCmd.Hourglass True
'Collect the email details in a recordset to use in the email loop below
Set rstEmailDets = dbs.OpenRecordset("SELECT * FROM TBL_0299_ERROR_FILE;")
With rstEmailDets
.MoveFirst
Do While Not rstEmailDets.EOF
'Set parameters for email: recipient name, recipient email
strRecipient = Nz(rstEmailDets("NAME"), "")
strEmail = Nz(rstEmailDets("E_MAIL1"), "")
strBody = Nz(rstEmailDets("SUPRESS_REASON"), "")
strSite = Nz(rstEmailDets("RESTOID"), "")
'Create a new instance of an Outlook Application object
Set olApp = New Outlook.Application
Set olnamespace = olApp.GetNamespace("MAPI")
Set olMail = olApp.CreateItem(olMailItem)
With olMail
'Email Details
.To = strEmail
.Subject = "MTI message for site " & strSite
.Body = "An error has been detected in association with " & strRecipient _
& ". The cause of the error is: " & strBody
.Importance = olImportanceNormal
.Send
End With
.MoveNext
Loop
End With
MsgBox "All Emails have now been sent, Thank you for your patience"
PROC_EXIT:
' Perform cleanup code here, set recordsets to nothing, etc.
On Error Resume Next
DoCmd.RunCommand acCmdWindowHide '(hides the database window)
Set olApp = Nothing
Set olnamespace = Nothing
Set olMail = Nothing
Set dbs = Nothing
Set rstEmailDets = Nothing
DoCmd.Hourglass False
Exit Function
PROC_ERROR:
If Err = -2147467259 Then
MsgBox "You have exceeded the storage limit on your mail box. Please delete some items before clicking OK", vbOKOnly
Resume
End If
If Err = 2501 Then
MsgBox "You have attempted to cancel the output of the emails." & vbCrLf & _
"This will cause major problems." & vbCrLf & _
"Please be Patient"
Resume
End If
End Function
Thanks in advance
Smudger
Thanks to Mr Gates I can't do this any more - Looking at varioous threads it seems I have to use SMTP?
How the heck do i change this to SMTP
Guidance please as I have an internal customer on my back about this (And he is quite fat, so it hurts!)
Public Function SendEmailToError()
PROC_DECLARATIONS:
Dim olApp As Outlook.Application
Dim olnamespace As Outlook.NameSpace
Dim olMail As Outlook.MailItem
Dim dbs As Database
Dim rstEmailDets As Recordset
Dim strSender As String
Dim strRecipient As String
Dim strEmail As String
PROC_START:
On Error GoTo PROC_ERROR
PROC_MAIN:
DoCmd.SetWarnings False
Set dbs = CurrentDb
'Put on hourglass
DoCmd.Hourglass True
'Collect the email details in a recordset to use in the email loop below
Set rstEmailDets = dbs.OpenRecordset("SELECT * FROM TBL_0299_ERROR_FILE;")
With rstEmailDets
.MoveFirst
Do While Not rstEmailDets.EOF
'Set parameters for email: recipient name, recipient email
strRecipient = Nz(rstEmailDets("NAME"), "")
strEmail = Nz(rstEmailDets("E_MAIL1"), "")
strBody = Nz(rstEmailDets("SUPRESS_REASON"), "")
strSite = Nz(rstEmailDets("RESTOID"), "")
'Create a new instance of an Outlook Application object
Set olApp = New Outlook.Application
Set olnamespace = olApp.GetNamespace("MAPI")
Set olMail = olApp.CreateItem(olMailItem)
With olMail
'Email Details
.To = strEmail
.Subject = "MTI message for site " & strSite
.Body = "An error has been detected in association with " & strRecipient _
& ". The cause of the error is: " & strBody
.Importance = olImportanceNormal
.Send
End With
.MoveNext
Loop
End With
MsgBox "All Emails have now been sent, Thank you for your patience"
PROC_EXIT:
' Perform cleanup code here, set recordsets to nothing, etc.
On Error Resume Next
DoCmd.RunCommand acCmdWindowHide '(hides the database window)
Set olApp = Nothing
Set olnamespace = Nothing
Set olMail = Nothing
Set dbs = Nothing
Set rstEmailDets = Nothing
DoCmd.Hourglass False
Exit Function
PROC_ERROR:
If Err = -2147467259 Then
MsgBox "You have exceeded the storage limit on your mail box. Please delete some items before clicking OK", vbOKOnly
Resume
End If
If Err = 2501 Then
MsgBox "You have attempted to cancel the output of the emails." & vbCrLf & _
"This will cause major problems." & vbCrLf & _
"Please be Patient"
Resume
End If
End Function
Thanks in advance
Smudger