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
(SQL Server) Send GMail with AttachmentsDemonstrates how to send an email containing attachments using the GMail REST API.
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls. -- CREATE PROCEDURE ChilkatSample AS BEGIN DECLARE @hr int DECLARE @iTmp0 int -- Important: Do not use nvarchar(max). See the warning about using nvarchar(max). DECLARE @sTmp0 nvarchar(4000) -- This example requires the Chilkat API to have been previously unlocked. -- See Global Unlock Sample for sample code. DECLARE @success int -- Use the Chilkat Email API to create or load an email. DECLARE @email int -- Use "Chilkat_9_5_0.Email" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.Email', @email OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END -- The From name/address don't need to be specified. -- GMail will automatically use your Gmail address if the following 2 lines are omitted. EXEC sp_OASetProperty @email, 'FromName', 'My Name' EXEC sp_OASetProperty @email, 'FromAddress', 'my_account_name@gmail.com' EXEC sp_OAMethod @email, 'AddTo', @success OUT, 'John Smith', 'somebody@somewhere.com' -- To add more recipients, make additional calls to AddTo or AddCC, one per recipient... EXEC sp_OASetProperty @email, 'Subject', 'This is a test GMail email created using Chilkat.' EXEC sp_OASetProperty @email, 'Charset', 'utf-8' EXEC sp_OAMethod @email, 'AddPlainTextAlternativeBody', @success OUT, 'This is a test' -- Create an HTML email body with an embedded image. DECLARE @cid nvarchar(4000) EXEC sp_OAMethod @email, 'AddRelatedFile', @cid OUT, 'qa_data/jpg/starfish.jpg' DECLARE @sbHtml int -- Use "Chilkat_9_5_0.StringBuilder" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbHtml OUT EXEC sp_OAMethod @sbHtml, 'Append', @success OUT, '<html><body>This is a <b>test</b><br><img src="cid:STARFISH_CID"/></body></html>' DECLARE @numReplacements int EXEC sp_OAMethod @sbHtml, 'Replace', @numReplacements OUT, 'STARFISH_CID', @cid EXEC sp_OAMethod @sbHtml, 'GetAsString', @sTmp0 OUT EXEC sp_OAMethod @email, 'AddHtmlAlternativeBody', @success OUT, @sTmp0 -- Add some attachments.. DECLARE @mimeType nvarchar(4000) EXEC sp_OAMethod @email, 'AddFileAttachment', @mimeType OUT, 'qa_data/helloWorld.pdf' EXEC sp_OAGetProperty @email, 'LastMethodSuccess', @iTmp0 OUT IF @iTmp0 <> 1 BEGIN PRINT 'Failed to add PDF attachment.' EXEC @hr = sp_OADestroy @email EXEC @hr = sp_OADestroy @sbHtml RETURN END EXEC sp_OAMethod @email, 'AddFileAttachment', @mimeType OUT, 'qa_data/msword/sample2.docx' EXEC sp_OAGetProperty @email, 'LastMethodSuccess', @iTmp0 OUT IF @iTmp0 <> 1 BEGIN PRINT 'Failed to add MS-Word attachment.' EXEC @hr = sp_OADestroy @email EXEC @hr = sp_OADestroy @sbHtml RETURN END -- OK.. we now have an HTML email with 2 attachments.. DECLARE @sbMime int -- Use "Chilkat_9_5_0.StringBuilder" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbMime OUT EXEC sp_OAMethod @email, 'GetMimeSb', @success OUT, @sbMime -- Send the email. (GMail has a 5MB limit on the total email size.) DECLARE @http int -- Use "Chilkat_9_5_0.Http" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.Http', @http OUT EXEC sp_OASetProperty @http, 'AuthToken', 'GMAIL-ACCESS-TOKEN' -- Send using the simple upload request for the Gmail API DECLARE @url nvarchar(4000) SELECT @url = 'https://www.googleapis.com/upload/gmail/v1/users/me/messages/send?uploadType=media' DECLARE @sendGzipped int SELECT @sendGzipped = 1 DECLARE @resp int EXEC sp_OAMethod @http, 'PTextSb', @resp OUT, 'POST', @url, @sbMime, 'utf-8', 'message/rfc822', 0, @sendGzipped EXEC sp_OAGetProperty @http, 'LastMethodSuccess', @iTmp0 OUT IF @iTmp0 <> 1 BEGIN EXEC sp_OAGetProperty @http, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @email EXEC @hr = sp_OADestroy @sbHtml EXEC @hr = sp_OADestroy @sbMime EXEC @hr = sp_OADestroy @http RETURN END -- A status code of 200 indicates success. EXEC sp_OAGetProperty @resp, 'StatusCode', @iTmp0 OUT PRINT 'Response status code: ' + @iTmp0 PRINT 'Response body:' EXEC sp_OAGetProperty @resp, 'BodyStr', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @resp -- The response body contains JSON. -- Use the online tool at Generate JSON Parsing Code -- to generate JSON parsing code. -- A sample successful JSON response: -- { -- "id": "166f0d4ac39e50bf", -- "threadId": "166f0d4ac39e50bf", -- "labelIds": [ -- "SENT" -- ] -- } EXEC @hr = sp_OADestroy @email EXEC @hr = sp_OADestroy @sbHtml EXEC @hr = sp_OADestroy @sbMime EXEC @hr = sp_OADestroy @http END GO |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.