我开发了一个可以向任何域发送电子邮件的ASP.net应用程序。 我使用简单的.Net smtp客户端:
var fromAddress = new MailAddress("mymailid@gmail.com");
var fromPassword = "xxxxxx";
var toAddress = new MailAddress("yourmailid@yourdoamain.com");
var smtpClient = new System.Net.Mail.SmtpClient
{
Host = "smtp.gmail.com",// or any others
Port = 587, // correspond to host
EnableSsl = true,
DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
smtpClient.Send(message)
。但我无法使用.Net.Mail对任何现代邮件提供商(包括gmail,yahoo,yandex)进行身份验证,因为我遇到了以下异常The server response was: 5.5.1 Authentication Required
所有smtp配置都正确填写。
如何使用DotNetOpenAuth进行身份验证,使用.Net.Smtp发送电子邮件? 请举个例子。
答案 0 :(得分:4)
我会考虑你的SMTP服务器。是否允许您发送电子邮件?您的请求是否已发送到服务器并进行验证?您是否使用Fiddler查看了流量?
您可以注册SendGrid的免费帐户,该帐户将为您提供SMTP服务器以便为您发送电子邮件。你真的更喜欢使用像SendGrid这样的公司而不是gmail SMTP服务器。
除此之外,Mail4Net可能会帮助您处理代码。
要将GMail用作SMTP服务器,您必须设置一些值:
Outgoing Mail (SMTP) Server: smtp.gmail.com
Use Authentication: Yes
Use Secure Connection: Yes (this can be TLS or SSL depending on your mail client)
Username: your GMail account, i.e. user@gmail.com
Password: your GMail password
Port: 465 or 587
您还可以将连接移至网络或应用配置文件:
<configuration>
<system.net>
<mailSettings>
<smtp deliveryMethod="network" from="pam@gmail.com">
<network
host="smtp.gmail.com"
port="465"
enableSsl="true"
userName="pam@gmail.com"
password="password"
/>
</smtp>
</mailSettings>
</system.net>
</configuration>
答案 1 :(得分:0)
一旦电子邮件和凭据更新,此代码适用于我:
try
{
var message = new MailMessage();
message.Subject = "Test email";
message.Body = "This is a test message";
message.From = new MailAddress("from@email.com");
message.To.Add(new MailAddress("to@email.com"));
var client = new SmtpClient
{
Host = "smtp.sendgrid.com",
Port = 587,
Credentials = new NetworkCredential("User_Name", "My_Password")
};
client.Send(message);
}
catch (Exception ex)
{
var msg = ex.Message;
}
确保您的SendGrid凭据正确无误。
答案 2 :(得分:0)
从评论中,我可以看到image,显示您要做的事情:
但是,您无法知道配置是什么,用户将选择不正确的配置。如果用户选择TLS,但您没有来自邮件服务器的TLS支持,您会怎么做?
我认为您需要添加“发送测试电子邮件”按钮,以发送测试电子邮件以检查配置。然后,您可以显示遇到的任何错误。
答案 3 :(得分:0)
好的,我知道我正在添加很多答案,但是在看了几个小时之后,这是我的调查结果:
The error is the client is not authenticated (5.5.1)
我收到同样的错误,然后我发现收件箱中有一封电子邮件(很少使用gmail帐户)说Someone tried to sign in to your Google Account xxxxx@gmail.com from an app that doesn't meet modern securty standards.
您的应用是否被谷歌屏蔽:http://security.google.com/settings/security/activity可能会显示您的应用,但是您收到了电子邮件吗?
此外,如果该帐户使用两步验证,则不会在未设置应用专用密码的情况下发送电子邮件:https://support.google.com/accounts/answer/185833
我认为这是帐户配置,而不是代码问题。