通过 oracle forms6i 发送邮件
Posted
技术标签:
【中文标题】通过 oracle forms6i 发送邮件【英文标题】:Sending mail via oracle forms6i 【发布时间】:2017-11-29 11:18:46 【问题描述】:我有以下代码
Declare
Outlook_Object OLE2.OBJ_TYPE;
Mail_Object OLE2.OBJ_TYPE;
Item1 OLE2.OBJ_TYPE;
Item2 OLE2.OBJ_TYPE;
OLEPARAM ole2.list_type;
var_Send OLE2.OBJ_TYPE;
var_exit OLE2.OBJ_TYPE;
var_Attach1 OLE2.OBJ_TYPE;
var_Attach2 OLE2.OBJ_TYPE;
BEGIN
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'BUSY');
Outlook_Object := OLE2.CREATE_OBJ('Outlook.Application');
OLEPARAM := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(OLEPARAM,'MAPI');
Mail_Object := OLE2.INVOKE_OBJ(Outlook_Object,'GetNameSpace',OLEPARAM);
OLE2.DESTROY_ARGLIST( OLEPARAM );
--newMail
OLEPARAM := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(OLEPARAM,0);
Item1 := OLE2.INVOKE_OBJ(Outlook_Object,'CreateItem',OLEPARAM);
OLE2.DESTROY_ARGLIST( OLEPARAM );
-- If you want to display outlook new message screen
-- Item2 := OLE2.INVOKE_OBJ(Item1,'Display');
ole2.set_property(Item1,'To',:To);
ole2.set_property(Item1,'Subject',:Subject);
ole2.set_property(Item1,'Body',:Body);
-- ole2.set_property(Item1,'Date',:F_DT);
--ole2.set_property(Item1,'Date',:F_DT1);
while :F_DT1 = sysdate
loop
OLE2.RELEASE_OBJ( Item1);
OLE2.RELEASE_OBJ( Mail_Object );
OLE2.RELEASE_OBJ( Outlook_Object );
var_Send := OLE2.INVOKE_OBJ(Item1,'Send');
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'DEFAULT');
Message('Mail sent seccessfully.........');
Message('Mail sent seccessfully.........');
if :F_DT1 > :F_DT then
exit_form;
end if;
F_DT1 := F_DT+1;
end loop;
end;
I
此处 F_DT1 = 应发送邮件的日期。 F_DT = 应发送邮件的截止日期。 例如,我在 2017 年 12 月 8 日有活动,我需要从 2017 年 12 月 4 日收到它的提醒邮件,然后我将把 F_DT1 = 2017 年 12 月 4 日和 F_DT = 2017 年 12 月 8 日。
我没有遇到任何错误,但我也没有收到任何邮件。我的逻辑正确吗?
【问题讨论】:
【参考方案1】:我更喜欢使用 UTL_MAIL(或 UTL_SMTP)包从数据库发送邮件。为什么?因为我知道如何做到这一点,而不是你使用的代码:)
显然,我无法解决最初的问题,但我可以提供一种解决方法。
我知道这是一个一个月前的问题,所以您可能已经解决了这个问题。如果没有,并且如果您需要有关 UTL_MAIL 的帮助,请说出来。
【讨论】:
以上是关于通过 oracle forms6i 发送邮件的主要内容,如果未能解决你的问题,请参考以下文章
Spring通过Gmail SMTP服务器MailSender发送电子邮件