Question

J'ai créé une petite cmdlet pour PowerShell pour pouvoir envoyer un e-mail à l'aide de Services Exchange.Lorsque je passe le corps du message dans PowerShell semble supprimer tout espacement de la chaîne.

Voici le code 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();
    }
}

et le code PowerShell ressemble à:

$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

Y a-t-il un moyen de veiller à ce que WhitSpace soit transmis dans une cmdlet (et suis-je même juste que c'est PS Stripping the Whitpace?)

Était-ce utile?

La solution

Je ne pense pas que PowerShell élimine les espaces.Je trouve plus probable que vous envoyez le corps de courrier électronique comme s'il s'agissait de HTML, pas de texte brut.Je ne sais pas quelle classe emailMessage est (puisque je ne connais pas l'espace de noms ou quoi que ce soit), mais dans la classe MailMessage, il existe un drapeau pour isodyhtml, que vous pouvez définir.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top