如何使用PowerShell发送电子邮件

如何使用PowerShell发送电子邮件,powershell,smtp,Powershell,Smtp,我想从PowerShell发送电子邮件, 所以我使用这个命令: $EmailFrom = "customer@yahoo.com" $EmailTo = "receiver@ymail.com" $Subject = "today date" $Body = "TODAY SYSTEM DATE=01/04/2016 SYSTEM TIME=11:32:05.50" $SMTPServer = "smtp.mail.yahoo.com" $SMTPClient = New-Object N

我想从PowerShell发送电子邮件, 所以我使用这个命令:

$EmailFrom = "customer@yahoo.com"
$EmailTo = "receiver@ymail.com"  
$Subject = "today date"
$Body = "TODAY SYSTEM DATE=01/04/2016  SYSTEM TIME=11:32:05.50"
$SMTPServer = "smtp.mail.yahoo.com"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)   
$SMTPClient.EnableSsl = $true    
$SMTPClient.Credentials = New-Object 
System.Net.NetworkCredential("customer@yahoo.com", "password")    
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
此命令不适用于Yahoo mail或Outlook mail,但适用于我的Gmail。 我做错了什么吗?

下面的代码片段对我来说非常有用:

我用这个:

Send-MailMessage -To hi@abc.com -from hi2@abc.com -Subject 'hi' -SmtpServer 10.1.1.1

有时您可能需要将EnableSsl设置为false(在这种情况下,邮件将通过网络以未加密的方式发送)

您只需使用Gmail smtp即可

以下是用于发送带有附件的gmail邮件的powershell代码:

    $Message = new-object Net.Mail.MailMessage 
    $smtp = new-object Net.Mail.SmtpClient("smtp.gmail.com", 587) 
    $smtp.Credentials = New-Object System.Net.NetworkCredential("From@gmail.com", "password"); 
    $smtp.EnableSsl = $true 
    $smtp.Timeout = 400000  
    $Message.From = "From@gmail.com" 
    $Message.To.Add("To@gmail.com") 
    $Message.Attachments.Add("C:\foo\attach.txt") 
    $smtp.Send($Message)
在发送者Google帐户上(From@gmail.com),

确保您已打开“访问不太安全的应用”选项, 从谷歌帐户安全仪表板

最后,将此脚本另存为mail.ps1

要调用上述脚本,请在命令提示符或批处理文件上运行以下命令:

    Powershell.exe -executionpolicy remotesigned -File mail.ps1
默认情况下,发送大型附件的超时时间大约为100秒。
在这个脚本中,时间增加到5或6分钟左右

顺便说一句,你需要允许在你的gmail帐户设置中访问不太安全的应用程序。它至少可以与gmail一起工作。嗨,我正在尝试在email.ps1文件中使用Sean的解决方案,并使用PowerShell.exe-NoProfile-ExecutionPolicy绕过C:\email.ps1从命令行运行它,但我一直收到一个关于身份验证的错误。我使用的是正确的密码,用户名是我用@gmail.com和不使用的gmail用户名。希望你能帮上忙好吧,这不是谷歌的代码,我必须用我的gmail帐户登录,然后从这里找到“允许不太安全的应用:”打开“允许不太安全的应用:”并收到我的邮件!谢谢您好,我如何将CC添加到此中?我尝试了许多组合的
$message.Cco.Add(“emailaddress”)
,但都无法运行。我如何添加超过1个附件?我只是在学习PS,我不知道命令存在。您如何为它设置一个特定的时间,使用上述代码的示例-例如,在下午4:00发送电子邮件。fyi此命令已过时,因为它无法保证安全连接。有关更多信息,请参见本页:参数确实存在,但它对我有效。这就是我写这篇文章的原因。如果这些解决方案都不适用于您,请另找一篇文章。
    Powershell.exe -executionpolicy remotesigned -File mail.ps1