ein Kapitel zurück                                           ein Kapitel weiter

Eine Mail aus einer Anwendung zu versenden ist nun mit den Pipes kein Problem mehr. Ich verwende für unser Beispiel 'sendmail' für das Versenden von Mails da es bei den meisten System als Dämon im Hintergrund läuft. sendmail ist eigentlich für ein solches Beispiel unterfordert. Natürlich setzt dies Voraus das sie sendmail richtig konfiguriert haben.

/*Download:pmail.c*/
#include <unistd.h> #include <sys/wait.h> #include <stdio.h> #include <sys/types.h> #include <fcntl.h> int sendmail(char *to, char *from, char *subject, /*char *cc, char *bcc,*/ char *inhalt) { FILE *pipe,*pfad; char pfad_sendmail[255]; /*Wir ermitteln den Pfad zu sendmail*/ /*ACHTUNG!!! Sollte nur als root funktionieren*/ pfad=popen("which sendmail", "r"); if(pfad == NULL) { fprintf(stderr,"Konnte keine Pipe zu \'which\' erstellen!\n"); exit(0); } fscanf(pfad,"%s",pfad_sendmail); pclose(pfad); strcat(pfad_sendmail, " -n -oi -t"); /*Den Pfad ist meistens /usr/sbin/sendmail */ pipe=popen(pfad_sendmail, "w"); if(pipe == NULL) { fprintf(stderr, "Konnte keine Verbindung zu sendmail aufbauen!n"); exit(0); } /*In sendmail schreiben..........*/ fprintf(pipe, "To : %s" "From : %s" "Subject : %s" /*"Cc : %s\n" */ /*"Bcc : %s\n"*/ "%s",to,from,subject,inhalt); fflush(pipe); pclose(pipe); printf("Mail wurde erfolgreich an versendet an : %s\n",to); return 0; } int main(int argc, char **argv) { char to[255],fr[255],sub[255],inhalt[8192],puffer[255]; printf("Mail To : "); fgets(to,255,stdin); printf("Mail from : "); fgets(fr,255,stdin); printf("Betreff : "); fgets(sub,255,stdin); inhalt[0]='\0'; printf("Inhalt (beenden mit STRG+D) \n>"); while(fgets(puffer,8192,stdin) != NULL) { strcat(inhalt,puffer); printf(">"); } sendmail(to,fr,sub,inhalt); return 0; }

Wir verwenden bei diesem Programm gleich 2 Pipes. Eine zum Ermitteln des Pfades von 'sendmail' und die zweite zum Versenden der Mail mit sendmail. Wenn eine Flaterate oder Standleitung haben können sie ja noch ein Funktion mit dem Programm 'fetchmail' schreiben. fetchmail dient zum Abholen von Mails. Filtern sie dann mit Hilfe der Pipe die Zeile 'from' aus, und schicken sie eine Mail an den Absender zurück mit der Information, das sie die Mail erhalten haben (Autoresponder). Dann verwenden sie den cron-Dämon und lassen Stündlich Ihre Mail abholen.

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf