PowerShell SmtpClient не может аутентифицироваться - PullRequest
0 голосов
/ 19 января 2019

Я пытаюсь отправить электронное письмо с помощью PowerShell с помощью службы электронной почты Rack Space.Я должен добавить, что я парень из PHP, так что PowerShell далеко выходит за рамки моей обычной работы.Код следующий (все переменные установлены над этим фрагментом):

$emailMessage = New-Object System.Net.Mail.MailMessage
$emailMessage.From = $emailFrom

foreach ($addr in $emailTo) {
    $emailMessage.To.Add($addr)
}

$emailMessage.Subject = $subject
$emailMessage.Body = $emailContent

$smtpClient = New-Object System.Net.Mail.SmtpClient('smtp.emailsrvr.com', '587')
$smtpClient.UseDefaultCredentials = $false;
$smtpClient.Credentials = New-Object System.Net.NetworkCredential($smtpUser, $smtpPass);

Когда я запускаю скрипт, я получаю следующую ошибку:

Исключение вызывает "Отправить" с "1"аргумент (ы):" Транзакция не выполнена. Ответ сервера: 5.7.1: адрес получателя отклонен: доступ запрещен "В C: \ my_test_script.ps1: 24 char: 5 + $ SMTPClient.Send ($ emailMessage) + ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId: SmtpException

Из того, что я понимаю, - это потому, что SMTP-клиент не проходит надлежащую аутентификацию в RackSpace и ретрансляция запрещена.

Я решил попробовать telnet, чтобы посмотреть, что к чему:

220 smtp2.relay.ord1d.emailsrvr.com ESMTP - VA Code Section 18.2-152.3:1 forbids use of this system for unsolicited bulk electronic mail (Spam)
ehlo mydomain.com
250-smtp2.relay.ord1d.emailsrvr.com
250-SIZE 75000000
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250 STARTTLS

Я думаю, проблема в том, что PowerShell, будучи продуктом Microsoft, хочет использовать более безопасный метод аутентификации, чем PLAIN или LOGIN.,

Могу ли я заставить PowerShell использовать метод аутентификации, поддерживаемый RackSpace?Я рассматривал несколько решений, но они, похоже, основаны на C #, так как код не распознается PowerShell.

1 Ответ

0 голосов
/ 20 января 2019

Как утверждает браузер MS .NET API, «System.Net.Mail.SmtpClient теперь является устаревшим API».«SmtpClient и его сеть типов плохо спроектированы, мы настоятельно рекомендуем использовать https://github.com/jstedfast/MailKit и https://github.com/jstedfast/MimeKit вместо»

Вы можете попробовать это.

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