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()