最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Golang利用自定義模板發(fā)送郵件的方法詳解

 更新時間:2017年10月12日 10:10:52   作者:Oopsguy  
這篇文章主要給大家介紹了關于Golang利用自定義模板發(fā)送郵件的方法,文中通過示例代碼將實現的方法介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。

前言

在幾周前,我開始工作于一個證券投資組合網站。雖然我只能使用 React 完成整個網站,但我決定使用 Go 來創(chuàng)建一個可以處理某些任務(例如發(fā)送 email)的 API 服務器,相信這是一個很好的做法。

我其中的一個頁面是一個 contact 頁面,目前看起來像這樣:

contact me

我想使用專門為此 contact 表單申請的 Gmail 帳戶發(fā)送一封郵件。除了我以前用過 Javascript 發(fā)送電子郵件的事實,我沒有特別選擇 Go。但為什么不嘗試 Go 呢?我覺得 Go 很棒。

步驟一:創(chuàng)建必要的文件

你只需要兩個文件,一個 html 文件和一個 go 文件。它們可以放置在同一目錄中。只需確保您能正確地引用到 html 文件即可。

注意:您甚至不需要 html 文件,但您必須在 go 文件中以字符串形式編寫 html。我假設你的 Go 環(huán)境已經正確設置。如果沒有,請參照這里:https://golang.org/doc/code.html

步驟二:創(chuàng)建模板

該模板是一段非常簡單的 HTML,而然您可以自定義。先忽略 .Name,我們稍后再回來。

步驟三:GO!

1、添加必要的包

當你閱讀時,您應該知道為什么我們需要這些。

2、登錄 Gmail

第 14 行至第 16 行: 我從之前設置的環(huán)境變量中獲取了 Gmail 帳戶的用戶名和密碼。 使用 smtp 包的 PlaneAuth 方法結合 email 服務器的用戶名、密碼和主機名來登錄。

3、解析模板并設置 email

第 20 行至第 26 行: 首先通過解析 html 來創(chuàng)建一個模板,然后把它存儲在一個變量 t 中(稍后再用)。然后聲明一個 bytes.Buffer 用于保存 email 的 主題、header 和正文(自定義 html)。我發(fā)現使用 bytes.Buffer 類型比在其他在線解決方案中使用的其他類型更加靈活。fmt 包中的 Sprintf 是一個返回格式化字符串的方便方法。您可以使用它來返回包含 email 主題和 header 的字符串。然后將該字符串轉換為字節(jié)數組,并使用 Write 方法寫入字節(jié)緩沖區(qū)。到目前為止,字節(jié)緩沖區(qū)包含了主題和 header。 接下來我們再補充一下。注意:像 HTTP 一樣,您必須在 header 之后添加兩行新行。

4、填充數據模板并發(fā)送 email

第 28 行至第 37 行: 然后我們需要執(zhí)行該模板,第一個參數必須實現 io.Writer 接口。由于 bytes.Buffer 類型實現了 io.Writer 接口,我們可以通過傳入一個指向 body 變量的指針來使用它。為什么我們使用指向 body 而不是該值的指針與 Go 如何實現接口有關,您可以在文檔中獲取更多信息。第二個參數包含我們想要傳入的模板(html)數據。還記得 HTML 中的 .Name 么?那就是我們如何引用執(zhí)行模板的數據。. 是我們的結構體,Name 指的是屬性。不要對 struct 語法感到困惑,我只是在一條語句中聲明了結構體并初始化它。在 HTML 中使用變量只是您在 Go 模板中可以做的事情之一。

最后,使用 SendMail 方法來帶上主機與端口、之前創(chuàng)建的 Auth 類型、from 字段字符串和包含要發(fā)送 email 的地址的字符串數組。據我所知,from 字段字符串什么都不做。也許它對其他 email 服務器有用?

如果您想了解有關 smtp 包的更多信息,這是指向文檔的鏈接。您還可以在這里閱讀關于 text/template 包的內容。我知道我們使用了 html/template 包,但在 godocs 中,template 的實現細節(jié)在 text/template 的文檔中。

譯者注

文末提到的 from 字段指定是 email 中的發(fā)件人。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • Go語言實現的可讀性更高的并發(fā)神庫詳解

    Go語言實現的可讀性更高的并發(fā)神庫詳解

    這篇文章主要為大家介紹了Go語言實現的可讀性更高的并發(fā)神庫詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • go語言錯誤處理基本概念(創(chuàng)建返回)

    go語言錯誤處理基本概念(創(chuàng)建返回)

    這篇文章主要為大家介紹了go語言錯誤處理基本概念(創(chuàng)建返回),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • 解決Go語言數據庫中null值的問題

    解決Go語言數據庫中null值的問題

    這篇文章主要介紹了解決Go語言數據庫中null值的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Golang字符串類型原理及其使用方法

    Golang字符串類型原理及其使用方法

    本文主要介紹了Golang字符串類型原理及其使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-09-09
  • 簡單聊聊為什么說Go語言字符串是不可變的

    簡單聊聊為什么說Go語言字符串是不可變的

    最近有讀者留言說,平時在寫代碼的過程中,是會對字符串進行修改的,但網上都說 Go 語言字符串是不可變的,這是為什么呢,本文就來和大家簡單講講
    2023-05-05
  • Go并發(fā)之RWMutex的源碼解析詳解

    Go并發(fā)之RWMutex的源碼解析詳解

    RWMutex是一個支持并行讀串行寫的讀寫鎖。RWMutex具有寫操作優(yōu)先的特點,寫操作發(fā)生時,僅允許正在執(zhí)行的讀操作執(zhí)行,后續(xù)的讀操作都會被阻塞。本文就來從源碼解析一下RWMutex的使用
    2023-03-03
  • golang json數組拼接的實例

    golang json數組拼接的實例

    這篇文章主要介紹了golang json數組拼接的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Go語言中的sync包同步原語最新詳解

    Go語言中的sync包同步原語最新詳解

    Go語言在sync包中提供了一套多才多藝的同步機制,以及用于管理對共享資源的并發(fā)訪問的原子操作,了解這些工具并為您的并發(fā)需求選擇合適的工具是編寫高效可靠的并發(fā)Go程序的關鍵,這篇文章主要介紹了Go語言中的`sync`包同步原語,需要的朋友可以參考下
    2023-12-12
  • Go開發(fā)環(huán)境搭建詳細介紹

    Go開發(fā)環(huán)境搭建詳細介紹

    由于目前網上Go的開發(fā)環(huán)境搭建文章很多,有些比較老舊,都是基于 GOPATH的,給新入門的同學造成困擾。以下為2023 版 Go 開發(fā)環(huán)境搭建,可參照此教程搭建Go開發(fā)環(huán)境,有需要的朋友可以參考閱讀
    2023-04-04
  • Hugo 游樂場內容初始化示例詳解

    Hugo 游樂場內容初始化示例詳解

    這篇文章主要為大家介紹了Hugo 游樂場內容初始化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02

最新評論

黄平县| 民乐县| 土默特左旗| 广元市| 易门县| 庄浪县| 江永县| 尉犁县| 盐山县| 紫阳县| 桃园市| 保山市| 方城县| 富平县| 天气| 上杭县| 合江县| 齐齐哈尔市| 依安县| 弥勒县| 康平县| 桦甸市| 南靖县| 漾濞| 承德县| 竹溪县| 石狮市| 伊金霍洛旗| 库车县| 永仁县| 南靖县| 台北市| 青海省| 湘潭县| 屏边| 株洲县| 屏东市| 峨眉山市| 咸宁市| 陇南市| 定兴县|