快轉到主要內容

Drupal 9 Webform 發送自定義Email 功能的本地開發環境配置

·963 字·2 分鐘
Y Cheung
作者
Y Cheung
Blogger, Programer & Traveler.
目錄

Drupal 9 Webform 表單提交後可以自定義 email 內容發送通知郵件到指定email地址,本地開發中使用 Mailhog 做測試。

💡關於Mailhog的安裝介紹參看Y Cheung之前的文章《本地開發測試郵件服務 Mailhog

需求分析
#

根據需求,確定要做的任務有2個:

  1. 用戶提交表單後發送通知 email 至指定地址
  2. 獲取用戶填寫的表單內容製作指定內容格式的郵件

環境設定
#

操作步驟
#

安裝模組
#

安裝啟用drupal webform, smtp, mailsystem 模組

配置 SMTP
#

打開 SMTP Authentication Support 配置頁面(/admin/config/system/smtp),填入以下配置信息:

label value note
SMTP server mailhog 填入mailhog docker內部地址,若不使用docker可能的值為localhost
SMTP port 1205 統一端口號
Use encrypted protocol No
Enable TLS encryption automatically Off
Username testuser Mailhog有的版本無需帳戶名密碼
Password testpwd Mailhog有的版本無需帳戶名密碼
⬆ SMTP Authentication Support 配置頁面示例截圖

配置 Mailsystem
#

打開 Configure the Mail System 配置頁面(/admin/config/system/mailsystem),設置如下:

label value
Formatter Webform PHP mailer
Sender SMTP Mailer
⬆ Configure the MailSystem 配置頁面示例截圖

設置 Emails/Handlers
#

在 Webform 的具體表單中設置 Emails/Handlers ,本例為 contact 表單(/admin/structure/webform/manage/contact/handlers),編輯修改 Email notification 項目。

Enable Email notifications and Edit
Fill up General settings form
Fill up Send To setting

在SEND FROM(WEBSIE/DOMAIN)中可以設置自定義Email的From信息。

Fill up Send From settings

在MESSAGE中設置郵件內容。

Subject 填寫郵件標題。

Fill up Message
Click Save button

在SENT TO中可以設置發送郵件至任意email地址,也可以選擇站點郵件地址。

⬆ SENT TO > To Email 選項

自定義 Email內容
#

如果在Message設置中的Body 選擇了 Twig Temlate… ,之後就可以使用twig語法自由地編輯email內文了。

在 HELP USING TWIG 中列出了與當前表單有關的可以使用的variables。一些twig的語法如trim, number, raw等都可以直接在文本中使用。

本例中email內容範本如下:

 1<style>
 2table {
 3  width: 100%;
 4  background-color: #FFFFFF;
 5  border-collapse: collapse;
 6  border-width: 1px;
 7  border-color: #A5A5A5;
 8  border-style: solid;
 9  color: #5A5A5A;
10}
11
12table td, table th {
13  border-width: 1px;
14  border-color: #A5A5A5;
15  border-style: solid;
16  padding: 5px;
17}
18</style>
19<table>
20	<tbody>
21		<tr>
22			<td>Datetime of submission*</td>
23			<td>{{ webform_token('[webform_submission:created]', webform_submission, [], options) }}</td>
24		</tr>
25        <tr>
26			<td>Enquiry*</td>
27			<td>{{ webform_token('[webform_submission:values:enquiry]', webform_submission, [], options) }}</td>
28		</tr>
29			<td>First name*</td>
30			<td>{{ webform_token('[webform_submission:values:first_name:raw]', webform_submission, [], options) }}</td>
31		</tr>
32		<tr>
33			<td>Last name*</td>
34			<td>{{ webform_token('[webform_submission:values:last_name:raw]', webform_submission, [], options) }}</td>
35		</tr>
36		<tr>
37			<td>Country Code + Phone number*</td>
38			<td>{{ webform_token('[webform_submission:values:phone_number]', webform_submission, [], options) }}</td>
39		</tr>
40		<tr>
41			<td>Email address*</td>
42			<td>{{ webform_token('[webform_submission:values:email:raw]', webform_submission, [], options) }}</td>
43		</tr>
44		<tr>
45			<td>Company name*</td>
46			<td>{{ webform_token('[webform_submission:values:company_name:raw]', webform_submission, [], options) }}</td>
47		</tr>
48		<tr>
49			<td>Job title</td>
50			<td>{{ webform_token('[webform_submission:values:job_title:raw]', webform_submission, [], options) }}</td>
51		</tr>
52		<tr>
53			<td>Enquiry details</td>
54			<td>{{ webform_token('[webform_submission:values:message:raw]', webform_submission, [], options) }}</td>
55		</tr>
56		<tr>
57			<td>Page related</td>
58			<td>{{url('<front>')|render|trim('/', 'right')}}{{ uri }}</td>
59		</tr>
60	</tbody>
61</table>

