문제

PowerShell에서 Exchange 서비스를 사용하여 전자 메일을 보낼 수 있도록 Small cmdlet을 만들었습니다.PowerShell에서 메시지의 본문을 통과하면 모든 공백이 문자열에서 벗어나는 것처럼 보입니다.

여기에 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]+@([-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]+@([-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 인 것처럼 이메일 본문을 보내는 것이 더 많이 발견됩니다.Class EmailMessage가 무엇인지 모르겠지만 (네임 스페이스 또는 아무것도 모르지만) MailMessage 클래스에는 isBodyHtml for Flag가 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top