代码改变世界

使用PowerShell通过Smtp发送邮件

2010-06-09 18:03 by @天行健中国元素, ... 阅读, ... 评论, 收藏, 编辑

借助.NET框架,使PowerShell具有强大的自动化功能,PowrShell可通过Smtp发送邮件,以下是代码:

$comments = @'
author:fuhj(powershell@live.cn ,http://txj.shell.tor.hu)
example:
send-mail -toAddress user@domain.com -subject "Powershell Testing Mail " -body "This is a test mail form powershell" -file "C:\powershellmailfile.txt"
-toName -body and -file are all optional.
use double quotes for the name parameters ie; -body "Proper Content"
'@
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   = "smtp.live.com"
	$smtpUser     = "powershell@live.cn"
	$smtpPassword = "P@ssWord"
	$sslNeed      =$true #SMTP server needs SSL should set this attribute
	$MailAddress  ="powershell@live.cn"
	$fromName     = "fuhj"
	$replyTo      = "powershell@live.cn"
#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!'
	}
}

执行的效果如下图所示:

powershellmail

收到的邮件如下图所示:

powershellreceviedmail

作者: 付海军
出处:http://fuhj02.cnblogs.com
版权:本文版权归作者和博客园共有
转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
个人网站: http://txj.shell.tor.hu