• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 3911
  • Last Modified:

VBS to send email via Outlook 2010

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
TazDevil1674
Asked:
TazDevil1674
1 Solution
 
TazDevil1674Author Commented:
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

Easily manage email signatures in Office 365

Managing email signatures in Office 365 can be a challenging task if you don't have the right tool. CodeTwo Email Signatures for Office 365 will help you implement a unified email signature look, no matter what email client is used by users. Test it for free!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now