This is send_email.c in view mode; [Download] [Up]
#include <string.h>
/***
* Send an email message
*
* to - The intended recipient.
* sub - The subject of the message.
* bod - The message body.
*
* returns 0 on success
* -1 on failure.
*
***/
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <errno.h>
#include "config.h"
#ifndef MAILER
#define MAILER "/usr/bin/mail"
#endif
void *malloc();
int send_email(to,sub,body)
char *to, *sub, *body;
{
int fd[2], pid;
FILE *f1;
char *msg;
msg = (char *) malloc(strlen(body)+strlen(sub)+strlen(to)+16);
sprintf(msg,"To: %s\n",to);
strcat(msg,"Subject: "); strcat(msg,sub);strcat(msg,"\n");
strcat(msg,body);
/* set child process STDIN to parent fd */
if (pipe(fd) <0)
return(-1);
if ((pid = fork()) < 0)
return(-1);
else if (pid >0) { /* parent */
close(fd[0]); /* close read end */
write(fd[1], msg, strlen(msg));
close(fd[1]);
if (waitpid(pid, NULL, 0) <0)
return(-1);
/* close(fd[1]); */
return(0);
} else { /* child */
close(fd[1]);
if (fd[0] != STDIN_FILENO) {
if (dup2(fd[0], STDIN_FILENO) != STDIN_FILENO)
return(-1);
close(fd[0]);
} /* invoke mailer which expects STDIN */
if (execl(MAILER,MAILER,to,0) <0)
return(-1);
close(fd[0]);
exit(0);
}
return(0);
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.