Rebex.Net.Smtp.SendDirect 530 Ошибка

Привет, я пытаюсь отправить письмо, используя Rebex Smtp SendDirect, и я получаю эту ошибку:

 SendEmail: Rebex.Net.SmtpException: Client was not authenticated (530).
 at Rebex.Net.Smtp.WCB(String A, String B)
 at Rebex.Net.Smtp.ADB(String A, String[] B, String C, Stream D, TransferEncoding E)
 at Rebex.Net.Smtp.GDB(MimeMessage A, Stream B, MailAddress C, MailAddressCollection D)
 at Rebex.Net.Smtp.SendDirect(MimeMessage message)
 at Rebex.Net.Smtp.SendDirect(MailMessage message)

Мой код:

Dim myMail As New Rebex.Mail.MailMessage

Try
   myMail.From = "myname@myCompany.com"
   myMail.Subject = "Test"
   myMail.BodyText = "Blah blah"
   myMail.To = "myname@myCompany.com"
   myMail.Attachments.Add(New Rebex.Mail.Attachment(filePath))
   myMail.Priority = Rebex.Mail.MailPriority.Normal

   Smtp.SendDirect(myMail)


   Catch ex As Rebex.Mail.MailException

   Catch ex As System.Exception

   Finally

   End Try

Обратите внимание, что отправитель и получатель - это один и тот же адрес электронной почты. Компания использует сервер Exchange.
Когда я в качестве адреса электронной почты получателя получаю свой адрес электронной почты, код работает нормально.
Что я делаю не так?

1 ответ

Решение

Метод Smtp.SendDirect используется для доставки электронной почты на фактический SMTP-сервер получателя. Если вы получаете сообщение об ошибке "Клиент не прошел проверку подлинности" при попытке отправить электронное письмо непосредственно на SMTP-сервер получателя, это говорит о том, что сервер Exchange компании был настроен так, чтобы не получать электронную почту для пользователя без аутентификации на сервере Exchange. Это определенно странное поведение SMTP-сервера, поскольку оно фактически запрещает кому-либо "странно" отправлять электронную почту на "myname@myCompany.com", подключаясь непосредственно к SMTP-серверу. Таким образом, проблема, вероятно, в конфигурации сервера Exchange.

Если вы измените получатель на свой адрес GMail, метод Rebex Secure Mail Smtp.SendDirect подключается напрямую к SMTP-серверу GMail, и поведение может действительно отличаться.

Если вы хотите отправлять электронную почту с одного и того же адреса ("myname@myCompany.com") и сервер требует аутентификации (в вашем случае), попробуйте следующий код, который должен работать с вашим сервером Exchange - при условии, что у вас есть учетные данные для пользователя:

    Dim smtp As New Smtp()
    smtp.Connect("myCompany.com")
    smtp.Login("myname", "password")

    Dim myMail As New Rebex.Mail.MailMessage

    myMail.From = "myname@myCompany.com"
    myMail.Subject = "Test"
    myMail.BodyText = "Blah blah"
    myMail.To = "myname@myCompany.com"
    myMail.Attachments.Add(New Rebex.Mail.Attachment(filePath))
    myMail.Priority = Rebex.Mail.MailPriority.Normal

    smtp.Send(myMail)
    smtp.Disconnect()
Другие вопросы по тегам