ASP.NET CORE使用MailKit的一个故障点分析
2017-03-31 10:40
806 查看
ASP.NET CORE下有需要发邮件的需求,但是原来framework下的 system.net.mail,没有实现smtpclient的功能(当时看是没有,说是准备并入.net core来着),所以只能搜索三方的开源组件,就发现了MailKit了。项目地址: https://github.com/jstedfast/MailKit
public void SendEmailAsync() { var message = new MimeMessage(); message.From.Add(new MailboxAddress("Anuraj", "test@test.com")); message.To.Add(new MailboxAddress("ttt", "ttt@test.com")); message.Subject = "Hello World - A mail from ASPNET Core"; message.Body = new TextPart("plain") { Text = "Hello World - A mail from ASPNET Core" }; using (var client = new SmtpClient()) { //client.QueryCapabilitiesAfterAuthenticating = false; client.Connect("smtp.test.com", 25, false); client.AuthenticationMechanisms.Remove("XOAUTH2"); // Note: since we don't have an OAuth2 token, disable // the XOAUTH2 authentication mechanism. client.Authenticate("test1@test.com", "testpassword"); client.Send(message); client.Disconnect(true); } 很简单的同步代码的例子(也有异步方法可用),黄色高亮的代码,是从网上搜索来的代码中没有的,如果注释掉, 我用公司的服务器发送邮件一直失败,然后网上搜索,发现有人用aliyun邮箱,也失败,并给出了方案。
http://www.cnblogs.com/dudu/p/5661267.html
说是在验证通过后,发送了EHLO ,导致认证失败。 由于我看的时候,版本已经更新到了 1.12版本了,所以就下载了该版本代码,跟踪了一下,果然也是这个原因引起的
if (response.StatusCode == SmtpStatusCode.AuthenticationSuccessful) { if (QueryCapabilitiesAfterAuthenticating) Ehlo (cancellationToken); authenticated = true; 如果QueryCapabilitiesAfterAuthenticating = false,应该就不发送 cancellationToken了,然后测试了下,果然可以正常发送了, 并且,这个 QueryCapabilitiesAfterAuthenticating 是一个public属性,所以,直接设置成false,就没问题了。
public void SendEmailAsync() { var message = new MimeMessage(); message.From.Add(new MailboxAddress("Anuraj", "test@test.com")); message.To.Add(new MailboxAddress("ttt", "ttt@test.com")); message.Subject = "Hello World - A mail from ASPNET Core"; message.Body = new TextPart("plain") { Text = "Hello World - A mail from ASPNET Core" }; using (var client = new SmtpClient()) { //client.QueryCapabilitiesAfterAuthenticating = false; client.Connect("smtp.test.com", 25, false); client.AuthenticationMechanisms.Remove("XOAUTH2"); // Note: since we don't have an OAuth2 token, disable // the XOAUTH2 authentication mechanism. client.Authenticate("test1@test.com", "testpassword"); client.Send(message); client.Disconnect(true); } 很简单的同步代码的例子(也有异步方法可用),黄色高亮的代码,是从网上搜索来的代码中没有的,如果注释掉, 我用公司的服务器发送邮件一直失败,然后网上搜索,发现有人用aliyun邮箱,也失败,并给出了方案。
http://www.cnblogs.com/dudu/p/5661267.html
说是在验证通过后,发送了EHLO ,导致认证失败。 由于我看的时候,版本已经更新到了 1.12版本了,所以就下载了该版本代码,跟踪了一下,果然也是这个原因引起的
if (response.StatusCode == SmtpStatusCode.AuthenticationSuccessful) { if (QueryCapabilitiesAfterAuthenticating) Ehlo (cancellationToken); authenticated = true; 如果QueryCapabilitiesAfterAuthenticating = false,应该就不发送 cancellationToken了,然后测试了下,果然可以正常发送了, 并且,这个 QueryCapabilitiesAfterAuthenticating 是一个public属性,所以,直接设置成false,就没问题了。
相关文章推荐
- 使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序
- C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理
- 使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序
- 使用Code First建模自引用关系笔记 asp.net core上使用redis探索(1) asp.net mvc控制器激活全分析 语言入门必学的基础知识你还记得么? 反射
- ASP.NET Core中的缓存[1]:如何在一个ASP.NET Core应用中使用缓存
- 一个asp.net中使用的flash展示控件
- 在一个IIS中使用ASP.Net 1.1和ASP.Net 2.0的应用
- atlas.asp.net上一个视频有关atlas使用的教学源代码
- [原创]使用ASP.net的Form安全模刑开发的一个工程.
- 关于asp.net(c#),webconfig中如何定义一个字符串让所有页面共同使用?
- 一个Asp.net Theme的示例站点(可马上使用到项目中)
- asp.net中使用SPLIT这个函数把一个字符串分成数组
- 一个ASP.NET中使用的MessageBox类
- [导入]一个ASP.NET中使用的MessageBox类
- Asp.net源码程序分析所感——印度,一个不可轻视的近邻!
- 转发一个Asp.NET 操作配置文件的使用心得
- VB.Net + asp.net的一个web系统,使用SQL2000数据库 现在运行时偶尔会出现一个奇怪现象,一个用户登录时,登录后的界面竟然是另一个用户
- 使用C# Builder建一个简单的ASP.NET应用程序
- 在asp.net 2.0中使用CuteEditor 5.0的一个注意事项
- [参考]一个ASP.Net的DataGrid分页控件,在Oracle数据库下,每次只取当前页的数据,不使用存储过程