APEX提供强大的邮件发送功能。可以通过预定义模板(mail template)的方式定制专属的邮件格式。然后通过调用APEX API进行邮件发送。
本文的应用场景是:在完成一项服务之后,向客户发送客户满意度反馈邮件。邮寄根据客户的区域,会自动选择发送中文,日文,韩文或英文的邮件。本应用场景会涉及到APEX的Dymanic Actions,Computation,PL/SQL,邮件模板(mail template)等知识点。
先看一下最后的邮件的效果:
本文不讲述如何配置APEX的邮件服务。具体的配置,请点击以下链接参阅Oracle APEX的文档。
https://docs.oracle.com/en/database/oracle/application-express/20.1/aeadm/configuring-instance-settings.html#GUID-FEC98D5E-3C89-423E-9603-4CD2E553BA34
===== 1 创建邮件模板 =====
首先我们要在共享组件(Shared Components)里创建邮件模板。这个案例里涉及到4个语言的邮件。所以要创建4个邮件模板。下面就以中文邮件的模板为例。
点击新建邮件模板后,进入到模板设置界面。必填项是Template Name,Static Identifier,Email Subject(邮件标题)和Body。其中Static Identifier是作为在应用里调用模板的依据。例子如下:
接下来是要完成最重要的邮件主体。邮件的主体主要以HTML代码实现。其中Header和Footer不是必须的。另外,在Body中可以通过<b>, <br>, <tr>, <td>等标识,实现数据的表格化展现。
留意这个例子中Body里的两个变量:#cust_name#和#survey_template#。我们通过这两个变量实现邮件内容的客制化部分。
在完成了邮件主体之后,APEX会在邮件模板的最下方自动生成API调用的脚本。我们在创建应用中需要使用到这个脚本。这个脚本中会调用APEX的API apex_mail.send( )。具体的用法,请查阅以下APEX文档。
https://docs.oracle.com/en/database/oracle/application-express/20.1/aeapi/APEX_MAIL.html#GUID-14F51C6D-CB82-4B38-AB6E-61C46E75596F
===== 2 创建邮件发送表单 =====
首先,来看一下邮件发送表单长什么样子。
这个邮件发送表单是被调用的,在调用的时候要传入客制化参数SR_NUM和SR_TITLE以及判断使用何种语言的地区参数REGION。表单的调用是通过点击“按钮”,所以在“按钮”的调用属性里定义要传入的Item。
===== 3 根据区域定义不同的语言 =====
这里要用到Computations的功能。
1,通过Computations的PL/SQL脚本,根据传入的REGION选择不同语言的邮件模板。
留意Item P26_SEND_SURVEY及其赋值。这个会在后面调用apex_mail.send( )时用到。
2, 通过Computations的PL/SQL脚本,做字符串拼接,把传入的SR_NUM和SR_TITLE拼接到邮件模板中。同时,根据REGION拼接不同的语言。
留意Item P26_PRE_TEXT_GEN及其赋值。接下来要把P26_PRE_TEXT_GEN做为P26_SURVEY_TEMPLATE的默认值显示在邮件发送表单里。
P26_SURVEY_TEMPLATE会在后面调用apex_mail.send( )时用到。
注意:这两个Computations都必须放在“Before Regions”里。即,在这个表单被调用并初始化的时候就必须完成。
===== 4 调用apex_mail.send ( )发送邮件 =====
最后,我们通过创建Processes来调用apex_mail.send ( )完成邮件的发送。
Processes的PL/SQL的脚本如下:
请留意截屏中红框内的Item和参数。对应1,2,3节中的描述。
通过以上4步,实现APEX的个性化邮件发送功能。
===== End =====
更多Oracle APEX的知识和技巧,请猛戳下面二维码持续关注微信公众号“APEX中文社区”和“徐大爷的学习笔记”。
APEX中文社区
徐大爷的学习笔记