【问题标题】:Cannot send powershell email - You cannot call a method on a null-valued expression无法发送 powershell 电子邮件 - 您不能在空值表达式上调用方法
【发布时间】:2015-08-29 00:49:09
【问题描述】:

我在我的本地机器上运行它,但是当我在另一台机器上尝试它时,它在同一个地方有相同的文件等,它失败并出现这个错误。

function email 
{
  $emailSmtpServer = "smtp-mail.outlook.com"
  $emailSmtpServerPort = "587"
  $emailSmtpUser = "USERNAME"
  $emailSmtpPass = "PASSWORD"
  $attachment = "C:\BackupLog.log"
  $emailMessage.Attachments.Add($attachment)
  $emailMessage = New-Object System.Net.Mail.MailMessage
  $emailMessage.From = "myemail@hotmail.co.uk"
  $emailMessage.To.Add( "myemail@civil.lmco.com" )
  $emailMessage.Subject = "Database Issues"
  $emailMessage.IsBodyHtml = $true
  $emailMessage.Body = "Test"

  $SMTPClient = New-Object System.Net.Mail.SmtpClient( $emailSmtpServer ,$emailSmtpServerPort )
  $SMTPClient.EnableSsl = $true
  $SMTPClient.Credentials = New-Object System.Net.NetworkCredential( $emailSmtpUser , $emailSmtpPass );

  $SMTPClient.Send( $emailMessage )
}

这是输出

PS C:\Users\XXLOCKRG1> email
You cannot call a method on a null-valued expression
At C:\database_backups\powershell scripts\functions\email.ps1:8 char:34
+ $emailMessage.Attachments.Add <<<< ($attachment)
+ CategoryInfo          : InvalidOperation: (Add:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

【问题讨论】:

    标签: powershell


    【解决方案1】:

    你有两行代码顺序错误:

    $emailMessage.Attachments.Add($attachment) # $emailMessage isn't instantiated yet
    $emailMessage = New-Object System.Net.Mail.MailMessage
    

    应该是:

    $emailMessage = New-Object System.Net.Mail.MailMessage
    $emailMessage.Attachments.Add($attachment)
    

    您需要先实例化您的对象,然后才能引用其成员。

    【讨论】:

      【解决方案2】:

      您正试图在实际创建 $emailMessage 对象之前为其添加附件。

      $emailMessage.Attachments.Add($attachment)  #<---This is causing the error
      $emailMessage = New-Object System.Net.Mail.MailMessage
      

      只需重新排列行,将 New-Object 行放在 .Attachments.Add() 行之前。

      话虽如此,您是否尝试过使用 Send-MailMessage cmdlet?它随 PowerShell 3.0 一起提供,比使用旧的 SMTP 对象容易得多。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-22
        • 2015-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多