我的应用程序中有一个电子邮件系统,我使用得很好并且看到它正常工作。
客户还设法使用该程序发送电子邮件,但是,一旦他们为应用程序付款,他们就会将其出售给其他客户。
他们刚刚接受了第一位客户的测试,他们发送电子邮件时遇到了麻烦,所以我调查了错误日志并看到了以下消息:
SMTP服务器需要安全连接,或者客户端未经过身份验证。服务器响应是:5.7.57 SMTP;客户未通过身份验证,以便在MAIL FROM [BN6PR2201CA0027.namprd22.prod.outlook.com]
期间发送匿名邮件
现在,在谷歌搜索这个确切的错误消息后,最高的结果是this question,其中很清楚地看到OP试图从硬编码为“emailaddress”的电子邮件地址发送消息。但是,对我来说情况并非如此。
我的代码如下:
recipient = eMail
Smtp_Server.UseDefaultCredentials = False
Smtp_Server.Credentials = New Net.NetworkCredential(senderAdd, senderPass)
Smtp_Server.EnableSsl = False
Smtp_Server.Host = SMTPserver
AddHandler Smtp_Server.SendCompleted, AddressOf sendComplete
e_mail = New MailMessage()
e_mail.From = New MailAddress(senderAdd)
e_mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess
e_mail.To.Add(eMail)
e_mail.Subject = subj
e_mail.IsBodyHtml = False
e_mail.Body = bod
Smtp_Server.SendAsync(e_mail, userState)
这里有什么东西会导致这个错误吗?如果是这样,它是什么? 变量都是从数据库表中设置的,如果有任何空值,系统会弹出一个消息框来提醒用户这个,然后退出子程序而不发送电子邮件,所以这不是null值的问题 - 我唯一能想到的是证书是错误的,但据说他们已经被3个不同的人证实是正确的。
答案 0 :(得分:0)
您可能需要指定域名。使用NetworkCredential类的this constructor并传入域。
Smtp_Server.Credentials = New Net.NetworkCredential(senderAdd, senderPass, "expectedDomainName")
很难说肯定,因为我们无法在相同条件下重现此问题。