简体   繁体   English

如何在C#中对SMTP进行身份验证

[英]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.

相关问题 如何使用C#登录ASP.Net Forms Authenticated站点? - How can I login to ASP.Net Forms Authenticated site using C#? 如何在 c# 中制作该图案 - How Can I Make That Pattern in c# 如何在C#中制作此JSON? - How can I make this JSON in C#? C#SMTP MailMessage收到错误“5.7.57 SMTP; 客户端未通过身份验证,无法在MAIL FROM期间发送匿名邮件 - C# SMTP MailMessage receiving error “5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM” 我可以在C#项目中加入SMTP电子邮件“服务”吗? - SMTP email “Service” I can include in my C# project? C# EWS ExchangeService:我怎么知道它是否经过身份验证? - C# EWS ExchangeService: How do I know if it's authenticated? C# SMTP 的工作原理 - How C# SMTP works SMTP服务器需要安全连接,或者客户端未在C#ASP.NET中进行身份验证 - The SMTP server requires a secure connection or the client was not authenticated in C# ASP.NET c# SMTP 服务器需要安全连接或客户端未通过身份验证。 服务器响应为:5.7.0 需要身份验证 - c# The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.0 Authentication Required C# SMTP 无法在 Outlook.com 的 587 端口上进行身份验证。“服务器响应为:5.7.1 客户端未通过身份验证” - C# SMTP fails to authenticate on Outlook.com, port 587. “The server response was: 5.7.1 Client was not authenticated”
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM