1. 引言

本文将带你快速基于 Azure Function 和 SendGrid 构建一个免费的Serverless(无服务器)的邮件发送服务,让你感受下Serverless的强大之处。

该服务可以每月免费发送2,5000封,这是完全白嫖啊,感兴趣的,赶紧动起你的小手爪,噼里啪啦搞起来呀。

2. 创建 SendGrid 账号

你要有一个Azure账号,没有的话,花几分钟自行注册一个就好。(我的账号注册在香港区域)

咱们先来创建一个SendGrid Accounts,如下图所示。点击SendGrid Accounts后,再点击创建SendGrid account。

填写完毕后,点击Review+Create,稍等片刻,提示部署成功,那么恭喜你,可以接着往下玩耍了。如果部署失败,可能会因为SendGrid屏蔽了某些区域的账号创建,就只能重新注册个Azure账号玩耍了。

紧接着,前往刚刚创建的SendGrid Account,点击Manage会跳转至SendGrid管理面板。



打开后,会要求你进去邮件验证,自行前往邮箱验证即可。

点击API Keys,然后点击Create API Key,填写API Key Name,选择 Full Access,点击Create&View,记下生成的API Key,后面需要用到。

3. 创建第一个函数应用

回到Azure控制台,然后搜索函数应用



打开后点击添加,按以下图示进行创建。其中务必选择以代码发布,承载的操作系统选择Windows。

创建成功后,转到资源,如下图所示:

依次点击函数,添加,选择HTTP trigger模板,填写函数名称,然后指定身份验证级别。

点击创建,创建成功后,跳转到函数页面,点击获取函数URL,粘贴URL到浏览器就可以访问到你创建的第一个函数应用。

点击代码+测试,就可以看到模板代码,如下图所示:

从截图来看,这个和C#的语法并无太大差别,官方称为C#脚本。

紧接着替换run.csx为以下代码并点击保存:

//run.csx
#r "Newtonsoft.Json"
#r "SendGrid" using System.Net;
using Microsoft.Azure.WebJobs.Host;
using SendGrid.Helpers.Mail;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json; public static SendGridMessage Run(Email req, ILogger log)
{
var reqStr = JsonConvert.SerializeObject(req);
log.LogInformation(reqStr); var message = new SendGridMessage();
message.AddTo(req.To);
message.AddContent("text/html", req.Body);
message.SetFrom(new EmailAddress(req.From));
message.SetSubject(req.Subject);
return message;
} public class Email
{
public string To { get; set; }
public string From { get; set; }
public string Subject { get; set; }
public string Body { get; set; }
}

然后修改function.json中的配置如下,并保存。

{
"bindings": [
{
"authLevel": "function",
"name": "req",
"type": "httpTrigger",
"direction": "in",
"methods": [
"get",
"post"
]
},
{
"type": "sendGrid",
"name": "$return",
"direction": "out",
"apiKey": "SendGridAPIKeyAsAppSetting"
}
]
}

注意观察配置项中需要指定apiKey,就是我们上面创建SendGrid Account 中对应的ApiKey。回到上面创建的Azure Function 应用服务,然后按下图添加上面发邮件函数需要的配置项,如下所示。

添加完毕后,再回到函数中就可以测试运行了,如下图所示:

查收邮件,你将收到来自Azure Function & SendGrid 的免费问候。

当然,也可以通过Postman自行验证:

4.最后

通过以上的连环操作,相信你不仅成功薅了一把微软的羊毛,而且顺带对Serverless也有了一定的认知。

如果对Azure Function感兴趣的,不妨参考官方文档研究一番,相信你会发掘不少玩法,顺便再薅它几把羊毛,哈哈哈!

