ASP.NET CORE使用MailKit的一个故障点分析

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", "[email protected]"));

message.To.Add(new MailboxAddress("ttt", "[email protected]"));

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("[email protected]", "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,就没问题了。

时间: 2024-10-14 11:43:03

ASP.NET CORE使用MailKit的一个故障点分析的相关文章

ASP.NET Core中如何针对一个使用HttpClient对象的类编写单元测试

原文地址: How to unit test a class that consumes an HttpClient with IHttpClientFactory in ASP.NET Core? 作者: Anthony Giretti 译者: Lamond Lu 介绍 几年前,微软引入了HttpClient类来替代HttpWebRequest来发送Web请求.这个新的类更易于使用,更加简洁,更具有异步性,且易于扩展. HttpClient类有一个可以接受HttpMessageHandler类

asp.net core 使用MailKit 发送邮件。

使用MailKit需要安装 发送邮件需要开启smtp,我是用的QQ.可以参考http://jingyan.baidu.com/article/0f5fb099dffe7c6d8334ea31.html var message = new MimeMessage(); string Email = "接受者邮箱"; message.From.Add(new MailboxAddress(发送者)); message.To.Add(new MailboxAddress(Email)); m

asp.net core mvc 3.1 源码分析(一)

我们先看下IApplicationBuilder接口的扩展方法UseMvc public static IApplicationBuilder UseMvc( this IApplicationBuilder app, Action<IRouteBuilder> configureRoutes) { if (app == null) { throw new ArgumentNullException(nameof(app)); } if (configureRoutes == null) {

asp.net core mvc 3.1 源码分析(四)

AuthorizationApplicationModelProvider 该类主要添加授权认证的过滤器 先在Controller和Action中找到实现IAuthorizeData的特性,再根据IAuthorizeData创建AuthorizeFilter过滤器,把AuthorizeFilter添加到Controller和Action的Filters列表中 具体的授权逻辑后面分开讲 internal class AuthorizationApplicationModelProvider : I

asp.net core mvc 3.1 源码分析(五)

创建完ApplicationModel后,调用ControllerActionDescriptorBuilder类的Build方法创建对应的ControllerActionDescriptor internal static class ControllerActionDescriptorBuilder { public static IList<ControllerActionDescriptor> Build(ApplicationModel application) { return A

如何在ASP.NET Core中实现一个基础的身份认证

注:本文提到的代码示例下载地址> How to achieve a basic authorization in ASP.NET Core 如何在ASP.NET Core中实现一个基础的身份认证 ASP.NET终于可以跨平台了,但是不是我们常用的ASP.NET, 而是叫一个ASP.NET Core的新平台,他可以跨Windows, Linux, OS X等平台来部署你的web应用程序,你可以理解为,这个框架就是ASP.NET的下一个版本,相对于传统ASP.NET程序,它还是有一些不同的地方的,比

ASP.NET Core Web API下事件驱动型架构的实现(一):一个简单的实现

很长一段时间以来,我都在思考如何在ASP.NET Core的框架下,实现一套完整的事件驱动型架构.这个问题看上去有点大,其实主要目标是为了实现一个基于ASP.NET Core的微服务,它能够非常简单地订阅来自于某个渠道的事件消息,并对接收到的消息进行处理,于此同时,它还能够向该渠道发送事件消息,以便订阅该事件消息的消费者能够对消息数据做进一步处理.让我们回顾一下微服务之间通信的几种方式,分为同步和异步两种.同步通信最常见的就是RESTful API,而且非常简单轻量,一个Request/Resp

一个Mini的ASP.NET Core框架的实现

原文:一个Mini的ASP.NET Core框架的实现 一.ASP.NET Core Mini 在2019年1月的微软技术(苏州)俱乐部成立大会上,蒋金楠老师(大内老A)分享了一个名为“ASP.NET Core框架揭秘”的课程,他用不到200行的代码实现了一个ASP.NET Core Mini框架,重点讲解了7个核心对象,围绕ASP.NET Core最核心的本质—由服务器和若干中间件构成的管道来介绍.我在腾讯视频上看到了这个课程的录像,看了两遍之后结合蒋金楠老师的博客<200行代码,7个对象—让

ASP.NET Core 1.1 静态文件、路由、自定义中间件、身份验证简介

概述 之前写过一篇关于<ASP.NET Core 1.0 静态文件.路由.自定义中间件.身份验证简介>的文章,主要介绍了ASP.NET Core中StaticFile.Middleware.CustomizeMiddleware和Asp.NetCore Identity.但是由于所有的ASP.NET Core的版本有些老,所以,此次重写一次.使用最新的ASP.NET Core 1.1版本.对于ASP.NET Core 1.1 Preview 1会在以后的文章中介绍 目录 使用静态文件 使用路由