通过电子邮件发送vb.net - SMTP服务器问题或匿名电子邮件?

时间:2017-06-07 14:36:09

标签: vb.net email smtpclient

我的应用程序中有一个电子邮件系统,我使用得很好并且看到它正常工作。

客户还设法使用该程序发送电子邮件,但是,一旦他们为应用程序付款,他们就会将其出售给其他客户。

他们刚刚接受了第一位客户的测试,他们发送电子邮件时遇到了麻烦,所以我调查了错误日志并看到了以下消息:

  

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个不同的人证实是正确的。

1 个答案:

答案 0 :(得分:0)

您可能需要指定域名。使用NetworkCredential类的this constructor并传入域。

Smtp_Server.Credentials = New Net.NetworkCredential(senderAdd, senderPass, "expectedDomainName")

很难说肯定,因为我们无法在相同条件下重现此问题。