在 Oracle Application Express 3.1 中发送电子邮件附件
在 Oracle Application Express 3.1 中发送电子邮件附件
本教程将向您介绍如何在 Oracle Application Express 3.1 中构建可发送电子邮件附件的页面。
大约 45 分钟
本教程包括下列主题:
将光标置于此图标上以加载和查看本教程的所有屏幕截图。
(警告:因为此操作会同时加载所有屏幕截图,所以网速较慢时,响应时间可能会比较长。)
注:此外,您还可以在下列步骤中将鼠标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。可以通过单击各个屏幕截图来将其隐藏。
在 Oracle Application Express 3.1 中,您现在可以使用 Application Express 邮件 API APEX_MAIL.ADD_ATTACHMENT 在发送的电子邮件中包括附件。
要了解 3.1 新特性的更多信息,请单击此处。
返回主题列表
开始本教程之前,您应该:
| 1. |
安装 Oracle 数据库 9.2 或更高版本。 |
| 2. |
下载并配置 Oracle Application Express 3.1。 |
| 3. |
在这里下载 OEHR 示例对象打包应用程序,并将其导入到 Oracle Application Express 3.1 实例中。 |
| 4. |
下载并解压缩包含完成本教程所必需的 apexnf.zip 文件。 |
| 5. |
学习本教程之前,您需要完成在 Oracle Application Express 3.1 中构建和定制互动式报表和在 Oracle Application Express 3.1 中定义和查看 BLOB 数据这两个教程。
或者,您可以将 OBE 新特性应用程序作为一个打包应用程序导入 Application Express 中。下载并解压缩 apexnf.zip 文件,导入 blobobe_packagedapp.sql 打包应用程序文件。此外,您还需要更改 OEHR_EMPLOYEES 表并加载 BLOB 数据。更改 addblobdata.sql 脚本以指定 dog.gif 文件的存储位置路径,以便在创建 PHOTO_LOC 目录时可以找到该文件。从下载和解压缩该脚本文件的位置处,打开一个 SQL*Plus 会话并执行以下命令:
connect system
grant create any directory to <workspace name>;
connect <workspace name>
@addblobdata |
注:应用程序编号和页面编号可能与屏幕截图略有不同。
返回主题列表
您将创建一个页面和区域,以允许用户发送带附件的电子邮件。执行以下步骤:
| 1. |
导航到您的 New Features Application 页面。单击 Create Page。

|
| 2. |
单击 Blank Page。
|
| 3. |
单击 Next。

|
| 4. |
输入 Send Email Attachment 作为 Name 并单击 Next。

|
| 5. |
接受默认选项,然后单击 Next。
|
| 6. |
单击 Finish。

|
| 7. |
页面已创建。现在,您需要添加一个区域。单击 Edit Page。
|
| 8. |
在 Regions 下,单击 Create 图标。

|
| 9. |
单击 HTML 图标。

|
| 10. |
再次单击 HTML 图标。

|
| 11. |
输入 Email Attachment 作为 Title 并单击 Create。

|
| 12. |
您的页面和区域已创建。在下一部分中,您将创建发送带附件的电子邮件所需的项。

|
返回主题列表
您希望创建提交带附件的电子邮件所需的所有必要项。执行以下步骤:
| 1. |
在 Items 下,单击 Create 图标。

|
| 2. |
因为您需要创建多个项,所以选择 Create Multiple Items using Drag and Drop Layout 链接。

|
| 3. |
单击 Create Multiple Items >。

|
| 4. |
选择 Text 图标并将其拖放至第一行。输入 P<#>_EMAIL 作为 Item Name,Email Address 作为 Label。

|
| 5. |
将 Text 图标拖放到第二行。输入 P<#>_FROM 作为 Item Name,From 作为 Label。

|
| 6. |
如下所示创建其余的项,然后单击 Next。
| Item Type |
Item Name |
Label |
| Text |
P<#>_SUBJECT |
Subject |
| Check box |
P<#>_IMAGE |
Attachment Images |
| Textarea |
P<#>_BODY |
Message Body |

|
| 7. |
单击 Apply Changes。

|
| 8. |
选择 P<#>_IMAGE 链接。

|
| 9. |
选择 LOV 选项卡。

|
| 10. |
您希望提供一个员工照片列表,然后选中该列表并将其作为附件以电子邮件形式进行发送。输入以下 List of Values 定义,然后单击 Apply Changes。注:以下代码将检查以确定照片列长度是否不等于 0,如果是,则其将从照片列中选择 BLOB。
select filename||'</br>'||
decode(nvl(dbms_lob.getlength(photo),0),0,null,
'<img src="'||apex_util.get_blob_file_src('P3_PHOTO',employee_id)
||'" height="128" width="128" />') img,
employee_id r
from oehr_employees
where mimetype like 'image%' order by 1

|
| 11. |
所有的项均已定义。在下一部分,您将创建一个按钮和一个进程向收件人发送带附件的电子邮件。

|
返回主题列表
您在本部分中要创建的按钮和进程将处理带附件的电子邮件的发送。执行以下步骤:
| 1. |
在 Buttons 下,单击 Create 图标。

|
| 2. |
接受默认选项,然后单击 Next。

|
| 3. |
选择 Create a button displayed among this region's items 并单击 Next。

|
| 4. |
输入 P<#>_SEND_EMAIL 作为 Name、Send Email 作为 Label 以及 EMAIL 作为 Request。为 Button Style 选择 HTML Button 并单击 Create Button。