五分钟快速搭建 Serverless 免费邮件服务的更多相关文章

  1. 五分钟快速搭建Serverless免费邮件服务

    1. 引言 本文将带你快速基于 Azure Function 和 SendGrid 构建一个免费的Serverless(无服务器)的邮件发送服务,让你感受下Serverless的强大之处. 该服务可以 ...

  2. 零元学Expression Blend 4 - Chapter 42 五分钟快速完成扇形变圆形动画

    原文:零元学Expression Blend 4 - Chapter 42 五分钟快速完成扇形变圆形动画 零元学Expression Blend 4 - Chapter 42 五分钟快速完成扇形变圆形 ...

  3. 云上快速搭建Serverless AI实验室

    Serverless Kubernetes和ACK虚拟节点都已基于ECI提供GPU容器实例功能,让用户在云上低成本快速搭建serverless AI实验室,用户无需维护服务器和GPU基础运行环境,极大 ...

  4. 只需五分钟-用Maven快速搭建Spring Cloud微服务

    Maven安装手册 1.准备安装包 安装包: apache-maven-3.5.4-bin.zip  (最好JDK 1.7及以上版本) 集成包: eclipse-maven3-plugin.zip 2 ...

  5. 30分钟快速搭建Web CRUD的管理平台--django神奇魔法

    加上你的准备的时间,估计30分钟完全够用了,因为最近在做爬虫管理平台,想着快速开发,没想到python web平台下有这么非常方便的框架,简洁而优雅.将自己的一些坑总结出来,方便给大家的使用. 准备环 ...

  6. 快速搭建 Serverless 在线图片处理应用

    作者:倚贤 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传.函数 ...

  7. 巨杉Tech | 十分钟快速搭建 Wordpress 博客系统

    介绍 很多互联网应用程序开发人员第一个接触到的网站项目就是博客系统.而全球使用最广的Wordpress常常被用户用来快速搭建个人博客网站.默认情况下,Wordpress一般在后台使用MySQL关系型数 ...

  8. 5分钟快速搭建一个springboot的项目

      现在开发中90%的人都在使用springboot进行开发,你有没有这样的苦恼,如果让你新建一个springboot开发环境的项目,总是很苦恼,需要花费很长时间去调试.今天来分享下如何快速搭建. 一 ...

  9. 快速搭建 Serverless 人脸识别离线服务

    简介 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传.函数计算准 ...

随机推荐

  1. viewerjs 在html打开图片或打开pdf文件使用案例

    开发者常用到在线访问pdf,txt,浏览图片的插件,这里推荐viewer.js这个插件,简单好用.它的核心亮点就是查看图片和pdf功能.老早以前就用过的,昨天一个小伙伴问我Android开发在线浏览p ...

  2. 使用 Masstransit中的 Request/Response 与 Courier 功能实现最终一致性

    简介 目前的.net 生态中,最终一致性组件的选择一直是一个问题.本地事务表(cap)需要在每个服务的数据库中插入消息表,而且做不了此类事务 比如:创建订单需要 余额满足+库存满足,库存和余额处于两个 ...

  3. IOC/DI概念简述及基本应用

    早几年面试时,面试官经常问我依赖注入的概念,但有面试官自己都不是很清楚ioc和di的区别,而是草草归于一类,今天翻了翻以前写的demo,顺便把这部分概念整理出来,加深一下印象. 先科普一下,IOC是什 ...

  4. 动态自动配置Bean

    概览 接口Condition 用于基于条件的自动配置,和注解@Conditional配合使用,可实现JavaBean的动态自动配置 自定义实现动态配置Bean 定义一个接口和两个实现类 定义两个Con ...

  5. 使用 nuget server 的 API 来实现搜索安装 nuget 包

    使用 nuget server 的 API 来实现搜索安装 nuget 包 Intro nuget 现在几乎是 dotnet 开发不可缺少的一部分了,还没有用过 nuget 的就有点落后时代了,还不快 ...

  6. MTPuTTy使用

    在开发过程中我们常常会有连接远程 lunix 服务器的需求,这个时候我们需要一个工具来帮助我们做这件事,而这类工具就是远程连接工具.常见的工具有XShell,SecureCRT,Putty等.这里我选 ...

  7. 自定义Springboot全局异常类

    一.简要说明 如何实现网上文章基本是随便一搜就可以很快找到, 这里不再赘述. 二.Spring-web和Spring-webmvc 通过idea查看到两个注解位于 spring-web-5.2.2.R ...

  8. jvm字节码和类加载机制

    Class类文件的结构 任何一个Class文件都对应着唯一一个类或接口的定义信息,但反过来说,类或接口并不一定都得定义在文件里(类和接口也可以用反射的方式通过类加载器直接生成) Class文件时一组以 ...

  9. SQL语法LPAD和RPAD

    一.[LPAD左侧补齐] LPAD(str,len,padstr) LPAD(str,len,padstr) 返回字符串 str, 其左边由字符串padstr 填补到len 字符长度.假如str 的长 ...

  10. Linux必须要掌握的命令

    Linux必须要掌握的命令 文件目录操作命令 ls 命令格式:ls [选项] [目录名] 命令功能:列出目标目录中所有的子目录和文件 常用参数:-a,-l,-R, 例1:列出/home/peidach ...