EmailJS:5步使用JavaScript直接從前端發(fā)送電子郵件
你不需要使用任何后端語言,如 PHP 或 Python。此外,你甚至不需要Node.js!
有很多方法可以讀取這些數(shù)據(jù)。你可以將你的表單與數(shù)據(jù)庫(如MySQL)連接,然后從數(shù)據(jù)庫中讀取傳入的信息。好吧,這是一個選擇,但是我認(rèn)為這對于你的非技術(shù)客戶來說可能會很麻煩。
你不需要使用任何后端語言
你需要的只是一個簡單的 EmailJS 庫。
本文將介紹下面兩個重要功能:
- 配置 EmailJS 帳戶
- 使用JS發(fā)送電子郵件
我將分 5 個步驟向你展示如何從頭開始構(gòu)建電子郵件發(fā)送器。
在我的項目中使用了Webpack,我在 src 文件夾存放源碼,dist 存放最終發(fā)布版本的代碼,使用 npm run dev 可以把項目跑起來。
提供項目完整代碼,真實可運行。需要的可以點擊我的頭像,私信關(guān)鍵字:emailjs。

項目完整代碼

項目界面
步驟1,用HTML創(chuàng)建表單
首先需要做的當(dāng)然是創(chuàng)建一個HTML表單。注意,你不必設(shè)置 required 或 max 等驗證屬性,因為稍后,preventDefault() 函數(shù)將在你的提交事件上運行,它將取消這些屬性的工作。
表單中最重要的事情是為每個輸入設(shè)置 name 屬性,這在后面會用到的。
我的簡單表格如下所示:
src/html/index.html
步驟2,注冊emailjs
要配置電子郵件,您必須注冊emailjs服務(wù)。不用擔(dān)心,使用此網(wǎng)站非常友好,你不會花很多時間在該網(wǎng)站上。
注冊emailjs服務(wù):https://dashboard.emailjs.com/account/create
登錄后,將詢問你有關(guān)電子郵件服務(wù)的信息。它放置在個人電子郵件服務(wù)區(qū)域中,就我而言,我選擇了Gmail。

點擊 Connect account 連接Gmail。

連接Gmail
此時會彈出Gmail的授權(quán)窗口,在請求權(quán)限對話框中點擊允許。

連接 Gmail 帳戶后,點擊“Add Service”按鈕。成功添加后可以看到如下界面。

例如,如果你連接上你的xyz@gmail.com賬戶,你未來收到的郵件就會從這個賬戶發(fā)出。所以不要擔(dān)心讓Gmail代你發(fā)送電子郵件——這正是你所需要的!
步驟3,創(chuàng)建你的郵件模板

創(chuàng)建你的郵件模板
經(jīng)過上面的步驟,你已經(jīng)成功地連接了您的 Gmail帳戶,在你的儀表板中應(yīng)該可以看到,點擊左側(cè)的導(dǎo)航進(jìn)入郵件模板設(shè)置頁面。
然后單擊“Create a new template”按鈕創(chuàng)建新模板,界面非常友好,所以創(chuàng)建它不會有任何問題。你可以選擇模板的名稱和ID,我設(shè)置為“my-amazing-template”。

創(chuàng)建新模板
你現(xiàn)在必須指定,傳入的電子郵件應(yīng)該是什么樣的。將使用來自于表單中的 name 屬性作為變量插入到 {{{ }}} 符號中。
不要忘記在 To email(收件人)部分中放置一個電子郵件地址,這里我們讀取我們輸入的收件人變量。

插入變量
這是我的簡單模板,它使用了4個變量,分別來自于我的HTML表單,我還指定了一個收發(fā)郵件的主題。
步驟4,保存你的API密鑰
好吧,這部分沒有什么特別的。 Emailjs共享授權(quán)API密鑰,這些密鑰將在發(fā)送電子郵件期間使用。當(dāng)然,放置這些密鑰的最佳位置是 .env 配置文件。但由于我的工作對象是簡單的靜態(tài)文件,不想做服務(wù)器配置的工作,所以我會把它們保存在 apikeys 文件中,以后再導(dǎo)入。
你的 USER_ID 位于Account > API Keys中。

并且你的 TEMPLATE_ID 位于模板標(biāo)題的下方。

這是我的 src/js/apikeys.js 的示例配置。
- export default {
- USER_ID :'user_DPUd-rest-of-my-id',
- TEMPLATE_ID:'my_amazing_template'
- }
步驟5,發(fā)送郵件!
現(xiàn)在是該項目的最后也是最重要的部分了,現(xiàn)在我們必須使用javascript發(fā)送電子郵件。
首先,你必須下載emailjs軟件包。
- npm i emails-com
之后,轉(zhuǎn)到你的 src/js/main.js 文件并導(dǎo)入你的庫和apikey。
- import emailjs from 'emailjs-com'
- import apiKeys from './apikeys'
現(xiàn)在是時候在 src/js/main.js 中編寫發(fā)送電子郵件功能了。
- const sendEmail = e => {
- e.preventDefault()
- emailjs
- .sendForm('gmail', apiKeys.TEMPLATE_ID, e.target, apiKeys.USER_ID)
- .then(
- result => {
- console.log(result.text)
- },
- error => {
- console.log(error.text)
- }
- )
- }
很簡單。如你所見,sendForm 函數(shù)采用4個參數(shù)。
第一個參數(shù):你的電子郵件的ID,位于以下位置。

第二個參數(shù):TEMPLATE_ID 來自你的apikey文件。
第三個參數(shù):表單提交中的事件對象e。
第四個參數(shù):USER_ID 來自你的apikey文件。
最后,找到表單并添加提交事件偵聽器。
- // src/js/main.js
- const form = document.querySelector('.form')
- form.addEventListener('submit',sendEmail)
如前所述,由于使用了 preventDefault() 函數(shù),因此無法進(jìn)行屬性驗證,你必須使用JS自己進(jìn)行驗證和清除輸入。
僅此而已,最后讓我們使用 npm run dev 測試一下,我填寫頁面上的表單并發(fā)送。

我的163郵箱收到了電子郵件,內(nèi)容正是根據(jù)我們的模板和表單數(shù)據(jù)渲染出來的。

通過上圖可以看出,所有的變量的值都填充到了正確的位置上。
結(jié)束
通過本文的介紹你會發(fā)現(xiàn)用 JS 發(fā)送郵件并非難事。
使用 emailjs,你可以簡單的方式發(fā)送電子郵件。
我相信你未來的用戶會很高興收到來自他們網(wǎng)頁上表單填寫數(shù)據(jù)的t郵件,相信本文對你有幫助。