Отправьте почта через Gmail с V2 PowerShell Отправляют-MailMessage

Я пытаюсь выяснить, как использовать V2 PowerShell Send-MailMessage с Gmail.

Вот то, что я имею до сих пор.

$ss = New-Object Security.SecureString
foreach ($ch in "password".ToCharArray())
{
    $ss.AppendChar($ch)
}
$cred = New-Object Management.Automation.PSCredential "uid@domain.com", $ss
Send-MailMessage  -SmtpServer smtp.gmail.com -UseSsl -Credential $cred -Body...

Я получаю следующую ошибку

Send-MailMessage : The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required. Learn
 more at
At foo.ps1:18 char:21
+     Send-MailMessage <<<<      `
    + CategoryInfo          : InvalidOperation: (System.Net.Mail.SmtpClient:SmtpClient) [Send-MailMessage], SmtpException
    + FullyQualifiedErrorId : SmtpException,Microsoft.PowerShell.Commands.SendMailMessage

Я делаю что-то не так или Send-MailMessage не полностью испеченный уже (я нахожусь на CTP 3)?

Некоторые дополнительные ограничения:

  1. Я хочу, чтобы это было неинтерактивным, таким образом, Get-Credential не будет работать.
  2. Учетная запись пользователя не находится на домене Gmail, но Google Apps зарегистрировал домен.
  3. Для этого вопроса я только интересуюсь Send-MailMessage cmdlet. При отправке почты через нормальную.NET хорошо понят API.

41
задан Peter Mortensen 26 October 2019 в 08:24
поделиться

2 ответа

Я не уверен, что вы можете изменить номера портов с помощью Send-MailMessage, поскольку Gmail работает на порту 587. В любом случае, вот как отправить электронную почту через Gmail с помощью .NET SmtpClient:

$smtpClient = New-Object system.net.mail.smtpClient
$smtpClient.Host = 'smtp.gmail.com'
$smtpClient.Port = 587
$smtpClient.EnableSsl = $true
$smtpClient.Credentials = [Net.NetworkCredential](Get-Credential GmailUserID)
$smtpClient.Send('GmailUserID@gmail.com', 'yourself@somewhere.com', 'test subject', 'test message')
7
ответ дан 27 November 2019 в 00:29
поделиться

Я не использовал PowerShell V2 Send-MailMessage , но я использовал класс System.Net.Mail.SMTPClient в V1 для отправки сообщений в учетную запись Gmail для демонстрации целей. Это может быть излишним, но я запускаю сервер SMTP на своем ноутбуке с Windows Vista (см. по этой ссылке ). Если вы работаете на предприятии, у вас уже есть почтовый ретранслятор, и этот шаг не нужен. Имея SMTP-сервер, я могу отправлять электронную почту в свою учетную запись Gmail со следующим кодом:

$smtpmail = [System.Net.Mail.SMTPClient]("127.0.0.1")
$smtpmail.Send("myacct@gmail.com", "myacct@gmail.com", "Test Message", "Message via local SMTP")
0
ответ дан 27 November 2019 в 00:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: