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 สามารถช่วยให้คุณส่งอีเมลจำนวนมากได้อย่างรวดเร็วและง่ายดาย ช่วยประหยัดเวลาและความยุ่งยาก

