AutoIt
AutoIt
Outlook Send Email using MIME Format
See more Outlook Examples
This example sends an email using MIME format via the Microsoft Graph Outlook REST API.Chilkat AutoIt Downloads
Local $bSuccess = False
; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
$oHttp = ObjCreate("Chilkat.Http")
; Use your previously obtained access token here:
; See the following examples for getting an access token:
; Get Microsoft Graph OAuth2 Access Token (Azure AD v2.0 Endpoint).
; Get Microsoft Graph OAuth2 Access Token (Azure AD Endpoint).
; Refresh Access Token (Azure AD v2.0 Endpoint).
; Refresh Access Token (Azure AD Endpoint).
$oJsonToken = ObjCreate("Chilkat.JsonObject")
$bSuccess = $oJsonToken.LoadFile("qa_data/tokens/microsoftGraph.json")
If ($bSuccess = False) Then
ConsoleWrite($oJsonToken.LastErrorText & @CRLF)
Exit
EndIf
$oHttp.AuthToken = $oJsonToken.StringOf("access_token")
; To send email, we'll POST to the following endpoint:
;
; POST /users/{id | userPrincipalName}/sendMail
;
; (The special keyword "me" may be used in place of a principal name.)
;
; The body of the POST request will contain the MIME source of the email in base64 format.
; Create a new email object
$oEmail = ObjCreate("Chilkat.Email")
$oEmail.Subject = "Test Outlook API to Send HTML Email with Attachments"
$oEmail.From = "Mary <mary@somewhere.com>"
$oEmail.AddTo("Joe","joe@example.com")
; Add a plain-text alternative body, which will likely never be seen.
; (It is shown if the receiving email client is incapable of displaying HTML email.)
$oEmail.AddPlainTextAlternativeBody("This is a plain-text alternative body...")
; Our HTML will include an image, so add the related image here.
Local $sContentIdStarfish = $oEmail.AddRelatedFile("qa_data/jpg/starfish.jpg")
If ($oEmail.LastMethodSuccess = False) Then
ConsoleWrite($oEmail.LastErrorText & @CRLF)
Exit
EndIf
; The src attribute for the image tag is set to the contentIdStarfish:
$oSbHtml = ObjCreate("Chilkat.StringBuilder")
$oSbHtml.Append("<html><body><p>This is an HTML email with an embedded image.</p>")
$oSbHtml.Append("<p><img src=""cid:CONTENT_ID_STARFISH"" /></p></body></html>")
Local $iNumReplacements = $oSbHtml.Replace("CONTENT_ID_STARFISH",$sContentIdStarfish)
$oEmail.AddHtmlAlternativeBody($oSbHtml.GetAsString())
; Finally, add some attachments to the email.
; Add a file attachment.
$bSuccess = $oEmail.AddFileAttachment2("qa_data/pdf/fishing.pdf","application/pdf")
If ($bSuccess = False) Then
ConsoleWrite($oEmail.LastErrorText & @CRLF)
Exit
EndIf
; Add an attachment where the content is contained in a string.
Local $sContent = "This is the content of the 2nd attached file."
$oEmail.AddStringAttachment("someText.txt",$sContent)
; Get the email as multi-line base64..
$oBdMime = ObjCreate("Chilkat.BinData")
$oEmail.GetMimeBd($oBdMime)
; Now get it as multi-line base64
$oSbBase64 = ObjCreate("Chilkat.StringBuilder")
$oBdMime.GetEncodedSb("base64_mime",$oSbBase64)
; Send the HTTP POST (i.e. send the email)
$oResp = ObjCreate("Chilkat.HttpResponse")
$bSuccess = $oHttp.HttpSb("POST","https://graph.microsoft.com/v1.0/me/sendMail",$oSbBase64,"utf-8","text/plain",$oResp)
If ($bSuccess = False) Then
ConsoleWrite($oHttp.LastErrorText & @CRLF)
Exit
EndIf
; The send succeeded if the response status code = 202.
; In the success case, there is no response body. (We just get the response code to know that it succeeded.)
If ($oResp.StatusCode <> 202) Then
$oJson = ObjCreate("Chilkat.JsonObject")
$oJson.Load($oResp.BodyStr)
$oJson.EmitCompact = False
ConsoleWrite($oJson.Emit() & @CRLF)
ConsoleWrite("Failed, response status code = " & $oResp.StatusCode & @CRLF)
Else
ConsoleWrite("Outlook Mail Sent." & @CRLF)
EndIf