0

嗨,我正在尝试使用 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 服务器。
当我将我的 gmail 地址作为收件人的电子邮件地址时,代码可以正常工作。
我做错了什么?

4

1 回答 1

1

Smtp.SendDirect方法用于将电子邮件传送到收件人的实际 SMTP 服务器。如果您在尝试将电子邮件直接发送到收件人的 SMTP 服务器时收到“客户端未通过身份验证”错误消息,则表明公司的 Exchange 服务器已配置为不接收未经 Exchange 服务器身份验证的用户的电子邮件。这绝对是 SMTP 服务器的一种奇怪行为,因为它有效地禁止任何“奇怪”的人向直接连接到 SMTP 服务器的“myname@myCompany.com”发送电子邮件。所以问题可能出在 Exchange 服务器配置中。

如果您将接收者更改为您的 GMail 地址,Rebex Secure Mail Smtp.SendDirect 方法会直接连接到 GMail SMTP 服务器,并且行为可能会有所不同。

如果您想从同一地址发送电子邮件(“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()
于 2014-09-01T12:29:55.770 回答