Rechercher : dans
Par :

Envoyer un mail a partir d'une appi c++

Dernière réponse le 1 aoû 2009 à 15:12:06 vengeurstrike, le 20 jui 2009 à 23:43:23 
 Signaler ce message aux modérateurs

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

Configuration: Window Vista 32bits
Intel core 2 duo E4400
ATI Radeon HD 2400
3GO de RAM

1

Char Snipeur, le 21 jui 2009 à 10:35:35

ç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. Salutation ! (il faut bien que vous compreniez que j'ai TOUJ­OURS raison)
Char Snipeur

Répondre à Char Snipeur

3

nico, le 21 jui 2009 à 11:23:53

Hein ?!!
C'est n'importe quoi :
Le protocole, c'est SMTP et c'est natif avec les apis SMTP (forcément).

Répondre à nico

5

Char Snipeur, le 21 jui 2009 à 14:22:30

SMTP est UN protocole de courriel, il y en a d'autre !
si tu veux, je peux te montrer un bout de code que j'ai réaliser qui envoie des messages en SMTP à partir des sockets en C++. Salutation ! (il faut bien que vous compreniez que j'ai TOUJ­OURS raison)
Char Snipeur

Répondre à Char Snipeur

2

Michel, le 21 jui 2009 à 11:16:28

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.

Répondre à Michel

4

vengeurstrike, le 21 jui 2009 à 12:23:23

Ok mais expliquez concrètement comment faire svp

Répondre à vengeurstrike

6

Char Snipeur, le 21 jui 2009 à 14:26:47

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. Salutation ! (il faut bien que vous compreniez que j'ai TOUJ­OURS raison)
Char Snipeur

Répondre à Char Snipeur

17

Laurent, le 31 jui 2009 à 17:14:23

Bien que sur que si c'est standard en Win32 (apprendre à lire la doc MSDN )= !!!
Quand on n'y connait rien, mieux vaut s'abstenir...

Répondre à Laurent

21

 fiddy, le 1 aoû 2009 à 15:12:06
  • +1

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).
Google is your friend

Répondre à fiddy

7

Nabla's, le 21 jui 2009 à 14:31:10

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: http://fr.wikipedia.org/...

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

Répondre à Nabla's

8

vengeurstrike, le 21 jui 2009 à 14:35:25

Ok mais je ne comprend pas ou trouver les commandes...

Répondre à vengeurstrike

9

Char Snipeur, le 21 jui 2009 à 14:38:15

J'ai peur de ta réponse.
Mais avec quoi programmes tu ?
IDE, compilateur etc. Salutation ! (il faut bien que vous compreniez que j'ai TOUJ­OURS raison)
Char Snipeur

Répondre à Char Snipeur

10

Nabla's, le 21 jui 2009 à 14:44:45

Comme marqué sur la page WIKI: sous telnet t'as cas faire (pour numericable par exemple)

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

Répondre à Nabla's

11

vengeurstrike, le 21 jui 2009 à 14:57:13

J'utillise code blocks et pour le compilateur je ne l'ai pas changé, je suis sous vista

Répondre à vengeurstrike

12

Char Snipeur, le 21 jui 2009 à 15:57:40

Les commandes dont tu auras besoin :
http://linux.die.net/man/7/socket
http://linux.die.net/man/2/connect
http://linux.die.net/man/2/bind
http://linux.die.net/man/2/send
http://linux.die.net/man/2/recv
Il y a pléthores d'exemple sur internet Salutation ! (il faut bien que vous compreniez que j'ai TOUJ­OURS raison)
Char Snipeur

Répondre à Char Snipeur

18

Laurent, le 31 jui 2009 à 17:16:02

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.

Répondre à Laurent

19

lami20j, le 31 jui 2009 à 17:22:13

Salut,

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.
106485010510997108

Répondre à lami20j

13

Nabla's, le 21 jui 2009 à 16:00:39

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...

Répondre à Nabla's

14

nardoum, le 23 jui 2009 à 00:12:22

Bonjour ^^

Pourrais-je avoir un code source ?

Répondre à nardoum

15

Char Snipeur, le 23 jui 2009 à 08:24:16

Non. Salutation ! (il faut bien que vous compreniez que j'ai TOUJ­OURS raison)
Char Snipeur

Répondre à Char Snipeur

16

Nabla's, le 23 jui 2009 à 09:09:23

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'es tpas en recopiant du code qu'on deviens codeur

Répondre à Nabla's

20

mamiemando, le 1 aoû 2009 à 14:59:45

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 http://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

Répondre à mamiemando