Powershell 邮件发送
【摘要】 目录
目录前言Send-MailMessageNETMail使用OutLook发送邮件
前言
最近领导想在winServer2012上搞个自动发送邮件的计划任务,下面有几种发送邮件的方式。 如果Powershell V2.0 以上建议使用第一种方式(比较无脑),2.0以下的话也可以使用第二种方法。
Send-MailMessage
Sy...
目录
前言
最近领导想在winServer2012上搞个自动发送邮件的计划任务,下面有几种发送邮件的方式。
如果Powershell V2.0 以上建议使用第一种方式(比较无脑),2.0以下的话也可以使用第二种方法。
Send-MailMessage
Syntax:
Send-MailMessage -To $to -From $from -cc $cc -Subject $sub -Body $body -Credential $mycreds -SmtpServer $smtp -DeliveryNotificationOption Never -BodyAsHtml -UseSsl -port 587 -Attachments $attach
- 1
Example:
#Create the secure passward
Function Set-SecurePwd($storage)
{ $mysecret = 'YOURPASSWORD' $mysecret | ConvertTo-SecureString -AsPlainText -Force | #将加密的标准字符串转换为安全字符串。它还可以将纯文本转换为安全字符串。 ConvertFrom-SecureString | #将安全字符串转换为加密的标准字符串。 Out-File -FilePath $storage #将加密的标准字符输出到指定文件 $pw = Get-Content $storage | ConvertTo-SecureString #获取经过加密的标准字符并转换为安全字符串 return $pw
}
Function Send-Email($attach)
{ $pwd = Set-SecurePwd $storage $cred = New-Object System.Management.Automation.PSCredential "userName",$pwd #创建身份认证对象 $to = "xxx@xxx.com" $from = "xxx@163.com" $cc = "xxx@xxx.com" $sub = "TEST" $body = "Just test" $smtp = "smtp.163.com" Send-MailMessage -To $to -From $from -cc $cc -Subject $sub -Body $body -Credential $cred -SmtpServer $smtp -UseSsl -port 25 -Attachments $attach if($?) { Write-Host "Sent Successfully!" -ForegroundColor Green } else { Write-Host "Error" -ForegroundColor Red }
}
#Main
$storage = "E:\pwd\password.txt"
$attach = "E:\attach\test.txt"
Send-Email $attach #指定需要发送的附件
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
注意:$from
的Address必须能够与$cred
身份认证对象一致,这个例子使用了163邮件的SMTP Server 。
.NET.Mail
还可以使用.NET支持的实例来实现邮件发送,上面的Cmdlet也是调用了这一实例。
Function send-mail
{ param( [string]$toAddress = $(throw "toAddress must be set") ,[string]$Subject = $(throw "subject must be set") ,[string]$body = "" ,[string]$file = "")
#mail server configuration $smtpServer = "SMTPSERVERADDRESS" $smtpUser = "smtpUserName" $smtpPassword = "smtpUserPwd" $sslNeed =$true
#SMTP server needs SSL should set this attribute $MailAddress ="xxx@163.com" $fromName = "mailAccountName" $replyTo = "xxx@163.com"
#create the mail message $mail = New-Object System.Net.Mail.MailMessage
#set the addresses $mail.From = New-Object System.Net.Mail.MailAddress($MailAddress,$fromName) $mail.To.Add($toAddress)
#set the content $mail.Subject = $Subject $mail.Priority = "High" $mail.Body = $Body $filename= $file $attachment = new-Object System.Net.Mail.Attachment($filename) $mail.Attachments.Add($attachment)
#send the message $smtp = New-Object System.Net.Mail.SmtpClient -argumentList $smtpServer $smtp.Credentials = New-Object System.Net.NetworkCredential -argumentList $smtpUser,$smtpPassword $smtp.EnableSsl = $sslNeed; try{ $smtp.Send($mail) echo 'Ok,Send succed!' } catch { echo 'Error!Filed!' }
}
Send-Mail "xxx@xxx.com" "TEST" "Just test" "E:\attach\hd.txt"
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
使用OutLook发送邮件
这是调用了本地的MAPI Client程序,不能自动发送,只是填充了邮件信息,需要手动点击发送。例子来自——Powershell中文博客
$subject = 'Sending via MAPI client'
$body = 'My Message'
$to = 'tobias@powertheshell.com'
$mail = "mailto:$to&subject=$subject&body=$body"
Start-Process -FilePath $mail
- 1
- 2
- 3
- 4
- 5
- 6
- 7
:)
文章来源: is-cloud.blog.csdn.net,作者:范桂飓,版权归原作者所有,如需转载,请联系作者。
原文链接:is-cloud.blog.csdn.net/article/details/50661604
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)