How to write a program/macro to send a mail to a groups of e-mail

A

adi

Hi,
I am a novice at VBA programming but realised it is very powerful and useful.
I have a need to send e-mails to 10 different id's.
Given a (a)from address (b)To address(b)Subject(d)BCC(e)CC(f)Document to
send as attatchment(g)e-mail body, how to write a program that can send
e-mails automatically just by running it?
Is it easier to do it from Word or from Outlook.?
I tried to record and look at the macro that Word generates while trying to
open a doc and send e-mail. But the macro does not give any details about the
mail specifics. It just has ActiveDocument.SendMail.

How can i do this? Please advise.
 
M

Michael Bauer [MVP - Outlook]

Both, Word and Outlook is possible but if you have the code in Outlook 2003
running then there're no security prompts.

In OUtlook you can create a new e-mail with the CreateItem function. If all
the recipients should get the same message then simply add them all to the
MailItem's Recipients collection by calling Recipients.Add. The function
returns a Recipient object for which you can determine its type (olCC, olbCC
etc.). For plain text use the Body property else the HTMLBody property. Add
the attachment by calling Attachments.Add. That's it.

--
Viele Gruesse / Best regards
Michael Bauer - MVP Outlook
-- www.VBOffice.net --


Am Mon, 13 Nov 2006 21:09:01 -0800 schrieb adi:
 
A

adi

Viele Gruesse and Michael Bauer,
Thanks for your answer. It did help me understand how the process work. Can
you provide me a sample code as i am a novice in VBA programming. I do lot of
mainframe programming in Cobol. Also where do i write the piece of code? How
can i run it?
Please also suggest me a good book on MSWORD and MSOUTLOOK VBA programming.

Thanks for your time. Appreciate all your help.
Regards,
Adi
 
A

adi

Michael and Viele,
Thanks for your advise. I coded the following and it worked for me. However
teh problem i have is a dailog box is being displayed waiting for my input.
The e-mail is being sent only if i click the YES. I want to avoid/suppress
this msgbox. If suppression is not possible then i want to code in such a way
that the message box takes a default YES as if i clicked explicitly.

The message/dailog box reads.
"A program is trying to send an e-mail on your behalf.
Do you want to allow this?
If this is unexpected, this may be a virus and should choose NO."

How to suppress this dailog box? (if not atleast how to code so that it
takes YES as my default input)

Again thanks a lot for your time and appreciate your help.


Code that worked:
---------------------
Sub Macro3()
Dim oApp As Outlook.Application
Dim oMail As Outlook.MailItem
Dim strContenu As String

Set oApp = CreateObject("Outlook.Application")

Set oMail = oApp.CreateItem(olMailItem)
strContenu = "Email sent"
strContenu = strContenu + Chr(13) + Chr(10) + "next line"

Set myAttachments = oMail.Attachments
myAttachments.Add "C:\Adi\Atlas\atlas-calender.txt", olByValue, 1, "Fichier"

oMail.Body = strContenu
oMail.To = "(e-mail address removed)"
oMail.Subject = "testttttt"

oMail.Send
oApp.Quit
Set oApp = Nothing
End Sub
 
M

Michael Bauer [MVP - Outlook]

That's the security dialog I've mentioned. If the code runs in Outlook 2003
then delete the Set oApp = ... line and for the rest of code replace oApp by
Application.

BTW: 'Viele Gruesse' is German and literally means 'Many Greetings', it's
not my or any other's name :)

--
Viele Gruesse / Best regards
Michael Bauer - MVP Outlook
-- www.VBOffice.net --


Am Tue, 14 Nov 2006 10:45:01 -0800 schrieb adi:
 
M

Michael Bauer [MVP - Outlook]

In Word the Application object refers to Word.Application not
Outlook.Application. There's no documented way to use Outlook's intrinsic
Application object from outside. Maybe you can redesign your solution?

--
Viele Gruesse / Best regards
Michael Bauer - MVP Outlook
-- www.VBOffice.net --

Am Thu, 30 Nov 2006 14:40:06 -0800 schrieb Adi:
 
A

Adi

Hi,
In my following code in outlook, i am trying to e-mail a document. Before
e-mailing i want to parse the document, get the 4th line, 10th position to
the end(this will give me teh fax number) and then e-mail the same document
to (e-mail address removed).


Public Sub test1()
PathToUse = "C:\Documents and Settings\Adi\My Documents\Test\"

myFile = Dir$(PathToUse & "*.doc")
While myFile <> ""

Set Word = Application.CreateObject("Word.Application")----- LINE-2

MyVar = Mid$(ActiveDocument.Paragraphs(4).Range, 10) -----LINE-1

Set oMail = Application.CreateItem(olMailItem)
Set myAttachments = oMail.Attachments
myAttachments.Add PathToUse & myFile, olByValue, 1, "Fichier"
oMail.To = "(e-mail address removed)"
'oMail.To = "(e-mail address removed)"
oMail.Subject = "testttttt"
oMail.Send

myFile = Dir$()

Wend
End Sub

Question:
How to code so that in LINE-1 in above code, ActiveDocument actually points
to myFile. Does LINE-2 is needed? Again I am new to VBA.

Thanks for your help.

Regards,
Adi
 
M

Michael Bauer [MVP - Outlook]

Please create the Word Application object once outside the loop. The open
the files with the Word.Documents.Open function. That returns a Document
object, use that instead of ActiveDocument.

--
Viele Gruesse / Best regards
Michael Bauer - MVP Outlook
-- www.VBOffice.net --


Am Fri, 1 Dec 2006 22:11:00 -0800 schrieb Adi:
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top