SQL Server
SQL Server
Send GMail using REST API
See more GMail REST API Examples
Demonstrates how to send an email using the GMail REST API.Chilkat SQL Server Downloads
-- 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)
DECLARE @success int
SELECT @success = 0
-- This example requires the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
-- Use the Chilkat Email API to create or load an email.
DECLARE @email int
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
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
-- OK.. we now have an HTML email with an embedded JPG image
-- We'll need to get the full MIME of the email encoded to a base64url string.
DECLARE @sbMime int
EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbMime OUT
EXEC sp_OAMethod @email, 'GetMimeSb', @success OUT, @sbMime
EXEC sp_OAMethod @sbMime, 'Encode', @success OUT, 'base64url', 'utf-8'
-- The body of the HTTP request will be JSON..
DECLARE @json int
EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @json OUT
EXEC sp_OAMethod @json, 'UpdateSb', @success OUT, 'raw', @sbMime
-- Send the email...
DECLARE @http int
EXEC @hr = sp_OACreate 'Chilkat.Http', @http OUT
EXEC sp_OASetProperty @http, 'AuthToken', 'GMAIL-ACCESS-TOKEN'
DECLARE @url nvarchar(4000)
SELECT @url = 'https://www.googleapis.com/gmail/v1/users/me/messages/send'
DECLARE @resp int
EXEC @hr = sp_OACreate 'Chilkat.HttpResponse', @resp OUT
EXEC sp_OAMethod @http, 'HttpJson', @success OUT, 'POST', @url, @json, 'application/json', @resp
IF @success = 0
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 @json
EXEC @hr = sp_OADestroy @http
EXEC @hr = sp_OADestroy @resp
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
-- 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 @json
EXEC @hr = sp_OADestroy @http
EXEC @hr = sp_OADestroy @resp
END
GO