SharePoint Online之通過JSOM發送郵件

我們在SharePoint 開發過程中,經常會用到發郵件的功能,例如向Manager提醒有需要待辦任務等等場景。

圖片來自網站,如侵權,速刪

一般我們會採用Workflow或者Power Automate。今天我們不介紹這兩種方式,我會在後邊的文章中進行介紹。

今天我給大家介紹的方式是使用採用Client Model中的JSOM來實現郵件的發送。即「SP.Utilities.Utility.SendEmail」 的方式。

主要的程式碼如下:

var sendEmail=()=>{
    const emailProps= {          
        To: [],//發送的電子郵件地址數組
        CC:[],//抄送的電子郵件地址數組
        Subject: "<Email Subject>",//郵件的Subject
        Body: "<Email Body>"//郵件的正文,支援HML
    };
  
    var siteUrl = "Your SharePoint Site Url"; //SharePoint 網站的Url
    var urlTemplate = siteUrl + "/_api/SP.Utilities.Utility.SendEmail";
    getFormDigest(siteUrl).then((data)=> {
        $.ajax({
            contentType: 'application/json',
            url: urlTemplate,
            type: "POST",
            data: JSON.stringify({
                'properties': {
                    '__metadata': {
                        'type': 'SP.Utilities.EmailProperties'
                    },
                    'To': {
                        'results': emailProps.To
                    },
                    'Body': emailProps.Body,
                    'Subject': emailProps.Subject,
                    'CC': {
                        'results': emailProps.CC
                    },
                }
            }),
            headers: {
                "Accept": "application/json;odata=verbose",
                "content-type": "application/json;odata=verbose",
                "X-RequestDigest": data.d.GetContextWebInformation.FormDigestValue
            },
            success: function(data) {
                console.log("Email Sent");
            },
            error: function(err) {
                console.log("Got Error");
            }
        });
    });
}

var getFormDigest=(webUrl)=>{
    return $.ajax({
        url: webUrl + "/_api/contextinfo",
        method: "POST",
        headers: { "Accept": "application/json; odata=verbose" }
    });
}

 

注意:

  1. 此程式碼必須在SharePoint Online的環境中運行。
  2. 電子郵件的收件人必須是曾經訪問過此網站的用戶。

因此,在結束本文之前,請注意,如果您得到一個403的錯誤,大多數情況下可能是由以下兩種情況引起的:

  • 你沒有得到上下文,因為你應該檢查你得到的RequestDigest
  • 將Jquery的版本更新到最新

 

歡迎大家溝通交流,共同探討SharePoint Online的使用。