Oracle如何发送邮件,且附上SQL的结果。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle如何发送邮件,且附上SQL的结果。相关的知识,希望对你有一定的参考价值。

问题详细内容: 每天上午9点,在数据库执行一个SQL将结果放到Excel里面,然后用邮件的方式发送给收件人。
希望能详细一点。。。。。。。。。。(非常感谢了)

一般不建议数据库服务器直接与外部连接。建议用第三方软件,比如easysqlmail之类的。第一,安全,第二,简单。自己集中精力把sql写好就可以了。望采纳。 参考技术A 如果是linux系统的话去了解下cronjob这个功能,可以定点跑脚本,mail命令可以发邮件

如何通过 Automic 将 SQL 脚本结果作为电子邮件正文中的表格发送

【中文标题】如何通过 Automic 将 SQL 脚本结果作为电子邮件正文中的表格发送【英文标题】:How to send SQL script results as a table in email body via Automic 【发布时间】:2020-12-16 09:20:39 【问题描述】:

我的工作流程如下所示。

此工作流的第一个任务运行一个简单的select * query,下一个任务发送一封电子邮件。他们单独工作正常。我想要的是发送 SQL 任务的输出作为电子邮件任务的输入,以便它可以附加到正在发送的电子邮件中。

我尝试在通知对象的下方字段中手动输入 SQL 任务的 runId,它按预期工作。但是如何使该字段从其前身中获取动态值而不是硬编码呢?

另外,有没有办法可以将select * 的输出作为表格包含在电子邮件正文中?

更新--1

我能够通过下面的脚本获得前面任务的 runId。现在只需要帮助将其包含在邮件正文中而不是附件中。

:SET &NR# = SYS_ACT_PREV_NR()
:PRINT "RunID of the previous task is &NR#."

【问题讨论】:

试试ATTACH_SYNC 【参考方案1】:

首先;

设置

通过运行以下脚本加载包。

sys/passwordord AS SYSDBA
@$ORACLE_HOME/rdbms/admin/utlmail.sql
@$ORACLE_HOME/rdbms/admin/prvtmail.plb
In addition the SMTP_OUT_SERVER parameter must be set to identify the SMTP server.

CONN sys/password AS SYSDBA
ALTER SYSTEM SET smtp_out_server='smtp.domain.com' SCOPE=SPFILE;

-- 实例重启仅在 10gR1 中需要。

立即关机

启动

我建议您在数据库服务器上使用邮件中继,而不是直接连接到外部邮件服务器。邮件中继配置可以很简单,在 SMTP_OUT_SERVER 参数中引用“localhost”。任何有关连接到外部邮件服务器的复杂性都会隐藏在邮件中继配置中。

发送电子邮件 配置完成后,我们现在可以使用 SEND 过程发送邮件。它接受以下参数。

SENDER : This should be a valid email address.
RECIPIENTS : A comma-separated list of email addresses.
CC : An optional comma-separated list of email addresses.
BCC : An optional comma-separated list of email addresses.
SUBJECT : The subject line for the email.
MESSAGE : The email body.
MIME_TYPE : Set to 'text/plain; charset=us-ascii' by default.
PRIORITY : (1-5) Set to 3 by default.
REPLYTO : Introduced in 11gR2. A valid email address.

以下是使用示例。

BEGIN
  UTL_MAIL.send(sender     => 'me@domain.com',
                recipients => 'person1@domain.com,person2@domain.com',
                cc         => 'person3@domain.com',
                bcc        => 'myboss@domain.com',
                subject    => 'UTL_MAIL Test',
                message    => 'If you get this message it worked!');
END;
/

发送带有附件的电子邮件

该包还支持分别使用 SEND_ATTACH_RAW 和 SEND_ATTACH_VARCHAR2 包发送带有 RAW 和 VARCHAR2 附件的邮件。它们的工作方式与 SEND 过程类似,但有一些额外的参数。

附件:附件的内容。这应该是 VARCHAR2 或 RAW,具体取决于您调用的过程。

ATT_INLINE : Indicates if the attachment should be readable inline. Default FALSE.
ATT_MIME_TYPE : The default is 'text/plain; charset=us-ascii'.
ATT_FILENAME : The name for the attachment.

以下是发送带有文本附件的电子邮件的示例。

BEGIN
  UTL_MAIL.send_attach_varchar2 (
    sender       => 'me@domain.com',
    recipients   => 'person1@domain.com,person2@domain.com',
    cc           => 'person3@domain.com',
    bcc          => 'myboss@domain.com',
    subject      => 'UTL_MAIL Test',
    message      => 'If you get this message it worked!',
    attachment   => 'The is the contents of the attachment.',
    att_filename => 'my_attachment.txt'    
  );
END;

/

【讨论】:

以上是关于Oracle如何发送邮件,且附上SQL的结果。的主要内容,如果未能解决你的问题,请参考以下文章

如何通过电子邮件发送 oracle 查询结果。我更喜欢以 excel 文件的形式附加到电子邮件中。

如何将选择查询的结果发送到oracle 10G中邮件的消息正文

如何通过 Automic 将 SQL 脚本结果作为电子邮件正文中的表格发送

如何使用 SQL Server 通过电子邮件发送包含查询结果的 Excel 工作簿

Oracle PL/SQL 实现发送电子邮件功能(UTL_MAIL)

PL/SQL 下邮件发送程序