Я пытаюсь выяснить, как использовать 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)?
Некоторые дополнительные ограничения:
Get-Credential
не будет работать.Send-MailMessage
cmdlet. При отправке почты через нормальную.NET хорошо понят API.Я не уверен, что вы можете изменить номера портов с помощью 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')
Я не использовал 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")