Abstract
Sendgrid is popular. No doubt about it! Especially for
Dev and Test scenarios where you get 25000 free emails a month. This post
describes how can you use Sendgrid to send email using PowerShell.
Don’t expect me to write blog post on C# code for
sending email using Sendgrid. Because, Sendgrid will keep updating their API
(like V2, V3 and so on); ultimately C# code will also change. So you can refer C# or other languages code sample from SendGrid documentation itself.
Provision SendGrid account on Microsoft Azure
Let’s create a SendGrid account quickly on Azure. Login
to Azure portal on the link –
http://portal.azure.com
. Sendgrid
today available only in selected region. Example, not available in India
region. I am based out of India so nearest data center for me is SouthEast Asia
referred as SEA in the blog). I will select the SEA datacenter for the creation
of SendGrid account on Azure. Therefore first let’s add Resource group in SEA
region and then create SendGrid in the same Resource group.
Select “Resource Groups” in left had pane. It lists all
resource groups present in your subscription. Click on “Add” button present at
the top. Provide the resource group name as SendEmailRG, subscription of your
choice and location as SEA as shown below. Click on Create to finish the
resource group creation process.
Click on New.
You will see a search box at the top. Type Sendgrid on the search box;
intelligence will automatically display “Sendgrid Email Deliverys”. Select the
same and press enter. Another horizontal blade will open. Select the Sendgrid
Email Delivery option and click on Create.
Provide the name of account as “EmailSample”. Provide
the password of your choice and remember it. We will need it later. Select the
Azure subscription and select existing option for resource group. Select
SendEmailRG resource group. This step will ensure that SendGrid account in
created in SEA region.
On pricing tier; select the option as Free as shown
below –
If you have money feel free to select the other paid pricing
tiers.
Provide the contact information. I have provided below.
Remember you will receive confirmation email from SendGrid. So don’t put values
like below; rather give genuine values.
Select “I give…” checkmark for legal terms and click on
Purchase. Then proceed ahead and finish the SendGrid account creation process.
Retrieve essential detail from SendGrid account
To send email we need username, password and SMTP server
name. This information is available on Azure portal under your sendgrid
account. So go to the SendGrid account we created in above step from Azure
portal. Click on Configurations and you will see the required information
listed as shown below –
PowerShell to Send Email
Let’s first define the essential parameters based on the
information we captured from configurations tab of sendgrid tab –
$Username ="YourUserNameFromPortal"
$Password
= ConvertTo-SecureString "YourPassowrdWhichYouHadEnteredDuringSendGridCreation"
-AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential $Username, $Password
$SMTPServer
=
"smtp.sendgrid.net"
Any email object requires necessary information like email
from, email to, subject line. Let’s add this information as parameters –
$EmailFrom = "No-reply@azureadmin.com"
[string[]]$EmailTo
= "YourEmail@gmail.com"
$Subject
=
"Sending sample email using SendGrid Azure and
PowerShell"
$Body
=
"This is sample email sent using Sendgrid account
create on Microsoft Azure. The script written is easy to use."
If you observe, I am using array for $Emailto variable.
This is because if I want to add multiple email address into “To” list, I
should be able to do it using array. So I want to send email to multiple
addresses I will add them as below –
[string[]]$EmailTo
=
"YourEmail1@gmail.com",
“YourEmail2@yahoo.com”
Then use below command to send the email –
Send-MailMessage
-smtpServer $SMTPServer
-Credential $credential
-Usessl -Port 587 -from $EmailFrom -to $EmailTo -subject
$Subject -Body
$Body
-BodyAsHtml
Manage option on SendGrid account
Look at the below screenshot for highlighted option.
This option will help you in generating api key,
monitoring of your sendgrid account, failed emails , reports and so on. No this
is not another blog post on another day because Sendgrid documentation is
detailed to explain all the options. Why you want me to write blog post on the
information which is already explained so well?
Note -
Sendgrid provides API Keys which can be used for
providing limited access. The above PowerShell code do not use API Key for
sending emails. In case you want to use SendGRid API Keys based access control
and then send the email using PowerShell; I will suggest to write c# code exe
with required parameters and then invoke it using Powershell.
😊
That’s all folks. To download the entire script refer to the link - https://gallery.technet.microsoft.com/Send-email-from-Azure-eabb6d26https://gallery.technet.microsoft.com/Send-email-from-Azure-eabb6d26
For more details and C# walkthrough for SendGrid
ReplyDeletehttps://docs.microsoft.com/en-us/azure/app-service-web/sendgrid-dotnet-how-to-send-email
Thanks @Atanu :)
DeleteHow can i send attachement using sendgrid in powershell
ReplyDeleteYou can define file path under any variable and with the help of -Attachment parameters in send-MailMessage u can send attachment
DeleteNicely explained.
ReplyDeleteThank you!
I want to use SendGRid API Keys based access control and then send the email using PowerShell. Could you please explain about that. BTW Nicely Explained. Thanks for the Effort
ReplyDelete