sending email

  • Thread starter Thread starter camdonsquire
  • Start date Start date
C

camdonsquire

Guest
I am trying to send an email from outlook using access. The problem that i am having is that the email is not sending. The email gets to outlook were i can view it, but it is not getting into any mail box (hotmail, Domain mail)

The email address's come from a query that produced a list of email address's.


I have used the code from some were else, but this is the closest i have got to performing the task i need.

Here is the code

Option Compare Database
Option Explicit
' You need to declare a reference to the Outlook library, and the filesystemobject.
' this is not as hard as it sounds.
'
' Look in the menu above, and click Tools, then select References
'
' Scroll down the list until you see
' Microsoft Scripting Runtime -- and put a check next to it (if one is not there already)
'
' Microsoft Outlook Object Library -- check that.
' There will be some version number there as well; it doesn't matter.
' This will work with Outlook98 and Outlook2000 and OutlookXP. It hasn't been tested on Outlook 2003 yet.


Public Function SendEMail()

Dim db As DAO.Database
Dim MailList As DAO.Recordset
Dim MyOutlook As Outlook.Application
Dim MyMail As Outlook.MailItem
Dim Subjectline As String
Dim BodyFile As String
Dim fso As FileSystemObject
Dim MyBody As TextStream
Dim MyBodyText As String

Set fso = New FileSystemObject

' First, we need to know the subject.
' We can't very well be sending around blank messages...

Subjectline$ = InputBox$("Please enter the subject line for this mailing.", _
"We Need A Subject Line!")

' If there's no subject, call it a day.

If Subjectline$ = "" Then
MsgBox "No subject line, no message." & vbNewLine & vbNewLine & _
"Quitting...", vbCritical, "E-Mail Merger"
Exit Function
End If

' Now we need to put something in our letter...

BodyFile$ = InputBox$("Please enter the filename of the body of the message.", _
"We Need A Body!")

' If there's nothing to say, call it a day.

If BodyFile$ = "" Then
MsgBox "No body, no message." & vbNewLine & vbNewLine & _
"Quitting...", vbCritical, "I Ain't Got No-Body!"
Exit Function
End If

' Check to make sure the file exists...
If fso.FileExists(BodyFile$) = False Then
MsgBox "The body file isn't where you say it is. " & vbNewLine & vbNewLine & _
"Quitting...", vbCritical, "I Ain't Got No-Body!"
Exit Function
End If

' Since we got a file, we can open it up.
Set MyBody = fso.OpenTextFile(BodyFile, ForReading, False, TristateUseDefault)

' and read it into a variable.
MyBodyText = MyBody.ReadAll

' and close the file.
MyBody.Close

' Now, we open Outlook for our own device..
Set MyOutlook = New Outlook.Application


' Set up the database and query connections

Set db = CurrentDb()

Set MailList = db.OpenRecordset("MyEmailAddresses")

' now, this is the meat and potatoes.
' this is where we loop through our list of addresses,
' adding them to e-mails and sending them.

Do Until MailList.EOF

' This creates the e-mail

Set MyMail = MyOutlook.CreateItem(olMailItem)

' This addresses it
MyMail.To = MailList("email")

'This gives it a subject
MyMail.Subject = Subjectline$

'This gives it the body
MyMail.Body = MyBodyText


'If you want to send an attachment
'uncomment the following line

'MyMail.Attachments.Add "c:\dbgout.txt", olByValue, 1, "My Displayname"
'MyMail.Attachments.Add "c:\dbgout.txt", olByValue, 1, "My Displayname2"

' To briefly describe:
' "c:\myfile.txt" = the file you want to attach
'
' olByVaue = how to pass the file. olByValue attaches it, olByReference creates a shortcut.
' the shortcut only works if the file is available locally (via mapped or local drive)
'
' 1 = the position in the outlook message where to attachment goes. This is ignored by most
' other mailers, so you might want to ignore it too. Using 1 puts the attachment
' first in line.
'
' "My Displayname" = If you don't want the attachment's icon string to be "c:\myfile.txt" you
' can use this property to change it to something useful, i.e. "4th Qtr Report"



'This sends it!
MyMail.Send

'Some people have asked how to see the e-mail
'instead of automaticially sending it.
'Uncomment the next line
'And comment the "MyMail.Send" line above this.

'MyMail.Display



'And on to the next one...
MailList.MoveNext

Loop

'Cleanup after ourselves

Set MyMail = Nothing


'Uncomment the next line if you want Outlook to shut down when its done.
'Otherwise, it will stay running.

'MyOutlook.Quit
Set MyOutlook = Nothing

MailList.Close
Set MailList = Nothing
db.Close
Set db = Nothing

End Function
 
have you checked out the "docmd.sendobject" method? This works perfectly for me to send emails from access . Details are in the access help file or of course you can search this site for a number of threads on the subject.
 
docmd.sendobject???

I have tried using the docmd.sendobject command before, but i am a novice and i have absolutely no idea how to use it.

The script which i had previously was already made, sad really, also it is the closest i have got to sending a email.
 
check out the help file for the sendobject method and action it is really very comprehensive.

A fragment of code from a recent project is as follows

strMailText = "Invoice Number; " & strInvoiceID & " Customer Number; " & strCustNo & " Date; " & datDate

DoCmd.SendObject acSendReport, , acFormatSNP, "jcullan@easynet.co.uk", , , "Invoice", strMailText, False


what this does is send the currently open report as a snapshot file ( basically a screenshot of the report which can be opened outside of access ) to an email address ( this can easily be replaced by a string so you can loop through a list of addresses ), no copies or blind copies , with a title "invoice" , a body of text which is created by the string strMailText, and by setting edit message to false the default mail program should send the mail automatically. If you just want to send a message with no attachement just leave the first three arguments blank.

Try starting at a very basic level using the Immeadiate window to send test emails to yourself. When you get this bit working you can then get the other bits sorted.

Try searching the forum as there are a number of threads on this topic
 

Users who are viewing this thread

Back
Top Bottom