ค้นหาเว็บไซต์

SharePoint Online: PowerShell เพื่อส่งอีเมล


คุณรู้ไหมว่าคุณสามารถใช้ PowerShell เพื่อส่งอีเมลจาก SharePoint Online ได้ นี่เป็นวิธีที่ยอดเยี่ยมในการทำให้เวิร์กโฟลว์ที่ใช้อีเมลเป็นแบบอัตโนมัติ เช่น การส่งการแจ้งเตือนหรือการแจ้งเตือน ในโพสต์บล็อกนี้ เราจะแสดงวิธีดำเนินการนี้โดยใช้ PowerShell

เราสามารถส่งอีเมลจาก SharePoint Online โดยใช้ฟังก์ชัน SendEmail ของ SPUtility หรือด้วย PowerShell cmdlet Send-MailMessage นี่คือตัวอย่างของทั้งสองกรณี:

PowerShell เพื่อส่งอีเมลใน SharePoint Online:

โพสต์ในบล็อกนี้จะแสดงวิธีใช้ PowerShell เพื่อส่งอีเมลจาก SharePoint Online เราจะอธิบายสคริปต์ตัวอย่างที่จะส่งอีเมลโดยใช้วิธีดั้งเดิมของ SharePoint และ PowerShell!

ต่อไปนี้เป็นวิธีส่งอีเมลจาก SharePoint Online โดยใช้สคริปต์ PowerShell Client-Side Object Model (CSOM):


Import-Module Microsoft.Online.SharePoint.Powershell -DisableNameChecking

#Config Parameters                                                                 
$AdminSiteURL = "https://crescent-admin.sharepoint.com/"
$EmailFrom ="SPAdmin@crescent.com"
$EmailTo = "Salaudeen.Rajack@crescent.com"
$Subject ="SharePoint Online Storage Report"

#Setup Credentials and connect
$Cred = Get-Credential
Connect-SPOService -Url $AdminSiteURL -Credential $Cred

#Get Storage Usage of All Site collections
$SiteStorage = Get-SPOSite -Detailed | Select Url, StorageUsageCurrent
       
#Setup the site context for SPUtility SendEmail
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName,$Cred.Password)

#Setup Email
$EmailProperties = New-Object Microsoft.SharePoint.Client.Utilities.EmailProperties
$EmailProperties.From = $EmailTo
$EmailProperties.To = [String[]] $EmailTo
$EmailProperties.Subject = $Subject
$EmailProperties.Body = $SiteStorage | Convertto-html
[Microsoft.SharePoint.Client.Utilities.Utility]::SendEmail($Ctx,$EmailProperties)
$Ctx.ExecuteQuery()

ซึ่งจะส่งอีเมลโดยใช้วิธี SendMail ของ SPUtility โดยมีการใช้พื้นที่เก็บข้อมูลของไซต์คอลเลกชันทั้งหมดใน SharePoint Online อีเมลที่นี่ จาก และถึง คือที่อยู่อีเมลภายในองค์กร

SharePoint Online PowerShell เพื่อส่งอีเมล:

คราวนี้ ลองใช้ Send-MailMessage cmdlet ดั้งเดิมของ PowerShell เพื่อส่งอีเมลจากไซต์ SharePoint Online การส่งอีเมลใน SharePoint Online โดยใช้ PowerShell เป็นวิธีที่ง่ายและรวดเร็วในการสื่อสารกับเพื่อนร่วมงานและผู้ทำงานร่วมกัน ในการเริ่มต้น ให้เปิดคอนโซล PowerShell แล้วพิมพ์สคริปต์ต่อไปนี้:


Import-Module Microsoft.Online.SharePoint.Powershell -DisableNameChecking

#Config Parameters
$AdminSiteURL = "https://crescent-admin.sharepoint.com"
$EmailFrom ="SPAdmin@crescent.com"
$EmailTo =@("salaudeen@crescent.com","Steve@crescent.com")
$EmailSubject ="Site Collection Storage Utilization Report"
$SMTP ="smtp.office365.com"

#Setup Credentials and connect
$Cred = Get-Credential
Connect-SPOService -Url $AdminSiteURL -Credential $Cred

