Domanda

Ho creato un piccolo cmdlet in PowerShell per poter inviare una e-mail utilizzando i servizi di Exchange.Quando passo il corpo del messaggio a PowerShell sembra spogliare tutti gli spazi bianchi fuori dalla stringa.

Ecco il codice 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();
    }
}
.

E il codice PowerShell sembra:

$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
.

C'è un modo per garantire che lo spazio bianco sia trasmesso in un cmdlet (e sono persino giusto che sia PS che spoglia lo spazio bianco?)

È stato utile?

Soluzione

Non penso che PowerShell stia rimuovendo lo spazio bianco.Trovo più probabile che tu stia inviando il corpo e-mail come se fosse HTML, non semplice testo.Non so quale sia l'emailmessaggio di classe (dal momento che non conosco lo spazio dei nomi o nulla), ma nella classe MailMessage c'è una bandiera per ISBYHTML, che puoi impostare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top