|
| 5. |
即创建了按钮。现在可以创建在该按钮按下时要调用的进程。在 Page Processing 下的 Processes 下,单击 Create 图标。

|
| 6. |
单击 PL/SQL 进程类别。

|
| 7. |
输入 EMAIL with Attachments 作为 Name 并单击 Next。

|
| 8. |
在 PL/SQL Page Process 区域输入以下代码。注:如果您当前没有在第 4 页中工作,则将 4 更改为对应的数字。例如,如果您当前在第 5 页中工作,则将 P4_IMAGE 更改为 P5_IMAGE。然后单击 Next。
DECLARE l_id number; l_index number; l_vc_arr2 APEX_APPLICATION_GLOBAL.VC_ARR2; BEGIN l_id := APEX_MAIL.SEND( p_to => :P4_EMAIL, p_from => :P4_FROM, p_subj => :P4_SUBJECT, p_body => :P4_BODY); l_vc_arr2 := APEX_UTIL.STRING_TO_TABLE(:P4_IMAGE); FOR i_index IN 1..l_vc_arr2.count LOOP FOR c1 in (select filename, photo, mimetype from oehr_employees
where employee_id = l_vc_arr2(i_index)) loop APEX_MAIL.ADD_ATTACHMENT( p_mail_id => l_id, p_attachment => c1.photo, p_filename => c1.filename, p_mime_type => c1.mimetype); END LOOP c1; END LOOP i_index; COMMIT; END;
此进程中的 PL/SQL 代码将使用现有功能 APEX_MAIL.SEND 创建主电子邮件,但检索与该电子邮件相关的 id 以与附件结合使用。所选图像的 id(作为以冒号分隔的字符串存储在 :P4_IMAGES 中)将该字符串转换为一个表(使用内置的 APEX_UTIL.STRING_TO_TABLE),并将该表加载到数组中。从基表 (OEHR_EMPLOYEES) 中检索更多有关每个选定图像的信息,一次检索一个,新的过程 (APEX_MAIL.ADD_ATTACHMENT) 执行并将所选图像附加到基本电子邮件。
注:您刚才在此处使用了文本格式,但如果文本格式为 html,则应使用 p_body_html 进行发送。

|
| 9. |
输入 Success Message 和 Failure Message,然后单击 Next。

|
| 10. |
为 When Button Pressed 选择 P4_SEND_EMAIL,然后单击 Create Process。

|
| 11. |
您还需要修改分支以在进程结束后包含成功消息。注意,该选项默认情况下并未选中。在 Branches 下,选择 Go to Page 链接。

|
| 12. |
单击 include process success message 复选框并单击 Apply Changes。

|
| 13. |
您的分支修改成功。在下一部分,您将运行并测试该页面。由于您在教程在 Oracle Application Express 3.1 中定义和查看 BLOB 数据中仅在数据库中添加了一张照片,因此您希望在测试 Send Email 页面之前再添加一张照片。针对 Maintain Employee Information 选择页面编号(多数情况下为 2)并单击 Go。

|
返回主题列表
现在,您已为测试该页面和发送带附件的电子邮件做好了准备。执行以下步骤:
| 1. |
单击 Run 运行该页面。

|
| 2. |
选择另一名员工旁边的 Edit 图标以转至 Employee Details 页面。

|
| 3. |
针对 Photo 单击 Browse...

|
| 4. |
从文件列表(包含在前提条件中下载的 apexnf.zip 中)中选择文件 flowers-01_small.gif 并单击 Open。然后单击 Apply Changes。

|
| 5. |
现在,您可以运行 Send Email Attachments 页面了。单击开发人员工具栏中的 Application 链接。

|
| 6. |
选择 Send Email Attachments 页面。

|
| 7. |
单击 Run Page。

|
| 8. |
输入收件人电子邮件地址、发件人电子邮件地址和主题;选中 dog.gif 和 flowers-01_small.gif 复选框并在邮件正文中输入内容。然后单击 Send Email。

|
| 9. |
您将看到电子邮件发送成功。

|
| 10. |
收到的电子邮件应如下图所示。

|
返回主题列表
在本教程中,您学习了如何创建一个页面以包含发送带附件的电子邮件必需的所有项。
返回主题列表
要了解有关 Application Express 的更多信息,您可以查看以下内容:
相关文档 |
说明 |
联机帮助 |
要访问该帮助,单击 Application Express 右上角处显示的 Help 按钮。搜索感兴趣的主题。 |
版本说明 |
这些说明包含 Oracle Application Express 文档中未包括的重要信息。 |
安装指南 |
该指南解释了如何安装和配置 Oracle Application Express。 |
两日以上开发人员指南 |
该指南向您介绍如何搭建一个开发环境或者访问一个与该指南一起使用的托管演示环境。然后将引导您构建一个最初的应用程序,对其进行修改并进行预览。 |
用户指南 |
该指南描述了如何使用 Oracle Application Express 开发环境构建和部署以数据库为中心的 Web 应用程序。通过使多个工作组能够构建和访问应用程序(如同它们在独立的数据库中运行),Oracle Application Express 将单个 Oracle 数据库转换为共享的服务。 |
高级教程 |
包含了分步指南的教程,介绍如何使用 Oracle Application Express 开发环境创建各种应用程序组件和整个应用程序。 |
返回主题列表
将鼠标置于该图标上可以隐藏所有的屏幕截图。
|