(此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注。)

题记:目前.NET Core 1.0中并没有提供SMTP相关的类库,那么要如何从ASP.NET Core 1.0中发送邮件呢?本文将介绍几种可行的方式。

由于.NET Core是微软重写的一个开源跨平台.NET运行时,所以其中裁剪了很多非核心的类库。比如你现在无法在.NET Core或ASP.NET Core中使用System.Net.Mail的SmtpClient来发送邮件了,那么还有什么办法呢?

从一个Web应用的角度看,发送邮件也是有几种方式可选的:

1,调用外部的邮件发送云服务。比如:SendCloud(之前基于它构建过公司的EDM发送系统),阿里云最近也推出了邮件推送(Direct Mail)服务,以及在Azure中的SendGrid服务。这些服务一般都提供了REST API,所以调用的时候只需要调用常见REST服务那样就行(需要引入Microsoft.AspNet.Http包)。

2,调用SMTP Server来发送。正如上面提到的,.NET Core中没有内置SMTP的函数库,那么就需要引入第三方的包(比如MailKit)。在CodeProject的一篇文章中(http://www.codeproject.com/Articles/1081306/How-to-Send-Emails-in-ASP-NET-Core),详细讲解了MailKit的使用,用法和原来的SmtpClient大同小异,这里就不赘述了。

3,上面的这篇文章也提到了一种变通的方法,就是根据STMP的规范生成邮件的文本文件,放到SMTP Server的Pick文件夹下。

4,最后,你实际上也可以自建一个邮件发送服务。比如我之前用于某SaaS的邮件发送功能,就是基于完整的.NET 4.6运行时写了一个Azure WebJobs,从消息队列中获取发送内容,然后调用SMTP Server来最终发送邮件。而要发送邮件的ASP.NET Core应用程序,只需要写入队列消息即可。未来可以根据情况,把SMTP Server的调用替换为邮件发送云服务,而对邮件发送的Web应用不会有任何影响。其中我上面提到的EDM发送系统就是使用这种架构,只是当时用的不是Azure WebJobs而是Hangfire

在ASP.NET Core 1.0中如何发送邮件的更多相关文章

  1. ASP.NET Core 1.0 中的依赖项管理

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

  2. ASP.NET Core 1.0 中使用 Swagger 生成文档

    github:https://github.com/domaindrivendev/Ahoy 之前文章有介绍在ASP.NET WebAPI 中使用Swagger生成文档,ASP.NET Core 1. ...

  3. 用ASP.NET Core 1.0中实现邮件发送功能

    准备将一些项目迁移到 asp.net core 先从封装类库入手,在遇到邮件发送类时发现在 asp.net core 1.0中并示提供SMTP相关类库,于是网上一搜发现了MailKit 好东西一定要试 ...

  4. 在ASP.NET Core 2.0中使用CookieAuthentication

    在ASP.NET Core中关于Security有两个容易混淆的概念一个是Authentication(认证),一个是Authorization(授权).而前者是确定用户是谁的过程,后者是围绕着他们允 ...

  5. 如何在ASP.NET Core 2.0中使用Razor页面

    如何在ASP.NET Core 2.0中使用Razor页面  DotNetCore2017-11-22 14:49 问题 如何在ASP.NET Core 2.0中使用Razor页面 解 创建一个空的项 ...

  6. ASP.NET Core 3.0中使用动态控制器路由

    原文:Dynamic controller routing in ASP.NET Core 3.0 作者:Filip W 译文:https://www.cnblogs.com/lwqlun/p/114 ...

  7. asp.net core 3.0 中使用 swagger

    asp.net core 3.0 中使用 swagger Intro 上次更新了 asp.net core 3.0 简单的记录了一下 swagger 的使用,那个项目的 api 比较简单,都是匿名接口 ...

  8. 探索 ASP.Net Core 3.0系列三:ASP.Net Core 3.0中的Service provider validation

    前言:在本文中,我将描述ASP.NET Core 3.0中新的“validate on build”功能. 这可以用来检测您的DI service provider是否配置错误. 具体而言,该功能可检 ...

  9. 在Asp.Net Core 3.0中如何使用 Newtonsoft.Json 库序列化数据

    在.Net Core 3.0中 内置了一套Json序列化/反序列化方案,默认可以不再依赖,不再支持   Newtonsoft.Json. 但是.NET Core 3.0 System.Text.Jso ...

随机推荐

  1. 利用闪回查看Oracle表历史时刻数据

    利用闪回查看Oracle表历史时刻数据 1.查看表历史时刻数据 select * from tab_test AS OF TIMESTAMP to_timestamp('20140917 10:00: ...

  2. android SDK manager 无法获取更新版本列表

    打开SDK Manager---Tools---Options,填入如下代理和端口,勾选选项也如下. 网址:mirrors.neusoft.edu.cn 端口:80 99%是成功的 参考:http:/ ...

  3. linux skill

    linux console终端乱码解决 1.console终端乱码 在/etc/profile文件的最后一行添加如下内容: export LC_ALL="zh_CN.GB18030" ...

  4. java mail api 使用

    所需要的jar包: http://pan.baidu.com/s/1qWGZRJm 如果遇到这个错误:在windows防火墙允许 javaw.exe访问网络.或者关闭防火墙 FATAL ERROR i ...

  5. windows8 安装TortoiseSVN后的反应

    因为工作需要,昨天安装了TortoiseSVN 64位版,没有马上重启. 随后,IIS中打开页面后浏览器一片空白,没有网页,没有地址,什么都没有.这时还没想到可能是TortoiseSVN的问题.后来实 ...

  6. settings的保存位置

    xp:C:\Documents and Settings\Administrator\Local Settings\Application Data\ win8 C:\Users\XXX\AppDat ...

  7. BM算法和Sunday快速字符串匹配算法

    BM算法研究了很久了,说实话BM算法的资料还是比较少的,之前找了个资料看了,还是觉得有点生涩难懂,找了篇更好的和算法更好的,总算是把BM算法搞懂了. 1977年,Robert S.Boyer和J St ...

  8. JavaScript高级程序设计学习笔记--基本概念

    1.语句 ECMAScript中的语句以一个分号结尾:如果省略分号,则由解析器确定语句的结尾,如下例所示: var sum=a+b //即使没有分号也是有效的语句--推荐 var diff=a-b; ...

  9. 【mongo】pymongo通过_id删除数据

    来源:http://www.educity.cn/wenda/361741.html pymongo 根据 objectId _id 来删除数据想要删除数据,根据_id ,是最靠谱的,具体方法因为 _ ...

  10. 51nod 1449 砝码称重(贪心算法)

    题目:传送门. 题意:中文题. 题解:左物右码,w进制.m%w==0||m%w==1||m%w==w-1都是可以的,否则是NO. #include <iostream> #include ...