|  | 
Chilkat  HOME  Android™  AutoIt  C  C#  C++  Chilkat2-Python  CkPython  Classic ASP  DataFlex  Delphi DLL  Go  Java  Node.js  Objective-C  PHP Extension  Perl  PowerBuilder  PowerShell  PureBasic  Ruby  SQL Server  Swift  Tcl  Unicode C  Unicode C++  VB.NET  VBScript  Visual Basic 6.0  Visual FoxPro  Xojo Plugin
| (C) Outlook Send Email using MIME FormatSee more Outlook ExamplesThis example sends an email using MIME format via the Microsoft Graph Outlook REST API.Note: This example requires Chilkat v11.0.0 or greater. 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 
 #include <C_CkHttp.h> #include <C_CkJsonObject.h> #include <C_CkEmail.h> #include <C_CkStringBuilder.h> #include <C_CkBinData.h> #include <C_CkHttpResponse.h> void ChilkatSample(void) { BOOL success; HCkHttp http; HCkJsonObject jsonToken; HCkEmail email; const char *contentIdStarfish; HCkStringBuilder sbHtml; int numReplacements; const char *content; HCkBinData bdMime; HCkStringBuilder sbBase64; HCkHttpResponse resp; HCkJsonObject json; success = FALSE; // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. http = CkHttp_Create(); // 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). jsonToken = CkJsonObject_Create(); success = CkJsonObject_LoadFile(jsonToken,"qa_data/tokens/microsoftGraph.json"); if (success == FALSE) { printf("%s\n",CkJsonObject_lastErrorText(jsonToken)); CkHttp_Dispose(http); CkJsonObject_Dispose(jsonToken); return; } CkHttp_putAuthToken(http,CkJsonObject_stringOf(jsonToken,"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 email = CkEmail_Create(); CkEmail_putSubject(email,"Test Outlook API to Send HTML Email with Attachments"); CkEmail_putFrom(email,"Mary <mary@somewhere.com>"); CkEmail_AddTo(email,"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.) CkEmail_AddPlainTextAlternativeBody(email,"This is a plain-text alternative body..."); // Our HTML will include an image, so add the related image here. contentIdStarfish = CkEmail_addRelatedFile(email,"qa_data/jpg/starfish.jpg"); if (CkEmail_getLastMethodSuccess(email) == FALSE) { printf("%s\n",CkEmail_lastErrorText(email)); CkHttp_Dispose(http); CkJsonObject_Dispose(jsonToken); CkEmail_Dispose(email); return; } // The src attribute for the image tag is set to the contentIdStarfish: sbHtml = CkStringBuilder_Create(); CkStringBuilder_Append(sbHtml,"<html><body><p>This is an HTML email with an embedded image.</p>"); CkStringBuilder_Append(sbHtml,"<p><img src=\"cid:CONTENT_ID_STARFISH\" /></p></body></html>"); numReplacements = CkStringBuilder_Replace(sbHtml,"CONTENT_ID_STARFISH",contentIdStarfish); CkEmail_AddHtmlAlternativeBody(email,CkStringBuilder_getAsString(sbHtml)); // Finally, add some attachments to the email. // Add a file attachment. success = CkEmail_AddFileAttachment2(email,"qa_data/pdf/fishing.pdf","application/pdf"); if (success == FALSE) { printf("%s\n",CkEmail_lastErrorText(email)); CkHttp_Dispose(http); CkJsonObject_Dispose(jsonToken); CkEmail_Dispose(email); CkStringBuilder_Dispose(sbHtml); return; } // Add an attachment where the content is contained in a string. content = "This is the content of the 2nd attached file."; CkEmail_AddStringAttachment(email,"someText.txt",content); // Get the email as multi-line base64.. bdMime = CkBinData_Create(); CkEmail_GetMimeBd(email,bdMime); // Now get it as multi-line base64 sbBase64 = CkStringBuilder_Create(); CkBinData_GetEncodedSb(bdMime,"base64_mime",sbBase64); // Send the HTTP POST (i.e. send the email) resp = CkHttpResponse_Create(); success = CkHttp_HttpSb(http,"POST","https://graph.microsoft.com/v1.0/me/sendMail",sbBase64,"utf-8","text/plain",resp); if (success == FALSE) { printf("%s\n",CkHttp_lastErrorText(http)); CkHttp_Dispose(http); CkJsonObject_Dispose(jsonToken); CkEmail_Dispose(email); CkStringBuilder_Dispose(sbHtml); CkBinData_Dispose(bdMime); CkStringBuilder_Dispose(sbBase64); CkHttpResponse_Dispose(resp); 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 (CkHttpResponse_getStatusCode(resp) != 202) { json = CkJsonObject_Create(); CkJsonObject_Load(json,CkHttpResponse_bodyStr(resp)); CkJsonObject_putEmitCompact(json,FALSE); printf("%s\n",CkJsonObject_emit(json)); printf("Failed, response status code = %d\n",CkHttpResponse_getStatusCode(resp)); } else { printf("Outlook Mail Sent.\n"); } CkHttp_Dispose(http); CkJsonObject_Dispose(jsonToken); CkEmail_Dispose(email); CkStringBuilder_Dispose(sbHtml); CkBinData_Dispose(bdMime); CkStringBuilder_Dispose(sbBase64); CkHttpResponse_Dispose(resp); CkJsonObject_Dispose(json); } | ||||||
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.