Envoyer un mail a partir d'une appi c++
vengeurstrike
Messages postés
77
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, je souhaiterai savoir comment envoyer un mail a partir d'une application c++, il doit bien avoir un commande, non ? Merci de votre aide
A voir également:
- Envoyer un mail a partir d'une appi c++
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Gmail envoyer un mail - Guide
- Comment faire une recherche à partir d'une photo - Guide
- Envoyer un mail en cci - Guide
- Envoyer un mail à un groupe de contact gmail - Guide
13 réponses
Les commandes dont tu auras besoin :
https://linux.die.net/man/7/socket
https://linux.die.net/man/2/connect
https://linux.die.net/man/2/bind
https://linux.die.net/man/2/send
https://linux.die.net/man/2/recv
Il y a pléthores d'exemple sur internet
https://linux.die.net/man/7/socket
https://linux.die.net/man/2/connect
https://linux.die.net/man/2/bind
https://linux.die.net/man/2/send
https://linux.die.net/man/2/recv
Il y a pléthores d'exemple sur internet
Désolée de m'en mêler mais vu l'énormité de certains messages je vais y mettre mon grain de sel :
<3>
Hein ?!!
C'est n'importe quoi :
Le protocole, c'est SMTP et c'est natif avec les apis SMTP (forcément).
Il ne faudrait quand même pas oublier que SMTP est implémenté à un moment donné. Peu importe l'API, au bout d'un moment quelqu'un a codé la gestion des sockets, écrire les bonnes choses dedans et ainsi de suite. Il n'y a pas d'histoire de natif ou pas ça ne veut rien dire.
Tu peux réimplémenter SMTP en C si tu le souhaite, il faudra juste ouvrir tes sockets, envoyer les bons messages conformément au rfc https://www.ietf.org/rfc/rfc2821.txt ce qui est un job assez monstrueux il faut l'admettre (mais faisable pour l'avoir fait).
<2>
Il n'y a absolumlent pas besoin de bibliotheque sous windows.
Il y a environ une douzaine de méthodes natives dans la Winapi pour envoyer des mails !
cf MSDN.
Justement lami20j et char sniper disent que ce n'est pas standard car un programme basé sur l'api windows ne tournera pas nativement sous linux (contrairement à une version ou tu réimplémentes la gestion de la couche smtp).
Ceci dit je suis d'accord que c'est dommage de réinventer la roue, d'autant plus que la version sous linux peut par exemple consister à simplement faire un appel système à la commande mail ou récupérer un projet opensource et l'adapter à son programme.
<18>
Completement HS, puisqu'il te dit qu'il est sous Vista !!!
Et donc sous Vista (qui est un OS Windows pour ton info, ça se fait avec les apis COM où SMTP est standard.
Non, sa réponse n'était pas HS. Ce n'est pas parce qu'il fait référence à des pages de documentation linux qu'elles ne marchent pas sous windows. Au contraire, ce sont des commandes qui font parties de la libc standard et permettent d'écrire un programme portable sur toutes les plateformes (et pas seulement windows et linux).
A noter qu'elles sont d'autant plus standard que les fonctions winsocks portent exactement le même nom.
Et ce sont effectivement bien les commandes qu'il faudra utiliser pour faire les échanges avec le serveur smtp.
<16>
Ce dont on a parlé n'est pas dur à réaliser. Si toi aussi tu veux envoyer des mails, essayes de le faire toit meme, et si besoin, on t'aidera sur les points qui posent problemes... Ce n'est pas en recopiant du code qu'on deviens codeur
Même si la réponse n'est pas franchement diplomatique et qu'elle n'apporte rien, je signale que ce que tu nous demande peut être facilement détourné pour générer du spam, ce qui rend la question limite hors charte car elle peut être détournée de sa vocation première.
Ce que je te conseille pour faire tes tests c'est d'utiliser un serveur SMTP sur ta propre machine (genre hmailserver) et de le configurer de sorte à faire un relai vers ton serveur SMTP actuel. Tu pourras ainsi regarder les logs de ton serveur SMTP et voir ce qui cloche dans les échanges de messages en cas de soucis (en comparant par exemple avec un message envoyé via thunderbird).
Si les logs du serveur ne suffisent pas ou si tu ne souhaites pas installer de serveur SMTP tu peux comparer les messages envoyé par ton programme et un client mail comme thunderbird avec des outils comme wireshark (anciennement ethereal).
Prends également bien le temps de lire la RFC. Il me semble qu'il y a notamment des contraintes genre \r\n pour faire un retour à la ligne dans l'entête du mail etc...
Bonne chance
<3>
Hein ?!!
C'est n'importe quoi :
Le protocole, c'est SMTP et c'est natif avec les apis SMTP (forcément).
Il ne faudrait quand même pas oublier que SMTP est implémenté à un moment donné. Peu importe l'API, au bout d'un moment quelqu'un a codé la gestion des sockets, écrire les bonnes choses dedans et ainsi de suite. Il n'y a pas d'histoire de natif ou pas ça ne veut rien dire.
Tu peux réimplémenter SMTP en C si tu le souhaite, il faudra juste ouvrir tes sockets, envoyer les bons messages conformément au rfc https://www.ietf.org/rfc/rfc2821.txt ce qui est un job assez monstrueux il faut l'admettre (mais faisable pour l'avoir fait).
<2>
Il n'y a absolumlent pas besoin de bibliotheque sous windows.
Il y a environ une douzaine de méthodes natives dans la Winapi pour envoyer des mails !
cf MSDN.
Justement lami20j et char sniper disent que ce n'est pas standard car un programme basé sur l'api windows ne tournera pas nativement sous linux (contrairement à une version ou tu réimplémentes la gestion de la couche smtp).
Ceci dit je suis d'accord que c'est dommage de réinventer la roue, d'autant plus que la version sous linux peut par exemple consister à simplement faire un appel système à la commande mail ou récupérer un projet opensource et l'adapter à son programme.
<18>
Completement HS, puisqu'il te dit qu'il est sous Vista !!!
Et donc sous Vista (qui est un OS Windows pour ton info, ça se fait avec les apis COM où SMTP est standard.
Non, sa réponse n'était pas HS. Ce n'est pas parce qu'il fait référence à des pages de documentation linux qu'elles ne marchent pas sous windows. Au contraire, ce sont des commandes qui font parties de la libc standard et permettent d'écrire un programme portable sur toutes les plateformes (et pas seulement windows et linux).
A noter qu'elles sont d'autant plus standard que les fonctions winsocks portent exactement le même nom.
Et ce sont effectivement bien les commandes qu'il faudra utiliser pour faire les échanges avec le serveur smtp.
<16>
Ce dont on a parlé n'est pas dur à réaliser. Si toi aussi tu veux envoyer des mails, essayes de le faire toit meme, et si besoin, on t'aidera sur les points qui posent problemes... Ce n'est pas en recopiant du code qu'on deviens codeur
Même si la réponse n'est pas franchement diplomatique et qu'elle n'apporte rien, je signale que ce que tu nous demande peut être facilement détourné pour générer du spam, ce qui rend la question limite hors charte car elle peut être détournée de sa vocation première.
Ce que je te conseille pour faire tes tests c'est d'utiliser un serveur SMTP sur ta propre machine (genre hmailserver) et de le configurer de sorte à faire un relai vers ton serveur SMTP actuel. Tu pourras ainsi regarder les logs de ton serveur SMTP et voir ce qui cloche dans les échanges de messages en cas de soucis (en comparant par exemple avec un message envoyé via thunderbird).
Si les logs du serveur ne suffisent pas ou si tu ne souhaites pas installer de serveur SMTP tu peux comparer les messages envoyé par ton programme et un client mail comme thunderbird avec des outils comme wireshark (anciennement ethereal).
Prends également bien le temps de lire la RFC. Il me semble qu'il y a notamment des contraintes genre \r\n pour faire un retour à la ligne dans l'entête du mail etc...
Bonne chance
ça dépend si tu veux utiliser une bibliothèque ou tout faire toi même.
Si tu veux tout faire toi même, il faut encoder le protocole de courriel de ton choix grâce aux socket.
Si tu veux tout faire toi même, il faut encoder le protocole de courriel de ton choix grâce aux socket.
Il n'y a absolumlent pas besoin de bibliotheque sous windows.
Il y a environ une douzaine de méthodes natives dans la Winapi pour envoyer des mails !
cf MSDN.
Il y a environ une douzaine de méthodes natives dans la Winapi pour envoyer des mails !
cf MSDN.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Et oui, c'est le gars du forum accro à la winapi et au group de discution MS. Avec lui c'est toujours super simple, mais il ne dit jamais comment faire.
Ce que je peux te dire, c'est qu'il n'y a rien de standard pour envoyer les mails (la winapi n'est absolument pas un standard du C++).
Pour ce qu'il faut faire : renseigne toi sur le protocole de ton choix, 80% de chance que ça soit SMTP, ensuite il faut coder. ça dépend de ton niveau en C.
Ce que je peux te dire, c'est qu'il n'y a rien de standard pour envoyer les mails (la winapi n'est absolument pas un standard du C++).
Pour ce qu'il faut faire : renseigne toi sur le protocole de ton choix, 80% de chance que ça soit SMTP, ensuite il faut coder. ça dépend de ton niveau en C.
Salut,
Quand on n'y connait rien, mieux vaut s'abstenir...
Tu devrais donc commencer par t'abstenir.
Bien que sur que si c'est standard en Win32 (apprendre à lire la doc MSDN )= !!!
Ouais, c'est la norme Microsoft, rien de plus.
Le principe d'une norme ISO (comme celle du C et du C++) est que ça soit respecté par tout le monde. En utilisant les API Win32, ce ne sera absolument pas portable. Il n'y a pas que Windows dans la vie...
Et me sors pas le couplet avec tes chiffres sortis de je ne sais où genre (99% des entreprises utilisent Windows).
Quand on n'y connait rien, mieux vaut s'abstenir...
Tu devrais donc commencer par t'abstenir.
Bien que sur que si c'est standard en Win32 (apprendre à lire la doc MSDN )= !!!
Ouais, c'est la norme Microsoft, rien de plus.
Le principe d'une norme ISO (comme celle du C et du C++) est que ça soit respecté par tout le monde. En utilisant les API Win32, ce ne sera absolument pas portable. Il n'y a pas que Windows dans la vie...
Et me sors pas le couplet avec tes chiffres sortis de je ne sais où genre (99% des entreprises utilisent Windows).
perso j'avais créé un petit programme permettant de me connecter au SMTP de mon fournisseur d'accès, et d'envoyer des mails.
tout ce qu'il faut est sur la page de wikipédia: https://fr.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol#Syntaxe_type_d.27une_session_ESMTP
juste une diférence, de ce que j'ai compris, il s'agit de ESMTP ici. pour du SMTP, la syntaxe de la première ligne envoyée est EHLO au lieu de HELO
je te conseille tout d'abord de faire un essai avec telnet, ainsi tu te rendra compte par toi meme de la simplicité de l'envoi d'un mail (sans pieces jointes)
il suffit de connaitre un tout petit peu les socket, et tu pourras le programmer sans soucis
tout ce qu'il faut est sur la page de wikipédia: https://fr.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol#Syntaxe_type_d.27une_session_ESMTP
juste une diférence, de ce que j'ai compris, il s'agit de ESMTP ici. pour du SMTP, la syntaxe de la première ligne envoyée est EHLO au lieu de HELO
je te conseille tout d'abord de faire un essai avec telnet, ainsi tu te rendra compte par toi meme de la simplicité de l'envoi d'un mail (sans pieces jointes)
il suffit de connaitre un tout petit peu les socket, et tu pourras le programmer sans soucis
comme marqué sur la page WIKI: sous telnet t'as cas faire (pour numericable par exemple)
et ca marche....
ensuite, dans ton code C++, t'as cas utiliser les memes commandes que tu envoies au serveur SMTP
HELO smtp.numericable.fr MAIL FROM: <bilou@microsoft.com> RCPT TO: <xxx@xxx.xxx> DATA Subject: sujet du message corps du message . QUIT
et ca marche....
ensuite, dans ton code C++, t'as cas utiliser les memes commandes que tu envoies au serveur SMTP
et faire un essai sous telnet ne fera pas de mal..
tu trouves l'adresses SMTP de ton FAI: http://www.commentcamarche.net/faq/sujet 893 adresses des serveurs pop et smtp des principaux fai
dans executer tu tapes telnet smtp.numericable.fr 25 par exemple, puis les commandes que ej t'ai donné plus haut...
avec ca, tu arrivera deja a comprendre le focntionenment.
dans un premier temps, pour tonprogramme, ne gères pas els messages d'erreur...
tu trouves l'adresses SMTP de ton FAI: http://www.commentcamarche.net/faq/sujet 893 adresses des serveurs pop et smtp des principaux fai
dans executer tu tapes telnet smtp.numericable.fr 25 par exemple, puis les commandes que ej t'ai donné plus haut...
avec ca, tu arrivera deja a comprendre le focntionenment.
dans un premier temps, pour tonprogramme, ne gères pas els messages d'erreur...
Et donc sous Vista (qui est un OS Windows pour ton info, ça se fait avec les apis COM où SMTP est standard.
Effectivement il s'est trompé.
Mais ce n'est pas non plus une raison d'être agressif.
Merci d'avoir une attitude un peu plus tranquille. Nous somme sur un forum d'entraide et personne n'est à l'abri d'une erreur.