0
我已經爲Powershell創建了一個小的cmdlet,可以使用交換服務發送電子郵件。當我在Powershell中傳遞消息正文時,似乎是從字符串中刪除所有空白字符。Powershell cmdlet刪除空白
下面是cmdlet的代碼:
[Cmdlet(VerbsCommunications.Send, "ExchangeEmail")]
public class SendExchageEmailCommand : Cmdlet
{
[Parameter(Mandatory=true)]
public string ServerUri { get; set; }
[Parameter(Mandatory=true)]
public string Subject { get; set; }
[ValidatePattern("^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z][email protected]([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$")]
[Parameter(Mandatory = true)]
public string To { get; set; }
[ValidatePattern("^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z][email protected]([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$")]
[Parameter]
public string From { get; set; }
[Parameter]
public string Body { get; set; }
protected override void ProcessRecord()
{
var service = new ExchangeService(ExchangeVersion.Exchange2007_SP1) {Url = new Uri(ServerUri)};
var mail = new EmailMessage(service) {Subject = Subject};
if (!string.IsNullOrEmpty(From))
{
mail.From = From;
}
if (!string.IsNullOrEmpty(Body))
{
mail.Body = Body;
}
mail.ToRecipients.Add(To);
mail.Send();
}
}
而且PowerShell代碼的樣子:
$subject = "Testing Reports"
$body = ""
$files = Get-ChildItem $ReportsFolder
foreach ($file in $files)
{
$body += "`r`n"
$body += $file.FullName
}
Send-ExchangeEmail -ServerUri $SMTPServerURI -Subject $subject -To $MessageTo -Body $body
有什麼辦法,以確保空白傳遞到cmdlet的(和我是連權它是PS剝離空白?)
我不認爲PowerShell正在刪除空白。我發現你發送電子郵件正文的可能性更大,好像它是HTML,而不是純文本。我不知道EmailMessage是什麼類(因爲我不知道命名空間或任何東西),但是在MailMessage類中有一個IsBodyHtml的標誌,您可以設置它。另一方面,根據您擁有的PowerShell版本,可能已經有內置的Send-MailMessage cmdlet。 –
這種方法相對於將SMTP服務器作爲SMTP主機使用'send-mailmessage'有什麼好處?表面上,它看起來像你沒有額外的功能重新創建該cmdlet。 – alroc
@robert:如果您推薦您的評論回答,我會將其標記爲已接受。 –