SQL Server
SQL Server
Insert Email into GMail Folder
See more GMail REST API Examples
Directly inserts a message into only this user's mailbox similar to IMAP APPEND, bypassing most scanning and classification. Does not send a message.This example will create a Chilkat Email object and upload/insert it into GMail. Then adds the "INBOX" label to the email to make it appear in INBOX
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.
DECLARE @email int
EXEC @hr = sp_OACreate 'Chilkat.Email', @email OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
END
-- This example chooses to load an email from a file.
EXEC sp_OAMethod @email, 'LoadEml', @success OUT, 'qa_data/eml/testEmail.eml'
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @email, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @email
RETURN
END
-- Get the email as MIME.
DECLARE @sbMime int
EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbMime OUT
EXEC sp_OAMethod @email, 'GetMimeSb', @success OUT, @sbMime
DECLARE @http int
EXEC @hr = sp_OACreate 'Chilkat.Http', @http OUT
DECLARE @resp int
EXEC @hr = sp_OACreate 'Chilkat.HttpResponse', @resp OUT
EXEC sp_OASetProperty @http, 'AuthToken', 'GMAIL-ACCESS-TOKEN'
-- Upload to GMail (does not send, but just inserts).
-- IMPORTANT: After uploading/inserting, you won't see the message in the Inbox.
-- In your web browser, if you go to "All Mail", you will see it.
DECLARE @url nvarchar(4000)
SELECT @url = 'https://www.googleapis.com/upload/gmail/v1/users/me/messages?uploadType=media'
EXEC sp_OASetProperty @http, 'UncommonOptions', 'SendGzipped'
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 @sbMime
EXEC @hr = sp_OADestroy @http
EXEC @hr = sp_OADestroy @resp
RETURN
END
EXEC sp_OASetProperty @http, 'UncommonOptions', ''
-- 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.
-- A sample successful JSON response:
-- {
-- "id": "166f583051d36144",
-- "threadId": "166f5529e079a456"
-- }
DECLARE @json int
EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @json OUT
EXEC sp_OAGetProperty @resp, 'BodyStr', @sTmp0 OUT
EXEC sp_OAMethod @json, 'Load', @success OUT, @sTmp0
DECLARE @id nvarchar(4000)
EXEC sp_OAMethod @json, 'StringOf', @id OUT, 'id'
-- Add the Inbox label to the inserted email so that it appears in Inbox.
PRINT '---- Adding the Inbox label to the newly inserted email. ----'
-- Create the following JSON to be sent in a POST to modify labels for this message.
-- {
-- "addLabelIds": [
-- "INBOX"
-- ]
-- }
DECLARE @json2 int
EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @json2 OUT
EXEC sp_OAMethod @json2, 'UpdateString', @success OUT, 'addLabelIds[0]', 'INBOX'
EXEC sp_OAMethod @http, 'SetUrlVar', @success OUT, 'id', @id
SELECT @url = 'https://www.googleapis.com/gmail/v1/users/me/messages/{$id}/modify'
EXEC sp_OAMethod @http, 'HttpJson', @success OUT, 'POST', @url, @json2, '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 @sbMime
EXEC @hr = sp_OADestroy @http
EXEC @hr = sp_OADestroy @resp
EXEC @hr = sp_OADestroy @json
EXEC @hr = sp_OADestroy @json2
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.
-- A sample successful JSON response:
-- {
-- "id": "166f583051d36144",
-- "threadId": "166f583051d36144",
-- "labelIds": [
-- "INBOX"
-- ]
-- }
EXEC @hr = sp_OADestroy @email
EXEC @hr = sp_OADestroy @sbMime
EXEC @hr = sp_OADestroy @http
EXEC @hr = sp_OADestroy @resp
EXEC @hr = sp_OADestroy @json
EXEC @hr = sp_OADestroy @json2
END
GO