[英]How can I make SMTP authenticated in C#
I create new ASP.NET web application that use SMTP to send message. 我创建使用SMTP发送消息的新ASP.NET Web应用程序。 The problem is the smtp was not authenticated from who send the message. 问题是smtp未被发送邮件的人验证。
How can I make SMTP authenticated in my program? 如何在程序中对SMTP进行身份验证? does C# have a class that have attribute for enter username and password? C#是否具有一个具有用于输入用户名和密码的属性的类?
using System.Net;
using System.Net.Mail;
using(SmtpClient smtpClient = new SmtpClient())
{
var basicCredential = new NetworkCredential("username", "password");
using(MailMessage message = new MailMessage())
{
MailAddress fromAddress = new MailAddress("from@yourdomain.com");
smtpClient.Host = "mail.mydomain.com";
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = basicCredential;
message.From = fromAddress;
message.Subject = "your subject";
// Set IsBodyHtml to true means you can send HTML email.
message.IsBodyHtml = true;
message.Body = "<h1>your message body</h1>";
message.To.Add("to@anydomain.com");
try
{
smtpClient.Send(message);
}
catch(Exception ex)
{
//Error, could not send the message
Response.Write(ex.Message);
}
}
}
You may use the above code. 您可以使用上面的代码。
Ensure you set SmtpClient.Credentials
after calling SmtpClient.UseDefaultCredentials = false
. 确保在调用SmtpClient.UseDefaultCredentials = false
之后设置SmtpClient.Credentials
。
The order is important as setting SmtpClient.UseDefaultCredentials = false
will reset SmtpClient.Credentials
to null. 该顺序很重要,因为设置SmtpClient.UseDefaultCredentials = false
会将SmtpClient.Credentials
重置为null。
在发送消息之前,设置凭据属性。
To send a message through TLS/SSL, you need to set Ssl of the SmtpClient class to true. 要通过TLS / SSL发送消息,您需要将SmtpClient类的Ssl设置为true。
string to = "jane@contoso.com";
string from = "ben@contoso.com";
MailMessage message = new MailMessage(from, to);
message.Subject = "Using the new SMTP client.";
message.Body = @"Using this new feature, you can send an e-mail message from an application very easily.";
SmtpClient client = new SmtpClient(server);
// Credentials are necessary if the server requires the client
// to authenticate before it will send e-mail on the client's behalf.
client.UseDefaultCredentials = true;
client.EnableSsl = true;
client.Send(message);
How do you send the message? 您如何发送消息?
The classes in the System.Net.Mail
namespace (which is probably what you should use) has full support for authentication, either specified in Web.config, or using the SmtpClient.Credentials
property. System.Net.Mail
命名空间中的类(可能是您应该使用的类)完全支持身份验证,可以在Web.config中指定,也可以使用SmtpClient.Credentials
属性。
In my case even after following all of the above. 就我而言,即使遵循以上所有条件。 I had to upgrade my project from .net 3.5 to .net 4 to authorize against our internal exchange 2010 mail server. 我必须将我的项目从.net 3.5升级到.net 4,以针对我们的内部Exchange 2010邮件服务器进行授权。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.