如何使用 PowerShell 发送电子邮件

How to send email with PowerShell

我想从 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 邮件或 Outlook 邮件,但适用于我的 Gmail。 我做错了什么吗?

下面的代码片段对我来说真的很管用:

$Username = "MyUserName";
$Password = "MyPassword";
$path = "C:\attachment.txt";

function Send-ToEmail([string]$email, [string]$attachmentpath){

    $message = new-object Net.Mail.MailMessage;
    $message.From = "YourName@gmail.com";
    $message.To.Add($email);
    $message.Subject = "subject text here...";
    $message.Body = "body text here...";
    $attachment = New-Object Net.Mail.Attachment($attachmentpath);
    $message.Attachments.Add($attachment);

    $smtp = new-object Net.Mail.SmtpClient("smtp.gmail.com", "587");
    $smtp.EnableSSL = $true;
    $smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password);
    $smtp.send($message);
    write-host "Mail Sent" ; 
    $attachment.Dispose();
 }
Send-ToEmail  -email "reciever@gmail.com" -attachmentpath $path;

我用这个:

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 帐户上(发件人@gmail.com),

确保您已打开对安全性较低的应用程序的访问选项, 来自 google 帐户安全仪表板。

最后,将此脚本另存为邮件。ps1

要在命令提示符或批处理文件中调用上面的简单脚本运行:

    Powershell.exe -executionpolicy remotesigned -File mail.ps1

默认情况下,发送大型附件的超时时间约为 100 秒左右。 在此脚本中,它增加到大约 5 或 6 分钟