Rebex.Net.Smtp.SendDirect 530错误

时间:2014-09-01 09:27:32

标签: vb.net rebex

您好我正在尝试使用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地址时,代码工作正常 我做错了什么?

1 个答案:

答案 0 :(得分: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()