使用Vue.js和MJML創(chuàng)建響應(yīng)式電子郵件
MJML是一種現(xiàn)代的電子郵件工具,使開發(fā)人員可以在所有設(shè)備和郵件客戶端上創(chuàng)建美觀、響應(yīng)迅速的出色電子郵件。這種標(biāo)記語言是為了減少編寫響應(yīng)式電子郵件的痛苦而設(shè)計(jì)的。
它的語義語法使其易于使用。它還具有功能豐富的標(biāo)準(zhǔn)組件,可縮短開發(fā)時(shí)間。在本教程中,我們將使用MJML構(gòu)建漂亮的響應(yīng)式郵件,并在多個(gè)郵件客戶端上進(jìn)行測(cè)試。
開始MJML
你可以使用npm安裝MJML,以將其與Node.js或CLI結(jié)合使用:
- $ npm install -g mjml
構(gòu)建我們的電子郵件
首先,請(qǐng)創(chuàng)建一個(gè)名為 email.mjml 的文件,盡管你也可以選擇其他任何名稱。創(chuàng)建文件后,我們的響應(yīng)式電子郵件將分為以下幾部分:
- 公司header
- 圖片header
- Email介紹
- 欄目部分
- 圖標(biāo)
- 社交圖標(biāo)
/ 欄目 /
這些部分是我們響應(yīng)式電子郵件的框架。如上所示,我們的電子郵件將分為六個(gè)部分,在我們的 email.mjml 文件中:
- <mjml>
- <mj-body>
- <!-- 公司 Header -->
- <mj-section background-color="#f0f0f0"></mj-section>
- <!-- 圖片 Header -->
- <mj-section background-color="#f0f0f0"></mj-section>
- <!-- Email 介紹 -->
- <mj-section background-color="#fafafa"></mj-section>
- <!-- 欄目部分 -->
- <mj-section background-color="white"></mj-section>
- <!-- 圖標(biāo) -->
- <mj-section background-color="#fbfbfb"></mj-section>
- <!-- 社交圖標(biāo) -->
- <mj-section background-color="#f0f0f0"></mj-section>
- </mj-body>
- </mjml>
從上面可以看到,我們正在使用兩個(gè)MJML組件:mj-body 和 mj-section。mj-body 定義了我們電子郵件的起點(diǎn),而 mj-section 定義了一個(gè)包含其他組件的節(jié)。
對(duì)于定義的每個(gè)部分,還定義了具有各自十六進(jìn)制值的 background-color 屬性。
/ 公司 Header /
我們電子郵件的此部分僅在中心橫幅位置包含我們的公司/品牌名稱:
- <!-- 公司 Header -->
- <mj-section background-color="#f0f0f0">
- <mj-column>
- <mj-text font-style="bold"
- font-size="20px"
- align="center"
- color="#626262">
- Central Park Cruise
- </mj-text>
- </mj-column>
- </mj-section>
mj-column 組件是用來定義一個(gè)列。mj-text 組件用于我們的文本內(nèi)容,并采取字體樣式、字體大小、顏色等樣式屬性。
/ 圖片 Header /
在本部分中,我們將有一個(gè)背景圖片和一段文字,它們應(yīng)代表我們的公司口號(hào)。我們還會(huì)有一個(gè)號(hào)召性用語按鈕,指向一個(gè)包含更多詳細(xì)信息的頁面。
要添加圖片標(biāo)題,你必須將該部分的背景顏色替換為 background-url。與第一個(gè)標(biāo)題相似,你將不得不在垂直和水平方向上居中放置文本,padding保持不變。
按鈕的 href 設(shè)置按鈕的位置。為了讓背景在列中呈現(xiàn)全寬,將列寬設(shè)置為600px,width="600px"。
我們的電子郵件的這一部分將只包含我們的公司/品牌名稱的中心橫幅位置。
- <!-- Image Header -->
- <mj-section background-url="https://ca-times.brightspotcdn.com/dims4/default/2af165c/2147483647/strip/true/crop/2048x1363+0+0/resize/1440x958!/quality/90/?url=https%3A%2F%2Fwww.trbimg.com%2Fimg-4f561d37%2Fturbine%2Forl-disneyfantasy720120306062055"
- background-size="cover"
- background-repeat="no-repeat">
- <mj-column width="600px">
- <mj-text align="center"
- color="#fff"
- font-size="40px"
- font-family="Helvetica Neue">Christmas Discount</mj-text>
- <mj-button background-color="#F63A4D" href="#">
- See Promotions
- </mj-button>
- </mj-column>
- </mj-section>
要使用圖像header,我們將向 jms -section 組件添加 background-url 屬性,然后使用 background-size 和 background-repeat 屬性設(shè)置圖像的樣式。
對(duì)于我們的口號(hào)文本塊,我們使用 align 屬性將文本在水平和垂直方向上居中對(duì)齊。你還可以根據(jù)需要設(shè)置文本顏色,字體大小,字體系列等。
號(hào)召性用語按鈕是使用 mj-button 組件實(shí)現(xiàn)的。background-color 屬性允許我們指定按鈕的背景色,然后使用 href 指定鏈接或頁面的位置。
/ Email件介紹 /
簡(jiǎn)介文字將由標(biāo)題,主體文字和號(hào)召性用語組成。
- <!-- Intro text -->
- <mj-section background-color="#fafafa">
- <mj-column width="400px">
- <mj-text font-style="bold"
- font-size="20px"
- font-family="Helvetica Neue"
- color="#626262">Ultimate Christmas Experience</mj-text>
- <mj-text color="#525252">
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin rutrum enim eget magna efficitur, eu semper augue semper. Aliquam erat volutpat. Cras id dui lectus. Vestibulum sed finibus lectus, sit amet suscipit nibh. Proin nec commodo purus. Sed eget nulla elit. Nulla aliquet mollis faucibus.
- </mj-text>
- <mj-button background-color="#F45E43" href="#">Learn more</mj-button>
- </mj-column>
- </mj-section>
/ 欄目部分 /
在這封郵件的部分,我們會(huì)有兩欄:一欄是描述性的圖片,二欄是我們的文字塊,用來補(bǔ)充第一部分的圖片。
- <!-- Side image -->
- <mj-section background-color="white">
- <!-- Left image -->
- <mj-column>
- <mj-image width="200px"
- src="https://navis-consulting.com/wp-content/uploads/2019/09/Cruise1-1.png"/>
- </mj-column>
- <!-- right paragraph -->
- <mj-column>
- <mj-text font-style="bold"
- font-size="20px"
- font-family="Helvetica Neue"
- color="#626262">
- Amazing Experiences
- </mj-text>
- <mj-text color="#525252">
- Lorem ipsum dolor sit amet, consectetur adipiscing elit.
- Proin rutrum enim eget magna efficitur, eu semper augue semper.
- Aliquam erat volutpat. Cras id dui lectus. Vestibulum sed finibus
- lectus.
- </mj-text>
- </mj-column>
- </mj-section>
左側(cè)的第一列使用 mj-image 組件指定要使用的圖像。該圖像可以是本地文件,也可以是遠(yuǎn)程托管的圖像(在我們的情況下是這樣)。
右側(cè)的第二列包含兩個(gè)文本塊,一個(gè)用于我們的標(biāo)題,另一個(gè)用于主體文本。
/ 圖標(biāo) /
圖標(biāo)部分將分為三列。你還可以添加更多內(nèi)容,具體取決于你希望電子郵件的外觀。
- <!-- Icons -->
- <mj-section background-color="#fbfbfb">
- <mj-column>
- <mj-image width="100px" src="https://191n.mj.am/img/191n/3s/x0l.png" />
- </mj-column>
- <mj-column>
- <mj-image width="100px" src="https://191n.mj.am/img/191n/3s/x01.png" />
- </mj-column>
- <mj-column>
- <mj-image width="100px" src="https://191n.mj.am/img/191n/3s/x0s.png" />
- </mj-column>
- </mj-section>
每列都有其自己的 mj-image 組件,用于渲染圖標(biāo)圖像。
/ 社交圖標(biāo) /
本部分將包含指向我們的社交媒體帳戶的圖標(biāo)。
- <mj-section background-color="#e7e7e7">
- <mj-column>
- <mj-social>
- <mj-social-element name="instagram" />
- </mj-social>
- </mj-column>
- </mj-section>
MJML帶有 mj-social 組件,可輕松用于顯示社交媒體圖標(biāo)。在我們的電子郵件中,我們使用了 Twitter mj-social-element。
全部放在一起
至此,我們已經(jīng)實(shí)現(xiàn)了所有部分,完整的 email.mjml 應(yīng)該如下所示:
- <mjml>
- <mj-body>
- <!-- Company Header -->
- <mj-section background-color="#f0f0f0">
- <mj-column>
- <mj-text font-style="bold"
- font-size="20px"
- align="center"
- color="#626262">
- Central Park Cruises
- </mj-text>
- </mj-column>
- </mj-section>
- <!-- Image Header -->
- <mj-section background-url="https://ca-times.brightspotcdn.com/dims4/default/2af165c/2147483647/strip/true/crop/2048x1363+0+0/resize/1440x958!/quality/90/?url=https%3A%2F%2Fwww.trbimg.com%2Fimg-4f561d37%2Fturbine%2Forl-disneyfantasy720120306062055"
- background-size="cover"
- background-repeat="no-repeat">
- <mj-column width="600px">
- <mj-text align="center"
- color="#fff"
- font-size="40px"
- font-family="Helvetica Neue">Christmas Discount</mj-text>
- <mj-button background-color="#F63A4D" href="#">
- See Promotions
- </mj-button>
- </mj-column>
- </mj-section>
- <!-- Email Introduction -->
- <mj-section background-color="#fafafa">
- <mj-column width="400px">
- <mj-text font-style="bold"
- font-size="20px"
- font-family="Helvetica Neue"
- color="#626262">Ultimate Christmas Experience</mj-text>
- <mj-text color="#525252">
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin rutrum enim eget magna efficitur, eu semper augue semper. Aliquam erat volutpat. Cras id dui lectus. Vestibulum sed finibus lectus, sit amet suscipit nibh. Proin nec commodo purus. Sed eget nulla elit. Nulla aliquet mollis faucibus.
- </mj-text>
- <mj-button background-color="#F45E43" href="#">Learn more</mj-button>
- </mj-column>
- </mj-section>
- <!-- Columns section -->
- <mj-section background-color="white">
- <!-- Left image -->
- <mj-column>
- <mj-image width="200px"
- src="https://navis-consulting.com/wp-content/uploads/2019/09/Cruise1-1.png"/>
- </mj-column>
- <!-- right paragraph -->
- <mj-column>
- <mj-text font-style="bold"
- font-size="20px"
- font-family="Helvetica Neue"
- color="#626262">
- Amazing Experiences
- </mj-text>
- <mj-text color="#525252">
- Lorem ipsum dolor sit amet, consectetur adipiscing elit.
- Proin rutrum enim eget magna efficitur, eu semper augue semper.
- Aliquam erat volutpat. Cras id dui lectus. Vestibulum sed finibus
- lectus.
- </mj-text>
- </mj-column>
- </mj-section>
- <!-- Icons -->
- <mj-section background-color="#fbfbfb">
- <mj-column>
- <mj-image width="100px" src="https://191n.mj.am/img/191n/3s/x0l.png" />
- </mj-column>
- <mj-column>
- <mj-image width="100px" src="https://191n.mj.am/img/191n/3s/x01.png" />
- </mj-column>
- <mj-column>
- <mj-image width="100px" src="https://191n.mj.am/img/191n/3s/x0s.png" />
- </mj-column>
- </mj-section>
- <!-- Social icons -->
- <mj-section background-color="#e7e7e7">
- <mj-column>
- <mj-social>
- <mj-social-element name="instagram" />
- </mj-social>
- </mj-column>
- </mj-section>
- </mj-body>
- </mjml>
運(yùn)行我們的應(yīng)用程序
現(xiàn)在我們已經(jīng)完成了電子郵件的構(gòu)建,我們可以繼續(xù)對(duì)其進(jìn)行編譯以查看其外觀。為此,我們?cè)诮K端中鍵入以下內(nèi)容:
- mjml -r email.mjml -o .
- -r:允許MJML讀取和編譯我們的 mjml 文件
- -o .:告訴MJML將編譯后的 mjml 輸出保存到同一目錄中
MJML完成編譯后,你現(xiàn)在應(yīng)該在同一目錄中看到一個(gè) email.html 文件。 使用你喜歡的電子郵件客戶端或?yàn)g覽器打開它,它的外觀應(yīng)類似于下圖:
總結(jié)
正如我們剛才看到的,MJML幫助我們生成跨多個(gè)瀏覽器和客戶機(jī)響應(yīng)的高質(zhì)量、漂亮的HTML電子郵件。