Home » Developer & Programmer » Forms » Email Code..But!!!!!
Email Code..But!!!!! [message #243844] |
Sat, 09 June 2007 23:54 |
Dream
Messages: 11 Registered: June 2007 Location: UAE
|
Junior Member |
|
|
hi there,
first of all, thanks for this great fourm and its members for the great offers ..its really help us and provide us with needed information in our field...
may god bless you all:)
======================
i am now working on creating email form from oracle 6i and its working fine...but the problem is [ATTACHMENT] when i send the email..the attchment is not working!!!!
for example, in my form i have [ TO,CC,Attachment,Subject,Body] the attachment will be report which will be automatically attached from another form... and other fields show be enter by users
the problem now is..the attachment NOT sending:(
here is the code
Declare
---procedure send email
objOutlook ole2.obj_type;
objMail ole2.obj_type;
objARG ole2.list_type;
attachment ole2.obj_type;
args ole2.list_type;
begin
objOutlook := ole2.create_obj('outlook.application');
objarg :=ole2.create_argList;
ole2.add_arg(objarg,0);
objmail := ole2.invoke_obj(objOutlook,'CreateItem',objarg);
ole2.destroy_arglist(objarg);
ole2.set_property(objmail,'To',:TO);
ole2.set_property(objmail,'CC',:CC);
ole2.set_property(objmail,'Attach',:Attach);
ole2.set_property(objmail,'Subject',:SUBJECT);
ole2.set_property(objmail,'Body',:BODY);
args:=ole2.create_arglist;
-- ole2.add_arg(args,attachment);
OLE2.ADD_ARG(args,'S:\Dream\System\rpts\Contract.rpt23.pdf');
ole2.invoke(Attachment,'readfromfile',args);
ole2.destroy_arglist(args);
-- OLE2.INVOKE(attachment, 'Add', objarg); i add it
ole2.invoke(objmail,'Send');
ole2.invoke(objmail,'Display');
ole2.release_obj(objmail);
ole2.release_obj(objOutlook);
ole2.release_obj(attachment);
Message('your mail sent successsfully');
Message('your mail sent successsfully');
clear_form;
call_form('S:\Dream\system\module5.fmx');
exception
when others then
message(SQLerrm);message(SQLerrm);
end;
your highly co-operation will be apperciated
Dream:)
[Updated on: Sun, 10 June 2007 02:42] Report message to a moderator
|
|
|
Re: Email Code..But!!!!! [message #243975 is a reply to message #243844] |
Mon, 11 June 2007 02:39 |
hemavb
Messages: 103 Registered: May 2007 Location: Dubai , UAE
|
Senior Member |
|
|
Here is the code that i use... hope it helps its on the same lines.
i could not clear your code so i am giving you mine.
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_Attach1 OLE2.OBJ_TYPE;
var_Attach2 OLE2.OBJ_TYPE;
BEGIN
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', ' ');
ole2.set_property(Item1,'Subject', :form_fld_subject);
-- form_fld_subject is a form field.
ole2.set_property(Item1,'Body', :form_fld_body);
-- form_fld_body is a form field.
-- I am making the user select a file from the mail form.
-- The path and filename is stored in :form_fld_filename.
var_Attach1 := OLE2.GET_OBJ_PROPERTY(Item1,'Attachments');
OLEPARAM := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(OLEPARAM, :form_fld_filename);
var_Attach2 := OLE2.INVOKE_OBJ(var_Attach1,'add',OLEPARAM);
OLE2.DESTROY_ARGLIST( OLEPARAM );
var_Send := OLE2.INVOKE_OBJ(Item1,'Send');
OLE2.RELEASE_OBJ( Item1);
OLE2.RELEASE_OBJ( Mail_Object );
OLE2.RELEASE_OBJ( Outlook_Object );
Message('Mail sent seccessfully.........');
Message('Mail sent seccessfully.........');
END;
I am using this code in my application for the last 2 years and it works.
ps. this is for 6/6i forms.
Hope it helps,
Hema
|
|
|
Re: Email Code..But!!!!! [message #244193 is a reply to message #243975] |
Mon, 11 June 2007 22:37 |
Dream
Messages: 11 Registered: June 2007 Location: UAE
|
Junior Member |
|
|
first of all thanks alot 4 ur great help..i am sure it will help me
i will be thankful if u put screen shot of ur application so the idea be more clear!!!!
Dream:)
|
|
|
Re: Email Code..But!!!!! [message #244233 is a reply to message #243844] |
Tue, 12 June 2007 01:55 |
Dream
Messages: 11 Registered: June 2007 Location: UAE
|
Junior Member |
|
|
i will make the idea clear...
i have 2 forms
form number 1 : it has lots of records and next 2 each records there is a buttun...when user click on it...then it will take the information of that recorde as PDF file and it will open Form number 2
then in the form 2 there are [ To, CC,Attach, which the pdf will be in autmatically when user click on the button in form number1, subject, body]
in form 1 i put this code when button pressed
begin
v_pl_id := get_parameter_list(v_pl_name);
if not id_null(v_pl_id)then
destroy_parameter_list(v_pl_name);
end if;
v_pl_id := create_parameter_list(v_pl_name);
add_parameter(v_pl_id,'PARAMFORM',TEXT_PARAMETER,'NO');
lFileName := 'S:\Tara\Contract-System\rpts\contract.rpt'||:block76.contract_num||'.pdf';
add_parameter(v_pl_id, 'DESNAME',TEXT_PARAMETER,lFileName);
add_parameter(v_pl_id, 'DESTYPE',TEXT_PARAMETER,'File');
Add_parameter(v_pl_id,' P_con',TEXT_PARAMETER,(:block76.contract_num));
v_rep_txt := run_report_object('snd_contract',v_pl_id);
:Global.attachment_name := 'S:\Tara\Contract-System\rpts\Contract.rpt'||:block76.contract_num||'.pdf';
call_form('S:\Tara\Contract-system\outlook.fmx');
end;
in form number 2 i have this code,,in when new form instance
:block13.attach := :Global.attachment_name;
and in the send button i have this code
Declare
---procedure send email
objOutlook ole2.obj_type;
objMail ole2.obj_type;
objARG ole2.list_type;
attachment ole2.obj_type;
args ole2.list_type;
begin
objOutlook := ole2.create_obj('outlook.application');
objarg :=ole2.create_argList;
ole2.add_arg(objarg,0);
objmail := ole2.invoke_obj(objOutlook,'CreateItem',objarg);
ole2.destroy_arglist(objarg);
ole2.set_property(objmail,'To',:TO);
ole2.set_property(objmail,'CC',:CC);
ole2.set_property(objmail,'Attach',:Attach);
ole2.set_property(objmail,'Subject',:SUBJECT);
ole2.set_property(objmail,'Body',:BODY);
args:=ole2.create_arglist;
ole2.add_arg(args,attachment);
ole2.invoke(Attachment,'readfromfile',args);
ole2.destroy_arglist(args);
ole2.invoke(objmail,'Send');
ole2.invoke(objmail,'Display');
ole2.release_obj(objmail);
ole2.release_obj(objOutlook);
ole2.release_obj(attachment);
Message('your mail sent successsfully');
Message('your mail sent successsfully');
clear_form;
call_form('S:\Tara\Contract-system\module5.fmx');
exception
when others then
message(SQLerrm);message(SQLerrm);
end;
i wish if anyone provide me with help:)
thanks in advance to all:)
Dream
|
|
|
|
Re: Email Code..But!!!!! [message #246453 is a reply to message #245918] |
Thu, 21 June 2007 00:54 |
hemavb
Messages: 103 Registered: May 2007 Location: Dubai , UAE
|
Senior Member |
|
|
The below code will create a mail into the "Outbox" of your outlook application. This will be sent from the "default" user of outlook as you have set.
Hemavb
|
|
|
|
Re: Email Code..But!!!!! [message #246488 is a reply to message #246480] |
Thu, 21 June 2007 01:42 |
hemavb
Messages: 103 Registered: May 2007 Location: Dubai , UAE
|
Senior Member |
|
|
Do you have a mail server in your office? If you want to send directly there is one more way, but for that you need a mail server like exchange or vpop3 or something like that. The code will send the mail directly from the SMTP without using outlook.
If yes, use the UTL_SMTP package from the SYS user of the database. It is available in 10g and 9i. You can give execute rights to your db user and call the package in d2k.
There is an example in the body of the package. It should help you.
|
|
|
|
Re: Email Code..But!!!!! [message #247490 is a reply to message #243844] |
Tue, 26 June 2007 02:08 |
hemavb
Messages: 103 Registered: May 2007 Location: Dubai , UAE
|
Senior Member |
|
|
Dreamz & emadbsb
* DECLARE
* c utl_smtp.connection;
*
* PROCEDURE send_header(name IN VARCHAR2, header IN VARCHAR2) AS
* BEGIN
* utl_smtp.write_data(c, name || ': ' || header || utl_tcp.CRLF);
* END;
*
* BEGIN
* c := utl_smtp.open_connection('smtp-server.acme.com');
* utl_smtp.helo(c, 'foo.com');
* utl_smtp.mail(c, 'sender@foo.com');
* utl_smtp.rcpt(c, 'recipient@foo.com');
* utl_smtp.open_data(c);
* send_header('From', '"Sender" <sender@foo.com>');
* send_header('To', '"Recipient" <recipient@foo.com>');
* send_header('Subject', 'Hello');
* utl_smtp.write_data(c, utl_tcp.CRLF || 'Hello, world!');
* utl_smtp.close_data(c);
* utl_smtp.quit(c);
* EXCEPTION
* WHEN utl_smtp.transient_error OR utl_smtp.permanent_error THEN
* BEGIN
* utl_smtp.quit(c);
* EXCEPTION
* WHEN utl_smtp.transient_error OR utl_smtp.permanent_error THEN
* NULL; -- When the SMTP server is down or unavailable, we don't
* -- have a connection to the server. The quit call will
* -- raise an exception that we can ignore.
* END;
* raise_application_error(-20000,
* 'Failed to send mail due to the following error: ' || sqlerrm);
* END;
This will send the mail directly. Without Outlook. You need to have a SMTP port on your mail server. From here the mail will be sent.
The user you use should have execute grant on UTL_SMTP package of SYS user.
|
|
|
|
Re: Email Code..But!!!!! [message #247585 is a reply to message #243844] |
Tue, 26 June 2007 07:45 |
hemavb
Messages: 103 Registered: May 2007 Location: Dubai , UAE
|
Senior Member |
|
|
Two ways to solve this...
1)
Use CHR(10) instead of utl_tcp.CRLF
or
2)
The user you use should have execute grant on UTL_TCP package of SYS user
|
|
|
|
|
Goto Forum:
Current Time: Fri Sep 20 10:45:48 CDT 2024
|