Powershell 通过SMTP邮件服务器发送电子邮件

Powershell 通过SMTP邮件服务器发送电子邮件,powershell,email,smtp,windows-server-2012,smtpclient,Powershell,Email,Smtp,Windows Server 2012,Smtpclient,我已在windows Server 2012 r2中安装SMTP虚拟服务器。后来我使用下面的PowerShell脚本发送电子邮件。这是成功的 $email=”xxxxxxxxxx@xxxxxx.com" $pass=“xxxxxxx” $smtpServer=“smtp.office365.com” $smtpPort=“25” $msg=新对象Net.Mail.MailMessage $smtp=新对象Net.Mail.SmtpClient($smtpServer) $smtp.Enabl

我已在windows Server 2012 r2中安装SMTP虚拟服务器。后来我使用下面的PowerShell脚本发送电子邮件。这是成功的

$email=”xxxxxxxxxx@xxxxxx.com" 
$pass=“xxxxxxx”
$smtpServer=“smtp.office365.com”
$smtpPort=“25”
$msg=新对象Net.Mail.MailMessage
$smtp=新对象Net.Mail.SmtpClient($smtpServer)
$smtp.EnableSsl=$true
$msg.From=“$email”
$attachment=新对象Net.Mail.attachment(“C:abcd/123.txt”);
$msg.Attachments.Add($attachment);
$msg.To.Add(“xxxx@xxxxx.com") 
$msg.BodyEncoding=[system.Text.Encoding]::Unicode
$msg.SubjectEncoding=[system.Text.Encoding]::Unicode
$msg.IsBodyHTML=$true
$msg.Subject=“用户列表”
$msg.Body=$msg.Body=“大家好
$SMTP.Credentials=新对象系统.Net.NetworkCredential($email,“$pass”);
$smtp.Send($msg)
我建议使用以下方法代替手动.NET操作:

$Creds = Import-CliXml -Path 'C:\mycreds.xml'

$MailArgs = @{ 'SmtpServer'  = 'smtp.office365.com'
               'Port'        = 25

               'To'          = 'xxxx@xxxxx.com'
               'From'        = $Creds.UserName
               'Subject'     = 'List of users'

               'Attachments' = 'C:\abcd\123.txt'
               'Body'        = '<h2> hi everyone </h2>'
               'Encoding'    = [Text.Encoding]::Unicode
               'BodyAsHtml'  = $true

               'UseSsl'      = $true
               'Credential'  = $Creds
             }
Send-MailMessage @MailArgs
在上面链接的文档中,您可以阅读一些您可能感兴趣的额外选项(例如交货通知)

此外,当使用特定于该设备和帐户的
Export-CliXml
导出密码时,您的密码将被加密。

我建议使用,而不是手动.NET操作:

$Creds = Import-CliXml -Path 'C:\mycreds.xml'

$MailArgs = @{ 'SmtpServer'  = 'smtp.office365.com'
               'Port'        = 25

               'To'          = 'xxxx@xxxxx.com'
               'From'        = $Creds.UserName
               'Subject'     = 'List of users'

               'Attachments' = 'C:\abcd\123.txt'
               'Body'        = '<h2> hi everyone </h2>'
               'Encoding'    = [Text.Encoding]::Unicode
               'BodyAsHtml'  = $true

               'UseSsl'      = $true
               'Credential'  = $Creds
             }
Send-MailMessage @MailArgs
在上面链接的文档中,您可以阅读一些您可能感兴趣的额外选项(例如交货通知)


此外,当使用特定于该设备和帐户的
Export-CliXml
导出密码时,您的密码将被加密。

您可以在服务器上使用Export-CliXml来存储凭据对象-它不会在服务器之间传输,但在您的场景中可以工作。此外,关于存储凭据对象有很多讨论在internet上以安全方式进行cts。您可以在服务器上使用export-clixml来存储凭据对象-它不能在服务器之间传输,但在您的场景中可以工作。此外,关于在internet上以安全方式存储凭据对象有许多讨论。