Solved

Powershell script to parse through sender list and send out message

Posted on 2010-08-26
2
905 Views
Last Modified: 2012-06-27
Hello everyone,

I need help with a powershell script that will do the following:

1-parse through a csv file and create a list of emails and first name (and maybe place them in two separate arrays)
2- get content of a text file and use as a body of an email message
3- send out emails (at once or one-by-one) to the email addresses and first names parsed from step one.

not really sure how could this be accomplished, but I was thinking something among the following lines (total pseudo code :))

$PathToFiles= c:\testpath
$E-mailSubject= "My Dissertation"

(Now, here's where is gets interesting and confusing)

$ListofFirstNames=  import-csv $PathToFiles\ListofNamesAndEmailAddress.csv |select First_Name
$firstname= for each-item in $ListofFirstNames

$ListofEmails= import-csv $PathToFiles\ListofNamesAndEmailAddress.csv |select E-mail
$mailto= for each-item in $ListofEmails

the emailbody.doc will look something like this:
"Dear $firstname,
bla bla bla bla
Thank you"

$E-MailBody= Get-Content "$PathToFiles\e-mailbody.doc" (replacing each $firstname with a name from the first name arrary)
$sendto= $mailto (one email address per message)
$send-message

I know this isn't very clear, so please feel free to ask any questions you may have.  I'm using powershell 2.0 ctp3

thanks in advance
0
Comment
Question by:bloodywicked
  • 2
2 Comments
 
LVL 32

Accepted Solution

by:
endital1097 earned 500 total points
ID: 33535478
i think we just need to work on the body
the columns i'm using in the csv are email and firstname
$SmtpClient = New-Object system.Net.Mail.SmtpClient
$MailMessage = New-Object system.Net.Mail.MailMessage
$SmtpClient.Host = "exch.contoso.com"
$MailMessage.From = "Somone <sender@contoso.com>"
$MailMessage.Subject = "Powershell message"
$MailMessage.IsBodyHtml = $True

$body = @()
import-csv c:\messages.csv | foreach-object { $MailMessage.To.Add($_.email);
$body = "Dear $_.FirstName
$body += Get-Content "C:\yourtext.txt"
$MailMessage.Body = $body
$smtpClient.Send($MailMessage)
}

Open in new window

0
 
LVL 32

Expert Comment

by:endital1097
ID: 33535618
one change where ` is the character next to the 1, not the apostrophe
$body = "Dear " + $_.FirstName + "`n"

Open in new window

0

Featured Post

Is Your AD Toolbox Looking More Like a Toybox?

Managing Active Directory can get complicated.  Often, the native tools for managing AD are just not up to the task.  The largest Active Directory installations in the world have relied on one tool to manage their day-to-day administration tasks: Hyena. Start your trial today.

Question has a verified solution.

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

Disabling the Directory Sync Service Account in Office 365 will stop directory synchronization from working.
Find out what you should include to make the best professional email signature for your organization.
In this fifth video of the Xpdf series, we discuss and demonstrate the PDFdetach utility, which is able to list and, more importantly, extract attachments that are embedded in PDF files. It does this via a command line interface, making it suitable …
Video by: Mark
This lesson goes over how to construct ordered and unordered lists and how to create hyperlinks.

770 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