Search code examples
office-jsoutlook-addin

Need a sample for using displayNewMessageForm and addFileAttachmentFromBase64 together


I'm writing an outlook add-in and need to create a new email with displayNewMessageForm and add an attachment. The problem is the URL to the attachment is protected so I need to download the file and attach it and I've tried using addFileAttachmentFromBase64Async as shown in this example:

https://learn.microsoft.com/en-us/office/dev/add-ins/outlook/add-and-remove-attachments-to-an-item-in-a-compose-form#attach-a-file-or-outlook-item

The problem I'm having is the very first line of the code sample:

const mailItem = Office.context.mailbox.item;

This gets the currently selected mailItem in the mailbox - not the new compose form that was displayed with displayNewMessageForm. Can someone provide a sample that uses displayNewMessageForm then using addFileAttachmentFromBase64Async attaches a file such as a word document to that new compose form?


Solution

  • You cannot insert attachments using addFileAttachmentFromBase64Async in Read Mode when using displayNewMessageForm.

    To achieve this, you need to add attachments in Compose Mode.

    After calling displayNewMessageForm, you are now in Compose Mode. You can add a new button in Compose Mode using MessageComposeCommandSurface for a Taskpane or an action button in your manifest.

          <ExtensionPoint xsi:type="MessageComposeCommandSurface">
              <OfficeTab id="TabDefault">
                <Group id="msgComposeGroup">
                  <Label resid="GroupLabel"/>
                  <Control xsi:type="Button" id="TaskpaneButton">
                    <Label resid="TaskpaneButton.Label"/>
                    <Supertip>
                      <Title resid="TaskpaneButton.Label"/>
                      <Description resid="TaskpaneButton.Tooltip"/>
                    </Supertip>
                    <Icon>
                      <bt:Image size="16" resid="Icon.16x16"/>
                      <bt:Image size="32" resid="Icon.32x32"/>
                      <bt:Image size="80" resid="Icon.80x80"/>
                    </Icon>
                    <Action xsi:type="ShowTaskpane">
                      <SourceLocation resid="Taskpane.Url"/>
                    </Action>
                  </Control>
                </Group>
              </OfficeTab>
            </ExtensionPoint>
    

    Now here on Taskpane you can use the method of addFileAttachmentFromBase64Async for adding new attachments