#include <unistd.h>
#include <stdio.h>

void an_den_drucker(char *);
int sendmail(char *, char *, char *, char *);

int sendmail(char *to, char *from, char *subject,
             /*char *cc, char *bcc,*/ char *inhalt)
{
 FILE *pipe,*pfad;
 char pfad_sendmail[255];
 char protokol[8192];
 /*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);
 sprintf(protokol, "To       : %s"
                   "From     : %s"
                   "Subject  : %s"
                 /*"Cc      : %s\n" */
                 /*"Bcc     : %s\n"*/
                   "%s",to,from,subject,inhalt);
 an_den_drucker(protokol);
 return 0;
}

void an_den_drucker(char *text)
{
 FILE *p;
/*Pipe zum Tool lpr erstellen zum Schreiben auf lpr*/
 p=popen("lpr","w");
 if(p == NULL)
  {
    fprintf(stderr,"Konnte keine Pipe zu \'lpr\' erstellen!!\n");
    exit(0);
  }
 /*An den Drucker schreiben*/
 printf("Sende Auftrag an den Drucker......\n");
 fprintf(p, "%s", text);
 fflush(p);
 pclose(p);
}

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;
}