SQL Server
SQL Server
Send GMail with Attachments
See more GMail REST API Examples
Demonstrates how to send an email containing attachments 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
-- 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
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
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 @hr = sp_OACreate 'Chilkat.HttpResponse', @resp OUT
EXEC sp_OAMethod @http, 'HttpSb', @success OUT, 'POST', @url, @sbMime, 'utf-8', 'message/rfc822', @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 @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 @http
EXEC @hr = sp_OADestroy @resp
END
GO