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