相關文章

drupal8 dursh config-import使用簡介

·285 字·1 分鐘
GIT CLONE 代碼 正常流程 stander 安裝drupal8 修改/sites/default/settings.php 指定 config 文件夾位置 1$config_directories['sync'] = 'sites/config/sync'; 執行drush命令導入config 1drush config-import 提示報錯:

在DRUPAL 7自定義多行表格表單中設置添加行按鈕與刪除行按鈕

·1506 字·4 分鐘
標題有點拗口,YCHEUNG也想不出來更好的中文表達,沒懂的朋友直接看內文吧(或者看url的英文標題)。 這種功能的表格表單YCHEUNG已經嘗試了五六種方式來寫,但都不滿意。不然就是功能上多少有缺陷,比如無法使用drupal 7 form API的日期type,不然就是很繁瑣的一堆代碼和判斷,看着都頭暈……等,今天終於試出了一個令YCHEUNG較滿意的寫法!分享給大家,也是一種記錄,YCHEUNG有預感,之後還會寫很多個這樣的表單QAQ

drupal 7中操作遠程oracle數據庫

·584 字·2 分鐘
系統環境需求 # PHP環境最好是 PHP 7,系統最好是紅帽系。 操作步驟 # 安裝Oracle Instant Client # 在Oracle官網頁面中找到系統對應的客戶端下載安裝,比如Y CHEUNG選擇的就是 Instant Client Downloads for Linux x86-64 ,Fedora可以下載RPM包直接安裝,非RedHat系統的可能需要先編譯,用make install的方式安裝。

Drupal7中自定义表格输入

·1240 字·3 分鐘
Drupal默认的节点表单(entity form)输入有时候并不能满足我们的需求,比如我想做一个类似excel表格输入形式的表单呢? = DEMO点这里 (PS. 用Pantheon的sandbox做了一个随意折腾的drupal站点,真的是折腾死我了= =) 首先,新建一个自定义模块,在你的*.module文件中hook_menu() 指定一个页面路径,设置页面调用表单,比如这样:

Drupal7 中Restful模组应用简单介绍

·1918 字·4 分鐘
安装并启用Restful Module # Restful 2.x 下载 drush 安装 drush dl restful, drush en restful 自定义RESTFUL API模组 # 可参考restful里的范例 sites/all/modules/restful/modules/restful_example 或者测试文件内容 sites/all/modules/restful/tests 模组文件结构 # 1custom_restfulapi/ 2├─ src/ 3│ ├─ Plugin/ 4│ │ ├─ resource/ 5│ │ │ ├─ entity/ 6│ │ │ │ ├─ Testentity__1_0.php 7├─ custom_restfulapi.info 8├─ custom_restfulapi.module API RESOURCES要放在src/Plugin下。 *.info 和 *.module 的内容跟其他自定义模组的相差无几,方法一样,此处从略。