Pregunta

He creado un cmdlet pequeño para PowerShell para poder enviar un correo electrónico usando servicios de intercambio.Cuando paso el cuerpo del mensaje en PowerShell parece estar despejando todo el espacio en blanco de la cadena.

Aquí está el código 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();
    }
}

y el código de PowerShell se ve como:

$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

¿Hay alguna manera de asegurarse de que el espacio en blanco se pase a un cmdleto (y soy, incluso si es así, es que PS eliminando el espacio en blanco?)

¿Fue útil?

Solución

No creo que PowerShell esté eliminando el espacio en blanco.Me resulta más probable que estés enviando el cuerpo de correo electrónico como si fuera HTML, no un texto sin formato.No sé qué es el mensaje de correo electrónico de la clase (ya que no conozco el espacio de nombres ni nada), pero en la clase de envío de mailMessage hay una bandera para IsbodyHTML, que puede configurar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top