[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: prb postfix et cgi-bin



Alexandre Vitrac wrote:
> 
> Le mardi 23 janvier 2001 10:54 +0100, Arnaud Aubert écrivait:
> >
> > >J'ai un CGI en C qui envoie des mails en utilisant Postfix, j'utilise la
> > >commande :
> >
> > >/usr/sbin/sendmail -t
> >
> > mais moi j'utilise postfix et apparement il ne veut se lancer qu'en root, et
> > pas avec le user d'apache....
> >
> 
> La commande sendmail est diponible avec Postfix. Quelle commande
> utilises-tu dans tes CGI pour envoyer le mail ?
> 

La commande sendmail fait partie du paquetage Postfix.

J'ai une fonction envoie mail qui recupere des donnees dans Postgresql,
les formats et envoie le mail.

Le prog donne ca (avec des coupures) :

#define HOST "localhost"
#define PORT "5432"
#define DATABASE "base"
#define MAIL_CMD "/usr/sbin/sendmail -t"
#define FROM     "titi"
#define SUBJECT  "Achat chez www.toto.com"
#define TO       "destinataire@toto.com"
#define ERROR_SUBJECT "Erreur"


void
envoie_mail (char *sid, char *commande)
{
...
 
  /* make a connection to the database */
  conn = PQsetdb (pghost, pgport, pgoptions, pgtty, dbName);

 ...

  res = PQexec (conn, query);

 ...

  res2 = PQexec (conn, query2);

 ...

  if (PQntuples (res) == 0 || PQntuples (res2) == 0)
    {
      if ((fp = popen (MAIL_CMD, "w")) == NULL)
        {
          fprintf (stderr, "Impossible d'executer la commande %s.\n",
                   MAIL_CMD);
          free (query);
          free (query2);
          exit_nicely (conn);
        }
      else
        {
          fprintf (fp, "From: %s\n", FROM);
          fprintf (fp, "Subject: %s\n", ERROR_SUBJECT);
          fprintf (fp, "To: %s\n", TO);
          fprintf (fp, "\n");
          fprintf (fp, "Erreur dans \"/cgi-bin/%s\" : base vide",
commande);
          fprintf (fp, "\n");
          fclose (fp);
        }

      PQclear (res);
      PQclear (res2);
      free (query);
      free (query2);
      exit_nicely (conn);
    }
  else
    {
      if ((fp = popen (MAIL_CMD, "w")) == NULL)
        {
          fprintf (stderr, "Impossible d'executer la commande %s.\n",
                   MAIL_CMD);
          free (query);
          free (query2);
          exit_nicely (conn);
        }
      else
        {
          fprintf (fp, "From: %s\n", FROM);
          fprintf (fp, "Subject: %s\n", SUBJECT);
          fprintf (fp, "To: %s\n", TO);
          fprintf (fp, "\n");
          fprintf (fp, "Nom et prenom : %s %s\n",
                   PQgetvalue (res, 0, PQfnumber (res, "nom_client")),
                   PQgetvalue (res, 0, PQfnumber (res, "prenom")));

...


          row = 0;
          row_total = PQntuples (res2);

          while (row < row_total)
            {
              fprintf (fp, "Nom              : %s\n",
                       PQgetvalue (res2, row, PQfnumber (res2,
"nom_art")));
...
              row++;
            }

...
          fprintf (fp, "\n");
          fclose (fp);
        }
    }
  free (query);
  free (query2);
}

-- 
==============================================
|              FREDERIC MASSOT               |
|     http://www.juliana-multimedia.com      |
|   mailto:frederic@juliana-multimedia.com   |
===========================Debian=GNU/Linux===



Reply to: