Setup SendGrid Mail Service in Azure

Hallo zusammen,

In diesem Blogbeitrag beschreibe ich, wie man einen SendGrid Account in Azure aufsetzt um Mails Script zu versenden.

How to Send Email Using SendGrid with Azure

https://docs.microsoft.com/en-us/azure/sendgrid-dotnet-how-to-send-email

In einer bestehenden Subscription in einer Resourcegroup auf "+ Add" klicken.

Im Suchfeld dann "SendGrid" eingeben

Nun auf "Create" klicken. Wie man sieht, können bis zu 25'000 Mails pro Monat gratis versendet werden.

Nun müssen einige Informationen eingegeben werden. Die Email welche hier angegeben wird, muss später den Account verifizieren.

Nachdem die Resource in Azure erstellt wurde, kann man direkt zum Objekt.

Um SendGrid zu verwalten muss man oben auf "Manage" klicken.

Dort landet man auf der https://app.sendgrid.com/ Website ohne sich nochmals einloggen zu müssen. Nun muss die Emailadresse verifiziert werden.

Anschliessend erhält man ein Mail, bei dem man die Emailadresse verifiziert wird.

Das wichtigste ist eigentlich das erzeugen vom API Key

Der API Key wird nur einmal angezeigt, also rasch kopieren und sicher verwahren.

Um Mails mit PowerShell zu versenden habe ich mir den Code von Paolo Frigo ausgeliehen.

#Paolo Frigo, https://www.scriptinglibrary.com
<#
.Synopsis
    This function sends an email using SendGrid APIs
 
.DESCRIPTION
    This function sends an email using SendGrid REST API.
 
.EXAMPLE
   Send-EMailWithSendGrid -from "email@domain" -to "email@domain" -ApiKey "MY_SENDGRID_API_KEY" -Body "Test 1..2..3!" -Subject "Sendgrid Test"
 
.NOTES
   Author Paolo Frigo, https://www.scriptinglibrary.com
#>
function Send-EmailWithSendGrid {
     Param
    (
        [Parameter(Mandatory=$true)]
        [string] $From,
 
        [Parameter(Mandatory=$true)]
        [String] $To,
 
        [Parameter(Mandatory=$true)]
        [string] $ApiKey,
 
        [Parameter(Mandatory=$true)]
        [string] $Subject,
 
        [Parameter(Mandatory=$true)]
        [string] $Body
 
    )
 
    $headers = @{}
    $headers.Add("Authorization","Bearer $apiKey")
    $headers.Add("Content-Type", "application/json")
 
    $jsonRequest = [ordered]@{
                            personalizations= @(@{to = @(@{email = "$To"})
                                subject = "$SubJect" })
                                from = @{email = "$From"}
                                content = @( @{ type = "text/plain"
                                            value = "$Body" }
                                )} | ConvertTo-Json -Depth 10
    Invoke-RestMethod   -Uri "https://api.sendgrid.com/v3/mail/send" -Method Post -Headers $headers -Body $jsonRequest
 
}
 
# $From = "email@address"
# $To = "email@address"
# $APIKEY = "MY_API_KEY"
# $Subject = "TEST"
# $Body ="SENDGRID 123"
 
# Send-EmailWithSendGrid -from $from -to $to -ApiKey $APIKEY -Body $Body -Subject $Subject

Wie man am "?" im Absender erkennt, ist das Mail nicht "Authenticated". Es wurde bei mir sogar in die EOP Quarantäne verschoben.

Also muss noch die Sender Authentication eingerichtet werden.

Ich nutze hier eine Subdomain sendgrid.icewolf,ch

Nun muss ich ein paar CNAME Records im DNS anlegen.

Das geht ja fix, denn ich nutze den Azure DNS Service

Die Überprüfung war erfolgreich.

Ein erneutes Mail mit dem PowerShell wird erfolgreich zugestellt. Dieses mal ohne "?".

Im Dashboard sieht man noch nichts, aber unten sieht man, dass ich schon drei Mails versendet habe.

Im Statistics Overview, sieht man, dass ich eben 3 Mails versendet habe.

Die Details sieht man dann in der Activity. Fährt man mit der Maus über das Info Symbol sieht man auch noch die Details.

Grüsse
Andres Bohren