在邮件正文中使用+的有趣问题

时间:2012-08-17 18:43:29

标签: powershell

  • 列表项

这是一个奇怪的。 $ body与

构建

添加30 - 100行的循环: $ body + =“+ $ stuff`n”

问题是如果我在$ body中使用加号(+),它会占用正文中的每一行并将其分割为行大小的一半并在下一行继续它:

实施例,

该行实际上是:

  • 月亮|今天发光如此美好|现在购买黄金并快速致富

它变为(stackoverflow将我的(+)改为子弹。请注意,接下来的两行前面有一个加号。)

  • 月亮|今天发光如此美好|现在买黄金

  • 月亮|并很快变得富裕

如果我将加号(+)更改为单词“添加”,我会进入电子邮件正文:

添加月亮|今天发光如此美好|现在购买黄金并快速致富

我想使用加号(+),因为它与另一个程序在电子邮件正文中使用+/-行的格式相同。任何想法如何使这个工作?

    function mailalert($body) {
        $SMTPserver = "mailhost.domain.com"
        $from = "replies-disabled@domain.com"
        $to = "joe@domain.com"
        $subject = "Report for Stuff"
        $mailer = new-object Net.Mail.SMTPclient($SMTPserver)
        $msg = new-object Net.Mail.MailMessage($from, $to, $subject, $body)
        $mailer.send($msg) 
    }

2 个答案:

答案 0 :(得分:0)

尝试:

$body = "$body $stuff `n"

在你的循环中。

使用“`”逃避任何麻烦的角色。

$body = "$body `+ $stuff `n"

答案 1 :(得分:0)

好的,我放弃了Net.Mail.SMTPclient并决定使用html作为文本正文来解决这个问题:

    function mailalert($diff) {
        $SMTPserver = "mailhost.domain.com"
        $smtp = New-Object system.Net.Mail.SmtpClient($SMTPserver)
        $mail = New-Object System.Net.Mail.MailMessage
        $mail.From = "replies-disabled@domain.com"
        $mail.To.Add("joe@domain.com")
        $mail.Subject = "Report for stuff"
        $mail.Body = $diff
        $mail.IsBodyHtml = $true
        $smtp.Send($mail)
    }

我改变了所有使用`n到
和tada它的作用。为什么另一种方式不起作用仍然有点令人困惑。我看到另一个问题,其中带有优势的电子邮件地址正在被解决,所以我想知道修复是否打破了这一点。 :)