SharePoint Online之通過JSOM發送郵件
- 2020 年 12 月 17 日
- 筆記
- sharepoint online
我們在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" } }); }
注意:
- 此程式碼必須在SharePoint Online的環境中運行。
- 電子郵件的收件人必須是曾經訪問過此網站的用戶。
因此,在結束本文之前,請注意,如果您得到一個403的錯誤,大多數情況下可能是由以下兩種情況引起的:
- 你沒有得到上下文,因為你應該檢查你得到的RequestDigest
- 將Jquery的版本更新到最新
歡迎大家溝通交流,共同探討SharePoint Online的使用。