【问题标题】:Send email via SMTP Mail server通过 SMTP 邮件服务器发送电子邮件
【发布时间】:2018-10-17 06:45:15
【问题描述】:

我在 windows server 2012 r2 中安装了 SMTP 虚拟服务器。后来我使用了以下 PowerShell 脚本来发送电子邮件。哪个成功了

$email = "xxxxxxxxxx@xxxxxx.com" 
 
$pass = "xxxxxxx" 
 
$smtpServer = "smtp.office365.com" 
$smtpPort = "25" 
 
$msg = new-object Net.Mail.MailMessage 
$smtp = new-object Net.Mail.SmtpClient($smtpServer) 
$smtp.EnableSsl = $true
$msg.From = "$email"  
$attachment = New-Object 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 ="List of users" 
$msg.Body=$msg.Body = "<h2> hi everyone </h2> 
$SMTP.Credentials = New-Object System.Net.NetworkCredential("$email", "$pass"); 
$smtp.Send($msg)

我的问题是我可以在不使用上述脚本中的地址的情况下发送电子邮件吗(是否有机会在 SMTP 虚拟服务器设置中的某处保存电子邮件地址和凭据,以便脚本可以直接获取凭据)。我不想使用上述脚本中的电子邮件地址和凭据

【问题讨论】:

  • 您可以在服务器上使用 export-clixml 来存储凭证对象 - 它不能在服务器之间传输,但可以在您的场景中使用。此外 - 关于在互联网上以安全方式存储凭证对象的讨论很多。

标签: powershell email smtp windows-server-2012 smtpclient


【解决方案1】:

我建议使用 Send-MailMessage 而不是手动 .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

您将按如下方式创建您的$Creds 对象:

Get-Credential -Credential 'xxxxxxxxxx@xxxxxx.com' | Export-CliXml -Path 'C:\mycreds.xml'

您可能会感兴趣的一些额外选项(例如交货通知)可以在上面链接的文档中阅读。

此外,您的密码在导出时使用特定于该设备的Export-CliXml 和帐户utilizing DPAPI 进行加密。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-09
    • 2017-05-19
    • 2012-03-21
    • 1970-01-01
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多