OfficeDev / office-js

A repo and NPM package for Office.js, corresponding to a copy of what gets published to the official "evergreen" Office.js CDN, at https://appsforoffice.microsoft.com/lib/1/hosted/office.js.
https://learn.microsoft.com/javascript/api/overview
Other
681 stars 95 forks source link

Save multiple emails at the same time, save emails on user send email event and drag and drop - Technical advice required #4059

Closed C6900811 closed 3 months ago

C6900811 commented 9 months ago

Dear Community,

We are working on a new M365 Outlook Add-in (Web Add-in) and we would like to do three things:

Save multiple emails at the same time from Outlook to our Platform via the Add-in (user selects multiple emails via the UI). How can we fetch multiple emails at the same time through Graph API as .msg or .eml files on our platform? How can we get a list of selected emails from O365? Is there any way be which we pass the selected message ID and get the all the selected emails in single request?

Save emails on "Send" event, when user is writing a new email and sending it, we would like to save it to our Platform via the Add-in. Is there a way to do that? (it can be instant or asynchronous)

Drag and drop files or emails to the Add-in, when user receive a new email and wants to save it to a specific folder on our platform, user would like to drag and drop it so that it takes the minimum amount of time. If it's not possible to do it through the Add-in, do you have any alternative path in mind?

We have made some technical research, but we couldn't find an adequate process to do it. Do you have any recommendations or advice?

Thank you!!

C6900811 commented 9 months ago

It looks like with the Viva Insight Application, you managed to keep the Add-in panel visible (ours is disappearing when selecting multiple emails). Could you please give us some guidance on how to do it? image

besiler commented 9 months ago
  1. This is the Graph API for getting multiple emails: https://learn.microsoft.com/en-us/graph/api/user-list-messages?view=graph-rest-1.0&tabs=http. When using this API, you can $filter to get just the emails you want by their IDs. However, this API returns HTML versions of the emails. You can also use this API to get the MIME (.EML) versions of the emails: https://learn.microsoft.com/en-us/graph/api/message-get?view=graph-rest-1.0&tabs=http. I'm not sure if that API will return multiple emails per call or not, however. Our team supports the Office JS APIs used to get data from the Outlook client, so we don't have all the answers about Graph.
  2. For saving the email on send, you can either use an event-based add-in to save at the moment of send from Outlook or you can wait until after the message is successfully sent to get it from Exchange through Graph. If you use the event-based approach to save on send, this doc covers how to add that to your add-in: https://learn.microsoft.com/en-us/office/dev/add-ins/outlook/autolaunch. There's also an example of a similar scenario: https://learn.microsoft.com/en-us/office/dev/add-ins/outlook/smart-alerts-onmessagesend-walkthrough?tabs=jsonmanifest. Please be aware that if you use this method of saving on send in the client, there may be other add-ins running on send as well that can modify the message after your add-in processes it. Getting the message after send from Graph through the APIs above ensures you would get the final version. You may run into an issue here where Exchange assigns the ID of a message after Exchange receives it (that is, after the client has sent it), so the client doesn't know the ID beforehand.
  3. Drag and drop does sound like a good way for users to identify which messages they want to save, but we don't support it today. A similar approach might be having the users open your task pane, select the messages they want, and then provide a "save" button in the task pane that saves the selected messages to your backend through the Graph APIs.
  4. Did you already add support for multiselect as documented here? https://learn.microsoft.com/en-us/office/dev/add-ins/outlook/item-multi-select? If so, we'll maybe need your manifest to repro the issue. This isn't the expected behavior, so if you check over that multiselect doc and nothing looks out of place in your add-in let's discuss repro steps out of this public forum so we don't overshare data.
besiler commented 8 months ago

@C6900811 By the way, Tina who works with you as a cloud architect has reached out directly as well to see if you need any help with structuring the graph queries. Let us know if you need a direct connection to her

millerds commented 3 months ago

Did all that make sense?

microsoft-github-policy-service[bot] commented 3 months ago

This issue has been automatically marked as stale because it is marked as needing author feedback but has not had any activity for 4 days. It will be closed if no further activity occurs within 3 days of this comment. Thank you for your interest in Office Add-ins!

microsoft-github-policy-service[bot] commented 3 months ago

This issue has been closed due to inactivity. Please comment if you still need assistance and we'll re-open the issue.