SharePoint Online: E-posta Göndermek için PowerShell


SharePoint Online'dan e-posta göndermek için PowerShell'i kullanabileceğinizi biliyor muydunuz? Bu, bildirim veya uyarı gönderme gibi e-posta tabanlı iş akışlarını otomatikleştirmenin harika bir yoludur. Bu blog yazısında size PowerShell kullanarak bunu nasıl yapacağınızı göstereceğiz.

SPUtility'nin SendEmail işlevi veya PowerShell cmdlet'i Send-MailMessage ile SharePoint Online'dan e-posta gönderebiliriz. İşte her iki durumun örnekleri:

SharePoint Online'da E-posta Göndermek için PowerShell:

Bu blog gönderisi, SharePoint Online'dan e-posta göndermek için PowerShell'i nasıl kullanacağınızı gösterecektir. Yerel SharePoint ve PowerShell yollarını kullanarak e-posta gönderecek örnek komut dosyalarını inceleyeceğiz!

PowerShell İstemci Tarafı Nesne Modeli (CSOM) komut dosyasını kullanarak SharePoint Online'dan nasıl E-posta göndereceğiniz aşağıda açıklanmıştır:


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()

Bu, SharePoint Online'daki tüm site koleksiyonlarının depolama tüketimiyle birlikte SPUtility'nin SendMail yöntemini kullanarak E-posta gönderir. Burada, Kimden ve Kime e-postaları kuruluş içindeki E-posta adresleridir.

E-posta Göndermek için SharePoint Çevrimiçi PowerShell:

Bu sefer, bir SharePoint Online sitesinden E-posta göndermek için PowerShell'in yerel cmdlet'i Send-MailMessage'ı kullanalım. PowerShell kullanarak SharePoint Online'da e-posta göndermek, iş arkadaşlarınız ve ortak çalışanlarınızla iletişim kurmanın hızlı ve kolay bir yoludur. Başlamak için PowerShell konsolunu açın ve aşağıdaki betiği yazın:


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 

Yukarıdaki örnek, bir e-postanın birden fazla alıcıya nasıl gönderileceğini ve e-postanın konusunun ve gövdesinin nasıl ayarlanacağını gösterir. $AdminSiteURL, $EmailFrom, $EmailTo ve $EmailSubject değişkenleri için kendi değerlerinizi belirtmeniz gerekecektir. E-postaya herhangi bir eklenti eklemek istiyorsanız aşağıdakileri kullanın:


#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: E-posta göndermek için PnP PowerShell

Send-PnPMail cmdlet'ini kullanarak SharePoint Online'da PowerShell'den e-posta da gönderebiliriz. Bu, mevcut site bağlamından bir e-posta gönderir.


#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."

Bu cmdlet ayrıca kiracının bir kullanıcısından e-posta gönderilmesini de destekler.


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

CSV Dosyasından İçe Aktarma - HTML Tablosuna Biçimlendirme - ve PowerShell kullanarak E-posta Gönderme

Başka bir gereksinimde, verileri bir CSV dosyasından okumam, onu bir HTML tablosuna biçimlendirmem ve ardından e-postayla göndermem gerekiyordu. İşte bunu yapmak için PowerShell betiği:


#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

İşte E-postanın işleyişi:

PowerShell, toplu e-postaları hızlı ve kolay bir şekilde göndermenize yardımcı olarak zamandan ve zahmetten tasarruf etmenizi sağlar.

İlgili makaleler