五分鐘快速搭建Serverless免費(fèi)郵件服務(wù)

1. 引言

本文將帶你快速基于 Azure Function 和 SendGrid 構(gòu)建一個(gè)免費(fèi)的Serverless(無服務(wù)器)的郵件發(fā)送服務(wù),讓你感受下Serverless的強(qiáng)大之處。

該服務(wù)可以每月免費(fèi)發(fā)送2,5000封,這是完全白嫖啊,感興趣的,趕緊動起你的小手爪,噼里啪啦搞起來呀。

2. 創(chuàng)建 SendGrid 賬號

你要有一個(gè)Azure賬號,沒有的話,花幾分鐘自行注冊一個(gè)就好。(我的賬號注冊在香港區(qū)域)
咱們先來創(chuàng)建一個(gè)SendGrid Accounts,如下圖所示。點(diǎn)擊SendGrid Accounts后,再點(diǎn)擊創(chuàng)建SendGrid account。

SendGrid Accounts

image.png

填寫完畢后,點(diǎn)擊Review+Create,稍等片刻,提示部署成功,那么恭喜你,可以接著往下玩耍了。如果部署失敗,可能會因?yàn)镾endGrid屏蔽了某些區(qū)域的賬號創(chuàng)建,就只能重新注冊個(gè)Azure賬號玩耍了。

緊接著,前往剛剛創(chuàng)建的SendGrid Account,點(diǎn)擊Manage會跳轉(zhuǎn)至SendGrid管理面板。


SendGrid Account

打開后,會要求你進(jìn)去郵件驗(yàn)證,自行前往郵箱驗(yàn)證即可。


SendGrid Dashboard

點(diǎn)擊API Keys,然后點(diǎn)擊Create API Key,填寫API Key Name,選擇 Full Access,點(diǎn)擊Create&View,記下生成的API Key,后面需要用到。


創(chuàng)建ApiKey

3. 創(chuàng)建第一個(gè)函數(shù)應(yīng)用

回到Azure控制臺,然后搜索函數(shù)應(yīng)用。

搜索函數(shù)應(yīng)用

打開后點(diǎn)擊添加,按以下圖示進(jìn)行創(chuàng)建。其中務(wù)必選擇以代碼發(fā)布,承載的操作系統(tǒng)選擇Windows。
Create Azure Function

創(chuàng)建成功后,轉(zhuǎn)到資源,如下圖所示:


Azure Function

依次點(diǎn)擊函數(shù),添加,選擇HTTP trigger模板,填寫函數(shù)名稱,然后指定身份驗(yàn)證級別。

Create HTTP trigger

點(diǎn)擊創(chuàng)建,創(chuàng)建成功后,跳轉(zhuǎn)到函數(shù)頁面,點(diǎn)擊獲取函數(shù)URL,粘貼URL到瀏覽器就可以訪問到你創(chuàng)建的第一個(gè)函數(shù)應(yīng)用。


First Httptrigger Function

點(diǎn)擊代碼+測試,就可以看到模板代碼,如下圖所示:


Httptrigger 模板代碼

從截圖來看,這個(gè)和C#的語法并無太大差別,官方稱為C#腳本。
緊接著替換run.csx為以下代碼并點(diǎn)擊保存:

//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"
    }
  ]
}

注意觀察配置項(xiàng)中需要指定apiKey,就是我們上面創(chuàng)建SendGrid Account 中對應(yīng)的ApiKey?;氐缴厦鎰?chuàng)建的Azure Function 應(yīng)用服務(wù),然后按下圖添加上面發(fā)郵件函數(shù)需要的配置項(xiàng),如下所示。

添加配置項(xiàng)

添加完畢后,再回到函數(shù)中就可以測試運(yùn)行了,如下圖所示:


查收郵件,你將收到來自Azure Function & SendGrid 的免費(fèi)問候。

查收郵件

當(dāng)然,也可以通過Postman自行驗(yàn)證:


image.png

4.最后

通過以上的連環(huán)操作,相信你不僅成功薅了一把微軟的羊毛,而且順帶對Serverless也有了一定的認(rèn)知。
如果對Azure Function感興趣的,不妨參考官方文檔研究一番,相信你會發(fā)掘不少玩法,順便再薅它幾把羊毛,哈哈哈!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容