Christoph Zurnieden: sendmail verwenden mit einem c - mailer

Beitrag lesen

Hallo,

da ich jetzt gleich am verzweifeln bin, möchte ich die chance nutzen an dieser stelle vielleicht aufklärung zu erfahren. es scheint zwar nicht sehr modern zu sein cgi fähige programme in c zu schreiben aber ich tue es trotzdem.

Es ist egal, in welcher Sprache Du schreibst.
Nein, eigentlich nicht, am besten Du schreibst in der Sprache, die Du am besten kannst ;-)

meine literatur hilft mir aber nicht mehr weiter. alles läuft ganz hervorragend nur leider kommt bei mir nichts an. die werteübergabe aus einem html formular habe ich mir jetzt schon verkniffen und die entsprechende verarbeitung aus dem quelltext entfernt. gehe ich über telnet auf den server, läßt sich sendmail problemlos verwenden. ich bin für jeden hinweis dankbar.

#include "mycgi.h"

Ich nehme einfach mal an, das da alles Nötige inkludiert wird, ja?
Apropos: was sagt eigentlich der Kompiler mit allen Warnungen eingeschaltet, was Lclint?

(Zumindest LClint sollte Dir so einiges um die Ohren hauen ;-)

int main (int argc, char *argv[])
{
  int length;
  char *instring=NULL;
  FILE *out;

printf("Content-type: text/html\n\n");
  printf("<HTML>\n<HEAD>\n<TITLE>Forum</TITLE>\n</HEAD>\n<BODY>\n");
  printf("<H1>forum@medium</H1>\n");
  printf("<BR><BR>VIELEN DANK FÜR DEINE LIEBENSWERTE BOTSCHAFT<BR>");
  length=atoi(getenv("CONTENT_LENGTH"));

Das ist eigentlich überflüssig, das könntest Du doch auch noch selber zählen, oder?  ;-)

instring = (char*)malloc(length+1);
  /*k_e(instring, length);*/
  /*printf("%s\n", instring);*/

Was hat er gesagt? Ausreichend lang?
BTW: wo ist der Test, ob malloc() funktioniert hat? ;-)

out = popen("/usr/lib/sendmail -t tester@pharmacy-network.de","w");
  fprintf(out, "testmailbla\n\n");
  pclose(out);

Die Pipes, die popen() öffent sind voll gepuffert, versuch mal ein fflush()
pclose() gibt den Exitstatus des verbundenen Prozesses (in Deinem Fall sendmail) zurück. Den kannst Du z.B. überprüfen. Siehe auch 'man 3  popen' und 'man 3 wait4' für die Rückgabecodes.

Ich gehe hierbei natürlich von einem Posix-2 konformem System aus. (wg der Manpages auch von einem Unix, das ist wohl wahr, muß ich zugeben ;-)

free(instring);
  printf("<BR><BR><BR><BR><A </BODY>\n</HTML>");
  return 0;
}

so short

Christoph Zurnieden