Adsense Ad

Thursday, 4 January 2018

Send email from with attachments oracle forms via CmdEmail


CmdEmail is command line e-mail component, it can be integrated into application that developed by multiple language.
This article demonstrate how to integrate CmdEmail into oracle forms, enables oracle forms to send rich formated e-mail. Note: Since CmdEmail require Windows platform, if your forms is not running on Windows server, this article may be useless for you.

How to send mail from Oracle Forms

There several ways to send mail through oracle forms.
-- Using javabean
-- Using Ole component
-- Using utl_smtp
-- Using CmdEmail
In this page, we only introduce the last way, a simple and effective way to send email through oracle form, using the CmdEmail send mail component.
If you want to try other solutions, please refer to documents of Oracle Forms or search google for related topic.

Why CmdEmail?

  • Easy to manager
  • Support attachment
  • support email in html format; you can insert picture into email
  • Only require TCP/IP protocol installed

HOW CmdEmail WORKS

CmdEmail support command line interface, you call the program through command line. Supposed you have configed the program, you can send e-mail to somebody just use a dos command. e.g.
sendmail -to:scott@tiger.com
The CmdEmail read the e-mail addr. of recipients, and then send a blank message to the recipients. The recipients scott@tiger.com (if exists) will receive a mail sent from you.
Need to specify the subject and mail body?
Okey, please create a message file and pass the file path to CmdEmail .
The messae file includes two parts, header and body.
Header : Specify the recipients, subject, location of attachment etc.
Body Text: The content of the email.
There is a empty line between header and body. The following is an example:
to:scott@tiger.com
cc:bill@microsoft.com
subject:hello scott
attachment:http://www.lv2000.com/sendmail.htm

First line of the body.
Second line.
Save the text above to C:\temp_name.txt . Run CmdEmail again, e.g.
sendmail -m:c:\temp_name.txt
CmdEmail will read information from the message file, then send a mail to sott@tiger.com, copy to bill@microsoft.com.

Installation and Setup


  • Download latest version from www.lv2000.com
  • Decompress installation pack to the folder where you want to install the application files.
    We suggest you to install CmdEmail to windows PATH so that it can be called from any current working directory.
  • Setup your default email account settings.

How to setup e-mail account

Run this command line:
sendmail -setup
The CmdEmail Settings dialog will appear.Please input the information given to you by your Internet Service Provider (ISP) or administrator.
Your Name: Friendly name of the addresser.
Your email address: The addresser of the mail.
Outgoing SMTP server: Please refer to your ISP or network administrator.
Port of SMTP server: Default 25
Read receipt requested: For MS outlook only.
User Name: User name used to login the smtp server.
Password: Password used to identify the user.
Note: Unless your ISP have indicated that your service uses Secure Password Authentication, do not select the "my outgoing server requires authentication" check box.


Test the email account setting

Please do some testing after setting e-mail account.
Please use CmdEmail to send a mail manually.
CmdEmail will print error message if run into any error; the error will be saved into smerror.log

How to call CmdEmail from oracle form

You can call CmdEmail from oracle form through HOST built-in.
We have created an example demonstrate how to use HOST procedure to run CmdEmail. Please download the form from http://www.lv2000.com/examples/testmail.fmb
Screenshot of the form:

Sample code of sending mail via oracle forms
--How to create message file. Please use TEXT_IO to create the message file.
--How to call CmdEmail. Please use HOST procedure to run CmdEmail.
Sample code:
DECLARE
v_file_path varchar2(300);
v_sendmail_exe_path varchar2(300);
text_file text_io.file_type;
BEGIN
v_sendmail_exe_path:='D:\cmdemail\sendmail.exe' ;--TODO: Change the path
v_file_path := 'd:\emailmsg.txt' ;--TODO:

if :mailto is null then
message('Please enter the email address of the recipients');
raise form_trigger_failure;
end if;

text_file:=text_io.fopen(v_file_path,'w');
-- write header
text_io.put_line(text_file,'to:'||:mailto);
text_io.put_line(text_file,'cc:'||:copyto);
text_io.put_line(text_file,'attachment:c:\temp_file1.txt');
text_io.put_line(text_file,'attachment:c:\temp_file2.doc');
text_io.put_line(text_file,'subject:'||:subject);
text_io.put_line(text_file,'delete_the_file:yes');--delete the message file when the mail is sent successfully.
text_io.put_line(text_file,''); -- delimiter between header and body
-- write body
text_io.put_line(text_file,:mailbody);
text_io.fclose(text_file);
host(v_sendmail_exe_path||' -m:'||v_file_path,NO_SCREEN);
END ;

Troubleshotting

If you the mail is not sent to recipients, CmdEmail will log the error message to this file: smerror.log , please open the log file via notepad.exe and view the error message.

No comments: