【问题标题】:Email sending using PowerShell使用 PowerShell 发送电子邮件
【发布时间】:2019-01-31 11:40:08
【问题描述】:

我正在尝试从 PowerShell 发送邮件。

$EmailFrom = "xxxxxx@gmail.com"
$EmailTo = "xxxxx@gmail.com"
$Subject = "Subject"
$Body = "Body"
$filenameAndPath = "C:\Desktop\EE.txt"
$SMTPServer = "smtp.gmail.com"

$SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom, $EmailTo, $Subject, $Body)

$attachment = New-Object System.Net.Mail.Attachment($filenameAndPath)
$SMTPMessage.Attachments.Add($attachment)

$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) 
$SMTPClient.EnableSsl = $true 
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("xxxx@gmail.com", "password"); 
$SMTPClient.Send($SMTPMessage)

当我运行此代码时,出现以下异常:

使用“1”参数调用“发送”的异常:“发送邮件失败。” 在行:13 字符:1 + $SMTPClient.Send($SMTPMessage) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException +fullyQualifiedErrorId:SmtpException

如何让$SMTPClient.Send() 正常工作?

【问题讨论】:

    标签: powershell


    【解决方案1】:

    Send-MailMessage 不适合您吗?

    您可以执行以下操作:

    $EmailFrom = "xxxxxx@gmail.com"
    $EmailTo = "xxxxx@gmail.com"
    $Subject = "Subject"
    $Body = "Body"
    $filenameAndPath = "C:\Desktop\EE.txt"
    $SMTPServer = "smtp.gmail.com"
    
    Send-MailMessage -From $EmailFrom -To $EmailTo -Subject $Subject -body $Body -Attachments $filenameAndPath -SmtpServer $SMTPServer
    

    【讨论】:

    • 感谢您的回复。我是PowerShell的新手。正如你所说,我继续前进,但没有运气,我收到了以下错误。请帮帮我。
    • 感谢您的回复。正如你所说,我继续前进,但没有运气,我收到了以下错误。请帮我。 Send-MailMessage :SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应是: 5.7.0 必须首先发出 STARTTLS 命令。 r76sm7795282pfb.69 - gsmtp At line:8 char:1 + Send-MailMessage -From $EmailFrom -To $EmailTo -Subject $Subject -bod ... + CategoryInfo : InvalidOperation: (System.Net.Mail.SmtpClient:SmtpClient) [ Send-MailMessage], SmtpException + FullyQualifiedErrorId : SmtpException,Microsoft.PowerShell.Commands.SendMailMessage
    【解决方案2】:

    这个例子行得通吗?

    ##############################################################################
    $From = "YourEmail@gmail.com"
    $To = "AnotherEmail@YourDomain.com"
    $Cc = "YourBoss@YourDomain.com"
    $Attachment = "C:\temp\Some random file.txt"
    $Subject = "Email Subject"
    $Body = "Insert body text here"
    $SMTPServer = "smtp.gmail.com"
    $SMTPPort = "587"
    Send-MailMessage -From $From -to $To -Cc $Cc -Subject $Subject `
    -Body $Body -SmtpServer $SMTPServer -port $SMTPPort -UseSsl `
    -Credential (Get-Credential) -Attachments $Attachment
    ##############################################################################
    

    请注意,它要求提供凭据并指定使用 SSL。 来自https://www.pdq.com/blog/powershell-send-mailmessage-gmail/

    【讨论】:

      【解决方案3】:

      我发现使用 Powershell 脚本在 Gmail 中发送电子邮件时,您必须先登录 Gmail 帐户并允许发送 PC 的位置/IP 地址发送电子邮件。从运行脚本的同一台 PC 登录到 Gmail,应该有一封安全电子邮件。点击允许,然后测试。

      【讨论】:

        猜你喜欢
        • 2015-12-24
        • 2015-05-15
        • 2018-03-12
        • 2016-07-21
        • 2010-09-25
        • 1970-01-01
        • 2021-04-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多