Я бы предложил использовать 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 .