有没有一种方法可以使用Office.js无缝发送邮件?

时间:2019-07-25 00:53:41

标签: office365 office-js office-addins outlook-web-addins

我已经使用office.js构建了我的第一个Outlook.web.addin,

但是我需要一种将预定义的邮件发送给特定收件人而不向用户显示“邮件撰写”屏幕的方法...

下面的代码将打开“撰写”屏幕,但是如果不强迫用户按下“发送”按钮,我将无法发送邮件。

function sendMessage() {

    if (Office.context.mailbox.item.itemType === Office.MailboxEnums.ItemType.Message) {
        var mailbox = Office.context.mailbox;
        var item = mailbox.item;
        var itemId = item.itemId;
        if (itemId === null || itemId == undefined) {
            item.saveAsync(function(result) {
                itemId = result.value;
            });
        }

        Office.context.mailbox.displayNewMessageForm(
            {
                // Copy the To line from current item.
                toRecipients: ['xxx@xxx.net'],
                ccRecipients: ['yyy@yyyy.com'],
                subject: 'Outlook add-ins are cool!',
                htmlBody: 'Hello <b>World</b>!<br/><img src="cid:image.png"></i>',
                attachments: [
                    {
                        type: 'item',
                        name: 'Suspected phishing mail',
                        itemId: itemId
                    }
                ]
            });

    } else {
        return;
    }
}

我需要将以上代码修改为:

function sendMessage() {

    if (Office.context.mailbox.item.itemType === Office.MailboxEnums.ItemType.Message) {
        var mailbox = Office.context.mailbox;
        var item = mailbox.item;
        var itemId = item.itemId;
        if (itemId === null || itemId == undefined) {
            item.saveAsync(function(result) {
                itemId = result.value;
            });
        }

        var newItem = mailbox.item;
        newItem.to.setAsync(["xxx@xxx.net"]);
        newItem.body.setAsync(["This is a test message"]);
        newItem.addItemAttachmentAsync(
            itemId,
            "Welcome email"
            );
        newItem.saveAsync(
            function callback(result) {
                alert(result);
            });
    } else {
        return;
    }
}

我希望发送该消息而不允许用户更改消息中的任何详细信息。

1 个答案:

答案 0 :(得分:2)

您可以通过使用CreateItem发出MakeEWSREquestAsync EWS请求来完成类似的事情。下面的示例将向您自己发送一封电子邮件,但是您可以根据需要进行修改。

$(".myBox").click(function() {
  window.location = $(this).find("a").attr("href"); 
  return false;
});

<div class="myBox">
  blah blah blah.
  <a href="http://google.com">link</a>
</div>