#Get Storage Usage of All Site collections
$SiteStorage = Get-SPOSite -Detailed | Select Url, StorageUsageCurrent | Convertto-html | Out-String

#Send Email
Send-MailMessage -from $EmailFrom -To $EmailTo -Subject $EmailSubject -Body $SiteStorage -BodyAsHtml -smtpserver $SMTP -usessl -Credential $Cred -Port 587 

ตัวอย่างข้างต้นแสดงวิธีการส่งอีเมลไปยังผู้รับหลายคนและกำหนดหัวเรื่องและเนื้อหาของอีเมล คุณจะต้องระบุค่าของคุณเองสำหรับตัวแปร $AdminSiteURL, $EmailFrom, $EmailTo และ $EmailSubject หากคุณต้องการเพิ่มไฟล์แนบในอีเมล ให้ใช้ดังต่อไปนี้:


#send-mailmessage in powershell with multiple attachments
$Attachments = "D:\Reports\SiteDeleteRpt1.csv","D:\Reports\SiteDeleteRpt2.csv"
  
Send-MailMessage -To $EmailTo -From $EmailFrom -Subject $EmailSubject -Body $EmailBody -BodyAsHTML -Attachments $Attachments -SmtpServer $SmtpServer -Credential $Cred -Port 587

SharePoint Online: PnP PowerShell เพื่อส่งอีเมล

นอกจากนี้เรายังสามารถส่งอีเมลจาก PowerShell ใน SharePoint Online โดยใช้ Send-PnPMail cmdlet ซึ่งจะส่งอีเมลจากบริบทของไซต์ปัจจุบัน


#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/marketing"
  
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive

#sharepoint online powershell send email
Send-PnPMail -To salaudeen@crescent.com -Subject "Welcome" -Body "Welcome to Crescent Inc."

cmdlet นี้ยังรองรับการส่งอีเมลจากผู้ใช้ของผู้เช่าด้วย


Send-PnPMail -To salaudeen@crescent.com -Subject "Welcome" -Body "Welcome to Crescent Inc." -From Steve@crescent.com -Password "Password of the From User"

นำเข้าจากไฟล์ CSV - จัดรูปแบบเป็นตาราง HTML - และส่งอีเมลโดยใช้ PowerShell

ในข้อกำหนดอื่น ฉันต้องอ่านข้อมูลจากไฟล์ CSV จัดรูปแบบเป็นตาราง HTML แล้วส่งทางอีเมล นี่คือสคริปต์ PowerShell ที่จะทำ:


#Parameters
$CSVPath  = "C:\Temp\ADGroups.csv"
$EmailTo = "Salaudeen@crescent.com"

#Import Data from CSV File
$CSVFile = Import-Csv $CSVPath

#Define CSS Styles
$HeadTag = @"
<style type="text/css">
table {
 font-size:11px; color:#333333; border-width: 1px; border-color: #a9c6c9;
 border: b1a0c7 0.5pt solid; border-spacing: 1px; border-collapse: separate;   
}
 
th {
border-width: 1px; padding: 5px; background-color:#8064a2; font-size: 14pt; font-weight: 600;
border: #b1a0c7 0.5pt solid; font-family: Calibri; height: 15pt; color: white;
}
 
td {
 border: #b1a0c7 0.5pt solid; font-family: Calibri; height: 15pt; color: black; 
 font-size: 11pt; font-weight: 400; text-decoration: none; padding:5px;  
}
 
tr:nth-child(even) { background-color: #e4dfec; }
</style>
"@

#Frame Email Body
$EmailBody = $CSVFile | ConvertTo-Html -Head $HeadTag -PreContent "<h1>Site Users and Groups - Report</h1>" | Out-String

#Send Email
Send-PnPMail -To $EmailTo -Subject "Users and Groups Report" -Body $EmailBody

นี่คืออีเมลที่ใช้งานจริง:

PowerShell สามารถช่วยให้คุณส่งอีเมลจำนวนมากได้อย่างรวดเร็วและง่ายดาย ช่วยประหยัดเวลาและความยุ่งยาก

บทความที่เกี่ยวข้อง