Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Objective-C) Outlook Send Email using MIME FormatSee more Outlook ExamplesThis example sends an email using MIME format via the Microsoft Graph Outlook REST API. For more information, see https://learn.microsoft.com/en-us/graph/api/user-sendmail?view=graph-rest-1.0&tabs=http#example-4-send-a-new-message-using-mime-format
#import <CkoHttp.h> #import <CkoJsonObject.h> #import <CkoEmail.h> #import <NSString.h> #import <CkoStringBuilder.h> #import <CkoBinData.h> #import <CkoHttpResponse.h> // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. CkoHttp *http = [[CkoHttp alloc] init]; // 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). CkoJsonObject *jsonToken = [[CkoJsonObject alloc] init]; BOOL success = [jsonToken LoadFile: @"qa_data/tokens/microsoftGraph.json"]; if (success == NO) { NSLog(@"%@",jsonToken.LastErrorText); return; } http.AuthToken = [jsonToken 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 CkoEmail *email = [[CkoEmail alloc] init]; email.Subject = @"Test Outlook API to Send HTML Email with Attachments"; email.From = @"Mary <mary@somewhere.com>"; [email AddTo: @"Joe" emailAddress: @"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.) [email AddPlainTextAlternativeBody: @"This is a plain-text alternative body..."]; // Our HTML will include an image, so add the related image here. NSString *contentIdStarfish = [email AddRelatedFile: @"qa_data/jpg/starfish.jpg"]; if (email.LastMethodSuccess != YES) { NSLog(@"%@",email.LastErrorText); return; } // The src attribute for the image tag is set to the contentIdStarfish: CkoStringBuilder *sbHtml = [[CkoStringBuilder alloc] init]; [sbHtml Append: @"<html><body><p>This is an HTML email with an embedded image.</p>"]; [sbHtml Append: @"<p><img src=\"cid:CONTENT_ID_STARFISH\" /></p></body></html>"]; int numReplacements = [[sbHtml Replace: @"CONTENT_ID_STARFISH" replacement: contentIdStarfish] intValue]; [email AddHtmlAlternativeBody: [sbHtml GetAsString]]; // Finally, add some attachments to the email. // Add a file attachment. success = [email AddFileAttachment2: @"qa_data/pdf/fishing.pdf" contentType: @"application/pdf"]; if (success != YES) { NSLog(@"%@",email.LastErrorText); return; } // Add an attachment where the content is contained in a string. NSString *content = @"This is the content of the 2nd attached file."; [email AddStringAttachment: @"someText.txt" str: content]; // Get the email as multi-line base64.. CkoBinData *bdMime = [[CkoBinData alloc] init]; [email GetMimeBd: bdMime]; // Now get it as multi-line base64 CkoStringBuilder *sbBase64 = [[CkoStringBuilder alloc] init]; [bdMime GetEncodedSb: @"base64_mime" sb: sbBase64]; // Send the HTTP POST (i.e. send the email) CkoHttpResponse *resp = [http PTextSb: @"POST" url: @"https://graph.microsoft.com/v1.0/me/sendMail" textData: sbBase64 charset: @"utf-8" contentType: @"text/plain" md5: NO gzip: NO]; if (http.LastMethodSuccess != YES) { NSLog(@"%@",http.LastErrorText); return; } // 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 ([resp.StatusCode intValue] != 202) { CkoJsonObject *json = [[CkoJsonObject alloc] init]; [json Load: resp.BodyStr]; json.EmitCompact = NO; NSLog(@"%@",[json Emit]); NSLog(@"%@%d",@"Failed, response status code = ",[resp.StatusCode intValue]); } else { NSLog(@"%@",@"Outlook Mail Sent."); } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.