如何使用 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 分钟
我想从 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 分钟