I'm working on a HP-UX system, so some of the 
following has to be adapted, but in principle 
it's the same on every system and it works. 
First piece of code is a standalone program, 
which you should always write and test before 
you start creating C functions inside PostgreSQL. 
Second piece is your sendemail function slightly 
modified to make it run on my system. 
When I do a 
select sendemail('ch', 'was soll das?') ;
I'm receiving an email from postgres. 
Regards, Christoph 

First piece:

/*
cc -Aa -g -I/opt/pgsql/include/ -c sendemtest.c
cc sendemail.o sendemtest.o -o sendemtest
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "postgres.h"

void main() {
   char buf[1024];
   int ln;
   text *res;
   text *to;
   int sendemail(text *email,text *message);
   
   strcpy(buf, "Kissenminister Aussinger \n");
   ln = strlen(buf);
   
   res = (text *) malloc(VARHDRSZ + ln);
   memset(res, 0, VARHDRSZ + ln);
   res->vl_len = VARHDRSZ + ln;
   memcpy(res->vl_dat, buf, (int) ln);
   
   strcpy(buf, "ch");
   ln = strlen(buf);
   
   to = (text *) malloc(VARHDRSZ + ln);
   memset(to, 0, VARHDRSZ + ln);
   to->vl_len = VARHDRSZ + ln;
   memcpy(to->vl_dat, buf, (int) ln);
   
   sendemail(to, res);
}

Second piece: 

/*
cc -Aa -g -I/opt/pgsql/include/ +z -c sendemail.c
ld -b -o sendemail.sl sendemail.o

CREATE FUNCTION sendemail(text,text) RETURNS int4
 AS '/fdsk2/users/ch/tools/pgsql.mydoc/sendemail.sl' LANGUAGE 'c';
DROP FUNCTION sendemail(text,text);
*/
 #include <stdio.h>
 #include <stdlib.h>
 #include "postgres.h"

 int sendemail(text *email,text *message)
 {
     int result = 0 ; 

     char string_tosend [300];

     sprintf(string_tosend,"/usr/bin/echo \"%s\" 
>/tmp/mailtmp.txt\n",VARDATA(message));

     result += system(string_tosend);

     sprintf(string_tosend,"/usr/bin/mail -dt %s </tmp/mailtmp.txt \n",
             VARDATA(email));

     result += system(string_tosend);

     result += system("/usr/bin/rm /tmp/mailtmp.txt");

     return result;


 }


---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

Reply via email to