Cancel Gmail auto save of draft programmatically - google-chrome-extension

I need to encrypt the real message that user write in compose mode in Gmail , so I created a Chrome extension that creates another button of 'secure send' in compose window ( I am using gmail.js library and InboxSdk library ). The problem is that when user write a new message a draft save automatically every time user keep writing and the real message actually not secure.
I think about update every time the draft when user change the content via Gmail API Users.drafts: update but the problem that also here it's save for a while to Google and I don't want it.
Is there some option to cancel the auto save of the draft? Then maybe I somehow try to save the draft by myself.. I don't see anything about this in the gmail.js and InboxSDK library's and also in the rest of my research...

AFAIK gmail-api hasn't a method to block the Gmail UI draft message autosave. In an scenario like the one described on the question, I think that the best is to avoid the use of the Gmail UI to compose new messages.
Anyway, Gmail draft autosave on the UI is done by using AJAX. I suggest you to try to find out which request sends the body of the draft messages and block it only while your extension users writes something to be encrypted.

Related

Gmail - Link to Draft in non-conversation view

I am importing/creating drafts in Gmail using the Gmail API. After creation I'd like to redirect the user to the Gmail UI with the opened Draft in the composer window.
I made it work properly for https://mail.google.com/mail/#drafts?compose=[MESSAGE ID]. Other urls I found here also worked well. Gmail is doing some redirects and eventually the composer window is opened with the draft.
Now my issue:
If the user has not enabled "Conversation view" this will not work at all. The redirect will then result in https://mail.google.com/mail/u/0/#drafts?compose=new and only an empty, new composer window is shown and a new draft is created by the UI.
If I open the draft directly the ID-format is different. https://mail.google.com/mail/u/0/#drafts?compose=hJzgZpSqgLQcCWgZqnlNRzRBfMbjZVnZklzvcFxhQCdwT... and I have no idea if this format can be generated somehow.
Does anybody has an idea or experience to also make it work with this UI setting. How I can force Gmail to load the draft into the composer window?
Thanks in advance.
If you have Email Threading > Conversation View enabled
Make use of the following URL
https://mail.google.com/mail/u/0/#inbox?compose=DRAFT_MESSAGE_ID
If you have disabled the Email Threading > Conversation View option
Make use of the following URL
https://mail.google.com/mail/u/0/#inbox/DRAFT_MESSAGE_ID
Additional information
The main difference between them is that the first is treated as a conversation while the second example is not.
You can use #drafts instead of #inbox in the URL.
The number after .../mail/u/ is the session you have opened
You can retrieve the DRAFT_MESSAGE_ID by making a request to the API
You can approximately generate the compose ID by yourself, there are some examples out there (not recommended). I strongly recommend you to use the DRAFT_MESSAGE_ID instead.
This appears to still be an issue the one solution I did find was that you can find your draft directly (even though it would be the last draft) and go through multiple accounts by redirecting to
https://accounts.google.com/AccountChooser?authuser={user account}&Email={email account}&continue=https://mail.google.com/mail/#search/rfc822msgid:CAMU-31NcJCVHyGNsAycRKfuS0nMonoaZ6wFMD90Sej996qjuPQ#mail.gmail.com
You need to get your message id toi replace the area from <> from your draft. So you'll have to create the draft first. Get the google message ID, then use that with messages/get to get the Global Message Id (also referred to as message id) and then use that with a search. At this point you'll open a page with a search to a single draft but it will not be opened. Your users will have to click on the one message. Unfortunately there does not seem to be a way to have the good way work for conversation view, and this way work for non.
I tried many different URLS and nothing worked. As noted in the original question, it might work that you could link to the full URL but I see no way to get that. If you spend long enough working with an email you'll even find that ID changes so they aren't even stable within a single day.
Another solution that could work is as explained:
https://mail.google.com/mail/u/0/#inbox/DRAFT_MESSAGE_ID
But as noted this does not open the draft on the first time you go there. It seems you have to travel to that link 2 times in a row to get the message to appear. I guess you could go to the page maybe inject some javascript to go to the page again but I don't know how to do that.

How do I send an email directly from a gmail add on?

I have developed a gmail add-on for personal use and it can currently draft a reply to a recipient using message.createDraftReply(replyMessage);. I then have to manually send email.
After the button click event, I would rather that the the email just be sent directly without further action needed on my end and the UI go back to the inbox (rather than the email view).
Is this possible? If so, can you please provide some direction/example.
Have you tried using the sendEmail method?
See documentation here:
https://developers.google.com/apps-script/reference/gmail/gmail-app#sendEmail(String,String,String,Object)

Restrict user from closing outlook mail app, while some action is in progress

I am working on an Outlook mail app, which will be available to user on web only (not of outlook desktop).
A file need to be uploaded from app to azure via custom control in compose form of App, meanwhile the file is uploaded to Azure user should not be able to close the mail. If they try to do so, a warning should be given to them.
Adding to #Slava's answer, I would suggest using addAsync API for notification messages. You can add a notification of type progress indicator until your task is complete and replace it with a notification of type informational message.
Click here for reference
Unfortunately Office.js API does not have the feature you are inquiring. You will not be able to disallow user interaction, as such closing the compose window or closing your add-in. As the API doesn't have "OnSend" or "OnClose" events you will not be able to display any warning either. If this is the new feature you would like to add you may try to send request via Office Developers User Voice.
As the work around you should clearly indicate for the users that they need to wait and do not interup operation. You should display activity indicator, indeed. And finally you should be prepare user still interupt the operation in the middle and work properly with the error occur.
Hope this helps.

Modifying a draft without downloading attachments

I have a draft saved on my Gmail account, containing an attachment. At a later stage, I realise that I have to add some text to the mail, via the Gmail API. At an even later stage, I decide to send the draft. From what I've found, the only way to do this is to:
Download the draft and decode it.
Edit the message body to your liking.
Encode it and save the draft.
Send the draft.
This is all well and good, until you have a big attachment in your draft. Is there another way than doing the steps outlined above with the Users.draft: update, so that you don't have to download the attachments when you just want to alter the message?
Thanks.
No, unfortunately there doesn't appear to be a simpler alternative at the moment. I'm not sure what API changes would be needed to support that use case, but you can file a feature request and we can talk to the team about it.

sending a text message or email automatically from a chrome extension

Is it possible to send a text message or email automatically from a chrome extension triggered by an event on a web page? This is for notification within a company, it's not meant to be used by third parties so it's not a privacy issue.
One possible way that you could do this (if you have a webserver) is sending the user to a page that is hosted somewhere online, and run a PHP script that emails the user. You would have to use this method because:
You can't easily use PHP in a chrome extension
You can't send emails through Javascript/jQuery

Resources