Отправить письмо через SMTP Mail сервер - PullRequest
0 голосов
/ 07 мая 2018

Я установил SMTP Virtual Server в Windows Server 2012 r2. Позже я использовал следующий скрипт 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-сервера, чтобы сценарий мог принимать учетные данные напрямую). Я не хочу использовать адрес электронной почты и учетные данные в приведенном выше сценарии

1 Ответ

0 голосов
/ 07 мая 2018

Я бы предложил использовать 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специфичные для этого устройства и учетной записи с использованием DPAPI .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...