| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> c.d.o.server -> Re: How can I automatically send an email
In article <37066D2A.3B11D038_at_nl.origin-it.com>,
Joep Hendrix <joep.hendrix_at_nl.origin-it.com> wrote:
> Hi everyone,
>
> I would like to automatically send an email triggered by a certain
> change in the database (UNIX and/or NT server operating system).
>
> Thanks in advance,
>
> Joep Hendrix
>
>
Joep, For sending email from Oracle8, you need to write an external procedure and then use dbms_alert to trigger it automatically. Here is a version of an external procedure that I've developed on Intel Solaris 2.6:
int
email (char *address, int addrlen, short addrind,
char *subject, int subjlen, short subjind,
char *message, int msglen, short msgind)
{
char *email[3] = /* mail command to exec */
{"mail", NULL, NULL};
int pfd[2];
pid_t pid = 0;
int status = 0;
int wrtn = 0;
char buffer[BUFFSIZE]; /* Message buffer to format the message. This
avoids multiple calls to 'write' system
service. This is always a performance
improvement, at the expense of somewhat
larger address space.
*/
/*
Check the arguments and fix them if they are NULL.
*/
if ((addrind == OCI_IND_NOTNULL) && (addrlen > 0))
email[1] = address;
else
return (-1);
if ((subjind == OCI_IND_NULL) || (subjlen <= 0))
subject = " ";
if ((msgind == OCI_IND_NULL) || (msglen <= 0))
message = " ";
/* Format the message */
sprintf (buffer, "Subject:%s\n%s", subject, message);
/*
Open a pipe and redirect system input to the pipe.
*/
pipe (pfd);
close (0);
dup (pfd[0]);
if ((pid = fork ()))
{
/*
Parent process writes the message to the pipe,closes the pipe and waits for the child process to complete. */
wrtn = write (pfd[1], buffer, strlen (buffer) + 1);
close (pfd[1]);
if (wrtn == -1)
return (errno);
waitpid (pid, &status);
return (status);
Child process executes mailer and exits. */
status = execvp (MAILER, email);
if (status < 0)
return (errno);
}
Mladen Gogala
-----------== Posted via Deja News, The Discussion Network ==---------- http://www.dejanews.com/ Search, Read, Discuss, or Start Your Own Received on Sat Apr 03 1999 - 21:22:33 CST
![]() |
![]() |