Solved

VBS to send email via Outlook 2010

Posted on 2012-12-29
1
3,376 Views
Last Modified: 2012-12-29
I use multiple Exchange Accounts in Outlook 2010, I have created a VB Script to extract data from a CSV file and create emails to 20-50 users monthly.

I have this working fine but been unable to get the VBScript to select the correct Exchange Account - its not the default one which I use constantly.

Is there a way to select the correct Exchange account as the 'SendUsingAccount'?

'Mailer script that extracts information from CSV file to

'const
	const ForReading = 1
	const Separator = ","

'init
	Set fso = CreateObject("Scripting.FileSystemObject")
	Set objOutlook = CreateObject("Outlook.Application")
	

	strDataFile = "C:\Users\emailtest.csv"	'this is name and location of txt file with data
	
	intCounter = 0
	

'Read data to create mail msg

	Set objFile = fso.OpenTextFile (strDataFile, ForReading)
	
	Do
	  '1- Read records from textfile
		strTextLine = objFile.ReadLine
		arrItem= Split(strTextLine, Separator)

		'waste some memory, for clarity
		strSurname = arrItem(3)
		strFirstName = arrItem(4)	
		strEmail = arrItem(5)
		strStatus = arrItem(9)
		strDate = arrItem(10)	

		If strStatus = "Expired" Then
		  strStatusMsg = "expired"
		  strStatusDate = "at your earliest convenience"
		ElseIf strStatus = "Valid" Then
		  strStatusMsg = "expires"
		  strStatusDate = "by this date"
		Else
		  strStatusMsg = "ERRORm"
		  strStatusDate = "ERRORd"
		End If

		If strEmail = "Email" Then
			strEmail = "own@email.com"
		ElseIf strEmail = "-" Then
			strEmail = "own@email.com"
		End If
		
	  '2- Create email message

		strMsgBody = vbCrLf & _
				strFirstName & " " & strSurname & vbCrLf & _
				vbCrLf & _
				"Your qualification " & strStatusMsg & " on " & strDate & 	"." & vbCrLf & _
				vbCrLf &_
				"ipsom lorum " & strStatusDate & " " & _
				vbCrLf				
				
		' debug : msgbox to see if it works so far
		'MsgBox strEmail & vbCrLf & vbCrLf & strMsgBody, vbOKonly, strTitle

		If objOutlook = "Outlook" Then
			'Set objMailMsg = objOutlook.CreateItem(0)
			Set objMailMsg = objOutlook.CreateItem(olMailItem)
				With objMailMsg
					'.SentOnBehalfOfName = "own@email.com" 
					.To = strEmail 
					.Subject =  "Qualification " & strStatusMsg & " on " & strDate
					.Body =  strMsgBody
					'.HTMLBody =  strMsgBody
					'.BodyFormat = olFormatHTML
					'.Importance = olImportanceNormal
					'.DeleteAfterSubmit = True		'don't keep sent mail
				End With
			If objMailMsg.To <> "" Then
				SMTPAddress = "own@email.com"
				With objMailMsg
					.SendUsingAccount = SMTPAddress
					.Send
				End With
			end if				
			intCounter = intCounter + 1
		End If
		Set objMailMsg = Nothing
 
	Loop While objFile.AtEndOfStream = False
	
	'cleanup
	objFile.Close
	Set objFile = Nothing
	Set fso = Nothing
	
'	objOutlook.Quit
	Set objOutlook = Nothing

	strFeedback="Script completed" & vbCrLf & _ 
			intCounter & " messages placed in Outlook OutBox"
	MsgBox strFeedback, vbOKonly, StrTitle

	Wscript.Quit

Open in new window


I have 3 different Exchange accounts configured in Outlook plus iCloud and own ISP email using POP3.  I need to use one of the Exchange accounts...

Many thanks in advance
0
Comment
Question by:TazDevil1674
1 Comment
 
LVL 9

Accepted Solution

by:
TazDevil1674 earned 0 total points
ID: 38730149
I have resolved this myself...  

If objMailMsg.To <> "" Then
				SMTPAddress = "own@email.com"
				With objMailMsg
					Set .SendUsingAccount = .Session.Accounts.Item(3)
					.Send
				End With
			end if	

Open in new window


Once I specified SET before the .SendUsingAccount it actually worked (I changed the .send to .display to see the output before it was sent)

I found a macro for Outlook to show the correct Session Numbers for each account
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Are you unable to connect or configure Hotmail email account in Microsoft Outlook 2010, 2007? Or Outlook.com emails are not downloading to Outlook? Lets’ see the problem and resolve Outlook Connector error syncing folder hierarchy (0x8004102A).
When you see single cell contains number and text, and you have to get any date out of it seems like cracking our heads.
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …
A short tutorial showing how to set up an email signature in Outlook on the Web (previously known as OWA). For free email signatures designs, visit https://www.mail-signatures.com/articles/signature-templates/?sts=6651 If you want to manage em…

839 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question