Comment implémenter un envoi de mail par un programme C ? existe-t-il une bibliothèque prévue à cet effet ?
Merci.
Comment implémenter un envoi de mail par un programme C ? existe-t-il une bibliothèque prévue à cet effet ?
Merci.
Je me suis débrouillé avec le shell unix appelé avec la fonction system du langage C et ai fait une petite fonction d'envoi de mails :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 int n_Sendmailerror( char * message, char * from, char * to) { char * command = (char *) malloc(256 * sizeof(char)); sprintf(command, "echo \"%s\" | mail -s %s %s", message, from, to); system(command); return 0; }
FUITE DE MÉMOIRE!
En plus, ça manque de const, tu ne vérifies pas que la taille demandée est suffisante (tu peux utiliser ceci), et le cast de malloc() est inutile en C.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
de plus, vraisemblablement il manque un "&" à la fin (qua ça se passe en background), mais surtout il n'est pas tenu compte des tailles de from et to ni de la logneur du message...
Crash inévitable
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".
Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java
Je ne réponds pas aux MP techniques
Mais veut-on vraiment que ça se passe en background?
Personnellement, je resterais synchrone.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".
Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java
Je ne réponds pas aux MP techniques
Hum,
Les gens, c'est bien d'avoir vu la fuite de mémoire, et le problème du background. Mais il faudrait plutot ce recentré sur la question de base. Comment on envoie un courriel en C. Certes, vadereto33 c'est donné une réponse... en utilisant le shell, mais on perd la portabilité du C en faisant ça. ( En plus je n'ai jamais aimé utiliser le shell dans du code C ).
Donc ( et comme moi même je suis interessé ), comment peut on envoyer un courriel ( bibliothèque ? , commandes spéciales ? ).
Merci
Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi
Ma page sur DVP
Mon Portfolio
Qui connaît l'erreur, connaît la solution.
Ben, il y a touhours la façon brute à base de sockets, mais j'ignore s'il existe des bibliothèques plus développées.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Bah, il y a toujours le source code de mail.. (fait pour unixoides au départ, donc source code disponible).
M'enfin c'est pas mal se compliquer la vie...
normalement mail est relativement standard...
Alors on peut réinventer la roue et repartir vers les sockets comme tu le dis...
Mais pour répondre à LittleWhite, ce serait le seul moyen d'être réellement portable.... (et encore, vu le portage des sockets sur Win)...
Et je ne sais pas, mais faire un mini-fichier de config d'une ligne qui comporte la ligne de commande et qui est lue au départ du programme me semble pas mal portable et nettement plus facile d'utilisation ;-)
Config :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ECHO = "echo " MAIL = " | mail "
Code C : Sélectionner tout - Visualiser dans une fenêtre à part sprintf(command, "%s \"%s\" %s %s %s", CommandEcho, message, CommandMail, from, to);
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".
Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java
Je ne réponds pas aux MP techniques
Utiliser le protocole SMTP (RFC 5321) : si c'est pour un mail simple (juste du texte, donc), ça ne casse pas trois pattes à un canard de le faire à la main, y'en a pour 50 lignes de code à tout casser... Cela ne se complique que lorsque l'on cherche à envoyer des mails "complexes", ou avec des attaches.
Un coup de recherche, et on trouve ce code C++/Windows qui donne déjà toutes les instructions de base pour envoyer un mail simple. Plus qu'à convertir ça en C + sockets BSD, et t'as ton code portable.
Mac LAK.
___________________________________________________
Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.
Sources et composants Delphi sur mon site, L'antre du Lak.
Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.
Rejoignez-nous sur : ► Serveur de fichiers [NAS] ► Le Tableau de bord projets ► Le groupe de travail ICMO
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager