這個(gè)適合初學(xué)者的指南中,你將學(xué)習(xí)如何創(chuàng)建一個(gè)響應(yīng)式電子郵件模板。你將跟隨逐步說明以及代碼片段設(shè)計(jì)一個(gè)在任何設(shè)備上都看起來很棒的電子郵件模板。
這個(gè)項(xiàng)目非常適合渴望掌握電子郵件設(shè)計(jì)基礎(chǔ)的新手!
(本文視頻講解:java567.com)
時(shí)在我們的收件箱里面,經(jīng)常會(huì)收到很多精美的HTML郵件,上面有文字,圖片,圖文并茂,點(diǎn)擊圖片按鈕可以直接跳轉(zhuǎn)到所要導(dǎo)流的頁面,有的郵件下面還有Social的Logo,比如Facebook,twitter,點(diǎn)擊按鈕就會(huì)跳轉(zhuǎn)所對(duì)應(yīng)的頁面。
比如上面截取了一些HTML的郵箱格式,這種HTML的EDM營銷感覺非常的酷,比純文本的郵件更有豐富多彩,也更能傳達(dá)出更多的內(nèi)容跟素材,也更吸引抓住用戶的眼球。圖片下面直接可以設(shè)置鏈接,也方便用戶直接點(diǎn)擊進(jìn)入,避免二次流失。
今天就給大家介紹一款在線制作HTML郵件的工具,其實(shí)操作也是非常的簡單,可以直接在網(wǎng)站內(nèi)的系統(tǒng)模板修改,替換成自己的素材和鏈接,也可以自己去設(shè)置圖文排版。
這款工具就是Topol,一款專門在線制作HTML郵件的工具,非常容易操作跟上手
網(wǎng)址為https://app.topol.io
剛開始制作時(shí)建議直接使用網(wǎng)址內(nèi)的模板去替換自己產(chǎn)品的素材,文案跟鏈接,因?yàn)榫W(wǎng)址里面提供了幾十套制作非常精美的HTML郵件,我們先來看看。
大家可以根據(jù)自己的喜愛,去選擇喜歡的模板直接點(diǎn)擊進(jìn)去去后臺(tái)編輯,替換自己的元素,接下來來看看如何替換跟編輯:
比如就以下面這個(gè)手環(huán)的HTML郵件為模板,因?yàn)樯厦娴膱D文信息真的非常非常豐富,有產(chǎn)品圖片,購買按鈕,產(chǎn)品Slogan,產(chǎn)品功能介紹以及社媒鏈接等,展示元素非常充足。
打開后臺(tái)頁面是這樣的,首先先熟悉下下方左側(cè)紅色方框內(nèi)的意思,其實(shí)也都是非常好理解的, 就是我們想要在右側(cè)HTML郵件模板中需要什么元素,直接把紅色方框內(nèi)的按鈕拖過去,比如需要放置文案,就把TEXT按鈕,拖過去,如果是放置圖片,GIF或者視頻,就把對(duì)應(yīng)的按鈕拖到需要放置的展示位置就可以。
Sturecture按鈕就是你想要圖片或者文案的格式,直接拖過去就可以,知道這些意思之后,接下來我們看看如何操作。
第一,先選擇你想要排列的Structure,比如選擇2個(gè)橫排并列,直接拖2個(gè)并列的結(jié)構(gòu)過去,如下所示:
第二,就是要思考你想要展示的元素是什么,是文案還是圖片,把想要展示的形式直接拖到上圖2個(gè)方框里面,比如我們選擇圖片
然后選擇2個(gè)我們自己產(chǎn)品的圖片放上去,如下圖所示,為了節(jié)省時(shí)間,文案部分就不做修改,修改方式跟圖片是一樣的,只需要把圖片的文案替換成我們自己的就可以。
然后圖片下面有個(gè)Check whole collection按鈕,可以刪去這個(gè)按鈕,也可以點(diǎn)擊保留按鈕,可以在按鈕下面放上自己的產(chǎn)品鏈接以及顯示在按鈕上的文案, 還可以調(diào)整按鈕顯示的驗(yàn)收,尺寸大小,字體驗(yàn)收等等非常詳細(xì)的信息,建議大家可以都去嘗試下。
下面就是產(chǎn)品功能的一些展示,可以把下面的主要展示功能替換為自己產(chǎn)品的功能以及圖片,文案等,操作方法跟上面那個(gè)一樣。
接下來就是產(chǎn)品櫥窗展示以及購物按鈕添加,以及一些物流等相關(guān)信息,可以把下面的產(chǎn)品展示圖片替換成自己的以及鏈接。
在接下來就是一些社交媒體的展示,直接點(diǎn)擊下面的按鈕然后在對(duì)應(yīng)的社交媒體輸入對(duì)應(yīng)的鏈接,當(dāng)用戶點(diǎn)擊的時(shí)候就會(huì)跳轉(zhuǎn)到對(duì)應(yīng)的頁面。
加好這些之后,就可以預(yù)覽下效果怎么樣,可以Preview在PC跟移動(dòng)端,哪里有不合適的可以直接調(diào)整下,如果覺得一切都o(jì)k的可以發(fā)送到自己的郵箱預(yù)覽,尤其是導(dǎo)流的鏈接,點(diǎn)擊下是否能跳轉(zhuǎn)到所要導(dǎo)流的頁面。
然后你的郵箱就會(huì)收到你自己親手做的HTML精美的郵件,因?yàn)槲疫@個(gè)主要做演示作用,有很多沒有調(diào)整所以做的比較難看,大家可以好好設(shè)計(jì)一下,做出非常精美的HTML郵件,從而做好EDM營銷,吸引用戶點(diǎn)擊郵箱,從而提高轉(zhuǎn)化。
如果你的郵箱收到自己做的HTML郵件,檢查之后沒有問題,就可以轉(zhuǎn)發(fā)給用戶,可以是做B2C的用戶,也可以是外貿(mào)B端用來發(fā)開發(fā)信的用戶。
還有一個(gè)方法發(fā)送HTML郵件,就是比較復(fù)雜一些,做好HTML郵件之后點(diǎn)擊保存按鈕,然后獲取HTML源代碼,然后復(fù)制源代碼去轉(zhuǎn)換。
比如常見的QQ郵箱,網(wǎng)易郵箱都可以轉(zhuǎn)化,以QQ郵箱為例,點(diǎn)擊格式--然后復(fù)制粘貼HTML源代碼--點(diǎn)擊可視化編輯按鈕就可以啦,如下圖所示
Topol工具真的非常方便制作HTML圖文并茂郵件,且操作方法也非常簡單,功能也非常繁多,建議大家可以好好去研究下,做好EDM營銷,不僅僅對(duì)B端,C端用戶,對(duì)開發(fā)紅人,聯(lián)系海外科技媒體編輯同樣適用。
這篇文章寫的也比較簡單,主要是講一些重要的步驟,如何設(shè)計(jì)非常有吸引力的HTML需要小伙伴在下面好好去嘗試下。
郵件服務(wù)是常用的服務(wù)之一,作用很多,對(duì)外可以給用戶發(fā)送活動(dòng)、營銷廣告等;對(duì)內(nèi)可以發(fā)送系統(tǒng)監(jiān)控報(bào)告與告警。
本文將介紹Springboot如何整合郵件服務(wù),并給出不同郵件服務(wù)商的整合配置。
如圖所示:
Springboot搭建
Springboot的搭建非常簡單,我們使用 https://start.spring.io/來構(gòu)建,十分方便,選擇需要用到的模塊,就能快速完成項(xiàng)目的搭建:
引入依賴
為了使用郵件服務(wù),我們需要引入相關(guān)的依賴,對(duì)于Springboot加入下面的依賴即可:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
配置文件
需要配置郵件服務(wù)提供商的相關(guān)參數(shù),如服務(wù)地址、用戶名及密碼等。下面的例子是QQ的配置,其中密碼并不是QQ密碼,而是QQ授權(quán)碼,后續(xù)我們?cè)僦v怎么獲得。
Springboot的配置文件application.yml如下:
server: port: 8080 spring: profiles: active: qq --- spring: profiles: qq mail: host: smtp.qq.com username: xxx@qq.com password: xxx properties: mail: smtp: auth: true starttls: enable: true required: true --- spring: profiles: netEase mail: host: smtp.163.com username: xxx@163.com password: xxx properties: mail: smtp: auth: true starttls: enable: true required: true
實(shí)現(xiàn)發(fā)送服務(wù)
將JavaMailSender注入,組裝Message后,就可以發(fā)送最簡單的文本郵件了。
@Autowired private JavaMailSender emailSender; public void sendNormalText(String from, String to, String subject, String text) { SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(from); message.setTo(to); message.setSubject(subject); message.setText(text); emailSender.send(message); }
調(diào)用接口
服務(wù)調(diào)用實(shí)現(xiàn)后,通過Controller對(duì)外暴露REST接口,具體代碼如下:
@Value("${spring.mail.username}") private String username; @Autowired private MailService mailService; @GetMapping("/normalText") public Mono<String> sendNormalText() { mailService.sendNormalText(username, username, "Springboot Mail(Normal Text)", "This is a mail from Springboot!"); return Mono.just("sent"); }
把實(shí)現(xiàn)的MailService注入到Controller里,調(diào)用對(duì)應(yīng)的方法即可。本次的郵件發(fā)送人和收件人都是同一個(gè)帳戶,實(shí)際實(shí)現(xiàn)可以靈活配置。
通過Postman調(diào)用接口來測(cè)試一下能不能正常發(fā)送:
成功返回"sent",并收到了郵件,測(cè)試通過。
簡單文本郵件
簡單文本郵件如何發(fā)送,剛剛已經(jīng)講解,不再贅述。
HTML郵件
純文本雖然已經(jīng)能滿足很多需求,但很多時(shí)候也需要更加豐富的樣式來提高郵件的表現(xiàn)力。這時(shí)HTML類型的郵件就非常有用。
Service代碼如下:
public void sendHtml(String from, String to, String subject, String text) throws MessagingException { MimeMessage message = emailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(to); helper.setSubject(subject); helper.setText(text, true); emailSender.send(message); }
與簡單的文本不同的是,本次用到了MimeMessage和MimeMessageHelper,這是非常有用的類,后續(xù)我們經(jīng)常會(huì)用到,組合使用能大大豐富郵件表現(xiàn)形式。
Controller的代碼如下:
@GetMapping("/html") public Mono<String> sendHtml() throws MessagingException { mailService.sendHtml(username, username, "Springboot Mail(HTML)", "<h1>This is a mail from Springboot!</h1>"); return Mono.just("sent"); }
帶附件郵件
郵件發(fā)送文件再正常不過,發(fā)送附件需要使用MimeMessageHelper.addAttachment(String attachmentFilename, InputStreamSource inputStreamSource)方法,第一個(gè)參數(shù)為附件名,第二參數(shù)為文件流資源。Service代碼如下:
public void sendAttachment(String from, String to, String subject, String text, String filePath) throws MessagingException { MimeMessage message = emailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(to); helper.setSubject(subject); helper.setText(text, true); FileSystemResource file = new FileSystemResource(new File(filePath)); helper.addAttachment(filePath, file); emailSender.send(message); }
Controller代碼如下:
@GetMapping("/attachment") public Mono<String> sendAttachment() throws MessagingException { mailService.sendAttachment(username, username, "Springboot Mail(Attachment)", "<h1>Please check the attachment!</h1>", "/Pictures/postman.png"); return Mono.just("sent"); }
帶靜態(tài)資源郵件
我們?cè)L問的網(wǎng)頁其實(shí)也是一個(gè)HTML,是可以帶很多靜態(tài)資源的,如圖片、視頻等。Service代碼如下:
public void sendStaticResource(String from, String to, String subject, String text, String filePath, String contentId) throws MessagingException { MimeMessage message = emailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(to); helper.setSubject(subject); helper.setText(text, true); FileSystemResource file = new FileSystemResource(new File(filePath)); helper.addInline(contentId, file); emailSender.send(message); }
其中,contentId為HTML里靜態(tài)資源的ID,需要對(duì)應(yīng)好。
Controller代碼如下:
@GetMapping("/inlinePicture") public Mono<String> sendStaticResource() throws MessagingException { mailService.sendStaticResource(username, username, "Springboot Mail(Static Resource)", "<html><body>With inline picture<img src='cid:picture' /></body></html>", "/Pictures/postman.png", "picture"); return Mono.just("sent"); }
模板郵件
Java的模板引擎很多,著名的有Freemarker、Thymeleaf、Velocity等,這不是本點(diǎn)的重點(diǎn),所以只以Freemarker為例使用。
Service代碼如下:
@Autowired private FreeMarkerConfigurer freeMarkerConfigurer; public void sendTemplateFreemarker(String from, String to, String subject, Map<String, Object> model, String templateFile) throws Exception { MimeMessage message = emailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(to); helper.setSubject(subject); Template template = freeMarkerConfigurer.getConfiguration().getTemplate(templateFile); String html = FreeMarkerTemplateUtils.processTemplateIntoString(template, model); helper.setText(html, true); emailSender.send(message); }
注意需要注入FreeMarkerConfigurer,然后使用FreeMarkerTemplateUtils解析模板,返回String,就可以作為內(nèi)容發(fā)送了。
Controller代碼如下:
@GetMapping("/template") public Mono<String> sendTemplateFreemarker() throws Exception { Map<String, Object> model = new HashMap<>(); model.put("username", username); model.put("templateType", "Freemarker"); mailService.sendTemplateFreemarker(username, username, "Springboot Mail(Template)", model, "template.html"); return Mono.just("sent"); }
注意模板文件template.html要放在resources/templates/目錄下面,這樣才能找得到。
模板內(nèi)容如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>Hello ${username}</h1> <h1>This is a mail from Springboot using ${templateType}</h1> </body> </html>
其中${username}和${templateType}為需要替換的變量名,Freemarker提供了很多豐富的變量表達(dá)式,這里不展開講了。
郵件服務(wù)的提供商很多,國內(nèi)最常用的應(yīng)該是QQ郵箱和網(wǎng)易163郵箱了。
集成QQ郵件需要有必備的賬號(hào),還要開通授權(quán)碼。開通授權(quán)碼后配置一下就可以使用了,官方的文檔如下:
https://service.mail.qq.com/cgi-bin/help?subtype=1&&no=1001256&&id=28
需要注意的是,開通授權(quán)碼是需要使用綁定的手機(jī)號(hào)發(fā)短信到特定號(hào)碼的,如果沒有綁定手機(jī)或者綁定手機(jī)不可用,那都會(huì)影響開通。
開通之后,授權(quán)碼就要以作為密碼配置到文件中。
163
網(wǎng)易的開通方式與QQ沒有太大差別,具體的指導(dǎo)可以看如下官方文檔:
http://help.mail.163.com/faqDetail.do?code=d7a5dc8471cd0c0e8b4b8f4f8e49998b374173cfe9171305fa1ce630d7f67ac2cda80145a1742516
同樣也是需要綁定手機(jī)進(jìn)行操作。
本次例子發(fā)送后收到郵件如圖所示:
郵件功能強(qiáng)大,Springboot也非常容易整合。技術(shù)利器,善用而不濫用。
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。