How can I make SMTP authenticated in C#

2019-01-03 08:31发布

I create new ASP.NET web application that use SMTP to send message. The problem is the smtp was not authenticated from who send the message.

How can I make SMTP authenticated in my program? does C# have a class that have attribute for enter username and password?

6条回答
Luminary・发光体
2楼-- · 2019-01-03 09:18

Ensure you set SmtpClient.Credentials after calling SmtpClient.UseDefaultCredentials = false.

The order is important as setting SmtpClient.UseDefaultCredentials = false will reset SmtpClient.Credentials to null.

查看更多
小情绪 Triste *
3楼-- · 2019-01-03 09:24

Set the Credentials property before sending the message.

查看更多
放我归山
4楼-- · 2019-01-03 09:26

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.

查看更多
神经病院院长
5楼-- · 2019-01-03 09:33

To send a message through TLS/SSL, you need to set Ssl of the SmtpClient class to 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);
查看更多
乱世女痞
6楼-- · 2019-01-03 09:34

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.

查看更多
爱情/是我丢掉的垃圾
7楼-- · 2019-01-03 09:35
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.

查看更多
登录 后发表回答