IPB

Bienvenue invité ( Connexion | Inscription )

> Programmation

Il est interdit de poster directement à la racine de ce forum.
Veuillez créer votre topic dans le sous-forum approprié.

 
Reply to this topicStart new topic
> Envoyer un mail, sans passer par une application dédiée
Options
Arty
posté 20 Jul 2004, 18:59
Message #1


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 599
Inscrit : 20 Sep 2003
Membre no 9 702



Bonjour,

est-ce qu'il est possible d'envoyer un mail sans passer par une application dédiée (comme Mail, Entourage...)? J'ai une application qui collecte des infos sur l'ordi sur lequel elle est installée (addresse IP entre autre), et je voudrais que l'utilisateur puisse s'envoyer toutes ces infos sur une adresse mail de son choix lorsqu'il est absent.
Bien entendu, il faut qu'il y ai le minimum de configuration pour l'utilisateur (il aura juste à rentrer l'adresse de son serveur smtp).

-- Arthur;

PS: mon appli est en Objective-C


--------------------
MacBook Pro 15" Core [email protected]
Mac OS 10.9.3
iPhone 5 - 32 Go Black
Go to the top of the page
 
+Quote Post
f_cam
posté 20 Jul 2004, 19:03
Message #2


Moderating Daemon
*****

Groupe : Modérateurs
Messages : 6 345
Inscrit : 22 Feb 2004
Lieu : Yvelines/Cambridge (GB), dans mon pantalon
Membre no 15 207



QUOTE (Arty @ 20 Jul 2004, 19:59)
Bonjour,

est-ce qu'il est possible d'envoyer un mail sans passer par une application dédiée (comme Mail, Entourage...)? J'ai une application qui collecte des infos sur l'ordi sur lequel elle est installée (addresse IP entre autre), et je voudrais que l'utilisateur puisse s'envoyer toutes ces infos sur une adresse mail de son choix lorsqu'il est absent.
Bien entendu, il faut qu'il y ai le minimum de configuration pour l'utilisateur (il aura juste à rentrer l'adresse de son serveur smtp).

-- Arthur;

PS: mon appli est en Objective-C
*

Tu les le RFC sur le smtp. C'est pas très compliqué comme protocole.


--------------------
G5 Bi 2GHz rev A, ATI X800 XT
Alu 17" rev A
MacBook core duo 1.83 GHz
Go to the top of the page
 
+Quote Post
Arty
posté 20 Jul 2004, 19:48
Message #3


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 599
Inscrit : 20 Sep 2003
Membre no 9 702



QUOTE (f_cam @ 20 Jul 2004, 20:03)
Tu lis le RFC sur le smtp. C'est pas très compliqué comme protocole.
*

Oui effectivement, ça n'a pas l'air très compliqué. Juste une petite chose: comment je dialogue avec le serveur smtp?
Parce qu'un fois que le contacte est établi, je comprend bien qu'il suffit d'écrire ce qu'on veut (et de récupérer les réponses du serveur), mais comment j'établis la connection proprement dite?


--------------------
MacBook Pro 15" Core [email protected]
Mac OS 10.9.3
iPhone 5 - 32 Go Black
Go to the top of the page
 
+Quote Post
jojo5
posté 20 Jul 2004, 19:52
Message #4


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 263
Inscrit : 17 Nov 2002
Membre no 4 719



Voial un exempe de session de mail :

<- : ce qui entre
-> : ce qui sort

déja on se connecte sur le serveur, par exemple smtp.fai.fr sur le port 25
on recoit ca :



-> 220 nomduserveursmtp
<- HELO laonmetcekonveut\r\n
-> 250 nomduserveursmtp
<- MAIL FROM: <[email protected]>\r\n
-> 250 Ok
<- RCPT TO: <[email protected]>\r\n
-> 250 ok
<- DATA
-> 354 blablablablabla
<- Bonjour ginette c marcel, comment va tu ?
<- \r\n.\r\n
-> 250 Ok
<- QUIT \r\n

Voila, les codes que le serveur te renvoi , tu peux les tester a chauqe fois pour voir si tout se passe bien (du genre if ([reponse hasPrefix:@"250"]) { on continue ... )
au dernier code 250 t sur que ton mail é été envoyé !
Dans le data tu peux rajouter un "header",du genre
CODE
Subject: Message d'amour\r\n
From:marcel\r\n
To: ginette\r\n


Ca c pas obligatoire masi c plsu joli d'avoir un objet et tutti quanti ...

j'ai fait une fonction qui utilise les sockets bsd pour envoyer un mail et qui renvoi un code suivant si le mail a été envoyé ou pas. si ca t'interesse je te la donne.

PS : j'ai mis \r\n pour bien montrer qu'il faut des fin de lignes de ce type, attention a ce que le sfin de ligne dans le mail soit toutes de ce type, et qu'il n"y ai pas de "." tout seul sur une ligne sinon le serveur detectera la fin du message.


--------------------
Je suis connu aussi sous le doux nom de Fullstack, et je suis admin là : http://www.rbsoftware.net

Mon Blog :
http://www.rbsoftware.net/wordpress/

Mes projets sourceforges :
WebServerXKit
iMailist
Go to the top of the page
 
+Quote Post
Arty
posté 20 Jul 2004, 20:20
Message #5


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 599
Inscrit : 20 Sep 2003
Membre no 9 702



QUOTE (jojo5 @ 20 Jul 2004, 20:52)
déja on se connecte sur le serveur, par exemple smtp.fai.fr sur le port 25
*

OK, mais comment je me connecte au serveur depuis un programme en C? C'est avec les histoires de socket?


--------------------
MacBook Pro 15" Core [email protected]
Mac OS 10.9.3
iPhone 5 - 32 Go Black
Go to the top of the page
 
+Quote Post
f_cam
posté 20 Jul 2004, 21:44
Message #6


Moderating Daemon
*****

Groupe : Modérateurs
Messages : 6 345
Inscrit : 22 Feb 2004
Lieu : Yvelines/Cambridge (GB), dans mon pantalon
Membre no 15 207



Oui avec des sockets. En Obj-c tu as également NSStream pour te faciliter un peu la tache.


--------------------
G5 Bi 2GHz rev A, ATI X800 XT
Alu 17" rev A
MacBook core duo 1.83 GHz
Go to the top of the page
 
+Quote Post
Ludopac
posté 20 Jul 2004, 22:35
Message #7


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 988
Inscrit : 17 Jun 2001
Lieu : Nancy
Membre no 388



Je crois qu'il y a plus simple...
Pour cela il suffit d'utiliser le framework "Message.framework" inclus dans Mac OS X...

Tu ajoutes ce framework à ton projet, tu l'importes dans ton code :

CODE
#import <Message/NSMailDelivery.h>


Et après c'est on ne peut plus simple :

CODE
NSString *objet = @"Objet du mail";
NSString *message = @"Contenu du mail";
NSString *mailDestination = @"[email protected]";

if ([NSMailDelivery deliverMessage:message subject:objet to:mailDestination]) {
 NSLog(@"Le message a été transmis...");
} else {
 NSLog(@"Le message n'a pas été transmis...");
}


Ce message a été modifié par Ludopac - 20 Jul 2004, 22:36.


--------------------
D-Vision 3.2.2 (universal)
D-Volution 2.0.2
D-Subtitler 1.0
D-Trace 1.0.2


iMac core2duo 2Ghz, 3Go de DDR2, 320GO sous Mac OS X.4
MacBook Pro 1.83, 1G0 de DDR2, 80GO sous Mac OS X.4
Athlon XP 2600 + 512 Mo de DDr, 80 Go sous Suse 10/Win Xp
Go to the top of the page
 
+Quote Post
Arty
posté 21 Jul 2004, 00:07
Message #8


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 599
Inscrit : 20 Sep 2003
Membre no 9 702



Ca a l'air pas mal, mais... comment indiquer quel serveur smtp utiliser?


--------------------
MacBook Pro 15" Core [email protected]
Mac OS 10.9.3
iPhone 5 - 32 Go Black
Go to the top of the page
 
+Quote Post
jojo5
posté 21 Jul 2004, 07:33
Message #9


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 263
Inscrit : 17 Nov 2002
Membre no 4 719



personnelment je te déconseille ce framework, car il travaille avec mail, si la gars ne se sert pas de mail et n'a pas de boite configuré, il ne pourra rien envoyer.
De toute fcaon le meilleur moyen et de faire sa socket soi -meme et de se connecter.

Pour les NSStream, je trouve ca beaucoup plus compliqué et lourd qu'une socket bsd, mais bon c une question de choix


--------------------
Je suis connu aussi sous le doux nom de Fullstack, et je suis admin là : http://www.rbsoftware.net

Mon Blog :
http://www.rbsoftware.net/wordpress/

Mes projets sourceforges :
WebServerXKit
iMailist
Go to the top of the page
 
+Quote Post
Ludopac
posté 21 Jul 2004, 15:00
Message #10


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 988
Inscrit : 17 Jun 2001
Lieu : Nancy
Membre no 388



QUOTE(jojo5 @ 21 Jul 2004, 06:33)
personnelment je te déconseille ce framework, car il travaille avec mail, si la gars ne se sert pas de mail et n'a pas de boite configuré, il ne pourra rien envoyer.
De toute fcaon le meilleur moyen et de faire sa socket soi -meme et de se connecter.

Pour les NSStream, je trouve ca beaucoup plus compliqué et lourd qu'une socket bsd, mais bon c une question de choix
[right][snapback]784587[/snapback][/right]


Je ne me servais pas de mail il y a quelques temps et ce framework fonctionnait. Même si tu ne te sert pas de Mail, ton compte mail principale est connu de Mac OS X. C'est dans ce compte qu'il va chercher le serveur smtp.

Maintenant peut-être que d'autres solutions fonctionnent mieux, je n'en sais rien. Mais celle-ci et simple et devrait marcher dans la grande majorité des cas...


--------------------
D-Vision 3.2.2 (universal)
D-Volution 2.0.2
D-Subtitler 1.0
D-Trace 1.0.2


iMac core2duo 2Ghz, 3Go de DDR2, 320GO sous Mac OS X.4
MacBook Pro 1.83, 1G0 de DDR2, 80GO sous Mac OS X.4
Athlon XP 2600 + 512 Mo de DDr, 80 Go sous Suse 10/Win Xp
Go to the top of the page
 
+Quote Post
jojo5
posté 21 Jul 2004, 16:08
Message #11


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 263
Inscrit : 17 Nov 2002
Membre no 4 719



Ben si tu utilise cette methode alors il faut bien rpéciser dans un fichier d'aide ou dans le logiciel que si auun compte n'est configuré alors cela ne fonctionnera pas ...


--------------------
Je suis connu aussi sous le doux nom de Fullstack, et je suis admin là : http://www.rbsoftware.net

Mon Blog :
http://www.rbsoftware.net/wordpress/

Mes projets sourceforges :
WebServerXKit
iMailist
Go to the top of the page
 
+Quote Post
Arty
posté 21 Jul 2004, 22:42
Message #12


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 599
Inscrit : 20 Sep 2003
Membre no 9 702



Suite à vos conseil j'ai lu un peu de doc sur les socket, cherché des bouts de codes sur le net, et j'ai réussi à écrire un petit programme envoyant un mail tout simple à une adresse. Le problème, c'est que ça semble marcher très bien sur mon serveur smtp chez wanadoo, mais ça ne marche plus quand je le test sur le serveur smtp de mon ordi (Postfix, activé avec Postfix Enabler). blink.gif

Alors est-ce que quelqu'un serait assez gentil pour essayer mon programme et me coller ici ce qu'il lui affiche? smile.gif

L'utilisation est super simple:

CODE
./mailer -s serveur.smtp.fr -e [email protected] -d [email protected]

Voilà, si une ou deux personnes sont assez gentilles pour tester... Merci d'avance!!


--------------------
MacBook Pro 15" Core [email protected]
Mac OS 10.9.3
iPhone 5 - 32 Go Black
Go to the top of the page
 
+Quote Post
cbrandt
posté 21 Jul 2004, 23:16
Message #13


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 291
Inscrit : 29 May 2004
Lieu : 48°50'27" N, 2°13'43" E
Membre no 19 336



QUOTE
Voilà, si une ou deux personnes sont assez gentilles pour tester... Merci d'avance!!


voici le résultat chez moi:

CODE

Last login: Thu Jul 22 00:08:17 on ttyp2
Welcome to Darwin!
Ice-Cube:~ cbrandt$ cd /Users/cbrandt/Desktop/mailer
Ice-Cube:~/Desktop/mailer cbrandt$ ./mailer
./mailer -s [serveur] -e [expediteur] -d [destinataire]
Ice-Cube:~/Desktop/mailer cbrandt$ ./mailer -s smtp.free.fr -e [email protected] -d [email protected]
220 postfix4-2.free.fr ESMTP Postfix
helo test
mail from: <[email protected]>
-->250 postfix4-2.free.fr
<--
rcpt to: <[email protected]>
-->250 Ok
<--
250 Ok
354 End data with <CR><LF>.<CR><LF>
-->250 Ok: queued as E64121AEA87
<--
Ice-Cube:~/Desktop/mailer cbrandt$


et le mail m'est bien retourné...

bon courage avec les socket, car j'en ai bavé quand je m'em suis servi pour écrire un client ftp... chaque serveur ou presque avait un comportement différent, malgré les rfc.

a+


--------------------
Membre no. 14 du club des AIPBP (Anciens Inscrits Pas Beaucoup de Posts) Voir la liste
Go to the top of the page
 
+Quote Post
f_cam
posté 22 Jul 2004, 00:02
Message #14


Moderating Daemon
*****

Groupe : Modérateurs
Messages : 6 345
Inscrit : 22 Feb 2004
Lieu : Yvelines/Cambridge (GB), dans mon pantalon
Membre no 15 207



Regardes avec tcpdump, ca peut éclairer sur ce qui se passe dans les cas où ça ne marche pas.


--------------------
G5 Bi 2GHz rev A, ATI X800 XT
Alu 17" rev A
MacBook core duo 1.83 GHz
Go to the top of the page
 
+Quote Post
jojo5
posté 22 Jul 2004, 09:02
Message #15


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 263
Inscrit : 17 Nov 2002
Membre no 4 719



ben c petit code est nickel, manque plus qu'a verifier achaque etape de l'envoi que tout se passe bien


--------------------
Je suis connu aussi sous le doux nom de Fullstack, et je suis admin là : http://www.rbsoftware.net

Mon Blog :
http://www.rbsoftware.net/wordpress/

Mes projets sourceforges :
WebServerXKit
iMailist
Go to the top of the page
 
+Quote Post
Arty
posté 22 Jul 2004, 09:48
Message #16


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 599
Inscrit : 20 Sep 2003
Membre no 9 702



En fait mon pb ne doit pas venir du code en lui-même parce qu'en général ça marche très bien. Mais parfois, j'ai l'impression qu'il lit une ligned en trop, ou qu'il ne lit pas la bonne ligne en provenance du serveur (en général c'est après avoir envoyé "data\n"), du coup il se bloque...

Je vais essayer de comprendre ce qui se passe, mais ce qui m'énerve le plus, c'est que quand j'essaye d'envoyer le message en me connectant au serveur avec telnet, la séquence est exactement la même. mad.gif


--------------------
MacBook Pro 15" Core [email protected]
Mac OS 10.9.3
iPhone 5 - 32 Go Black
Go to the top of the page
 
+Quote Post
cbrandt
posté 22 Jul 2004, 12:06
Message #17


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 291
Inscrit : 29 May 2004
Lieu : 48°50'27" N, 2°13'43" E
Membre no 19 336



Essaie de terminer tes commandes helo, mail from: et rcpt to: (lignes 24, 53, 56) par \r\n au lieu de \n seul. D'ailleurs, je me semande si les < et > sont nécessaires (pour mail from: et rcpt to:)
Vérifie aussi si les commandes ne devraient pas être en majuscules, certains serveurs sont sensibles...

Ce message a été modifié par cbrandt - 22 Jul 2004, 12:09.


--------------------
Membre no. 14 du club des AIPBP (Anciens Inscrits Pas Beaucoup de Posts) Voir la liste
Go to the top of the page
 
+Quote Post
ploute
posté 22 Jul 2004, 13:21
Message #18


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 293
Inscrit : 25 Apr 2003
Membre no 7 294



Est-ce que tu attends bien les réponses du serveur avant d'envoyer chaque séquence ? Y'en a qui ont eu ce type de problèmes en faisant la même chose en script shell, c'était un peu trop brutal, y'avait pas de synchro entre le client et le serveur, alors il a fallu employer expect. Donc toi avec les sockets, vérifie que tu dialogues correctement avec le serveur, en attendant bien ses réponses, même si tu les connais d'avance, avant d'envoyer la suite.
Go to the top of the page
 
+Quote Post
jojo5
posté 22 Jul 2004, 18:16
Message #19


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 263
Inscrit : 17 Nov 2002
Membre no 4 719



les <> ne sont pas nécessaire mais le protocle officiel, decrit dans les rfc, c comme ca, donc on les mets ;-)
termine tout par \r\n et fait une fonction qui efface les "." qui sont tous seul sur une ligne, fait également une fonction qui modifie tout les \n ou \r de ton texte en \r\n sinon le mail ne sera pas bien lisible sur pc


--------------------
Je suis connu aussi sous le doux nom de Fullstack, et je suis admin là : http://www.rbsoftware.net

Mon Blog :
http://www.rbsoftware.net/wordpress/

Mes projets sourceforges :
WebServerXKit
iMailist
Go to the top of the page
 
+Quote Post
Arty
posté 23 Jul 2004, 08:31
Message #20


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 599
Inscrit : 20 Sep 2003
Membre no 9 702



QUOTE(jojo5 @ 22 Jul 2004, 19:16)
les <> ne sont pas nécessaire mais le protocle officiel, decrit dans les rfc, c comme ca, donc on les mets ;-)
termine tout par \r\n et fait une fonction qui efface les "." qui sont tous seul sur une ligne, fait également une fonction qui modifie tout les \n ou \r de ton texte en \r\n sinon le mail ne sera pas bien lisible sur pc
[right][snapback]786516[/snapback][/right]

OK, merci.


--------------------
MacBook Pro 15" Core [email protected]
Mac OS 10.9.3
iPhone 5 - 32 Go Black
Go to the top of the page
 
+Quote Post
jojo5
posté 23 Jul 2004, 08:46
Message #21


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 263
Inscrit : 17 Nov 2002
Membre no 4 719



comme dit ploute, attend bien les réponse du serveur a chque foi set controle les avant de passer a une autre commande, sinon tu risque d'avoir des problem si le serveur sui pas la cadence.
En plsu ca te permet de verifier que tout se passe bien.

Petite note, pour ceux qui ont des .mac, le smtp requiert une authentification apres le HELO il faut faire "auth plain trucencoderenbase64"
trucencoderenbase64 vosu pouvez l'encoder comme ca :
CODE
perl -MMIME::Base64 -e 'print encode_base64("username\0username\0motdepasse");'


--------------------
Je suis connu aussi sous le doux nom de Fullstack, et je suis admin là : http://www.rbsoftware.net

Mon Blog :
http://www.rbsoftware.net/wordpress/

Mes projets sourceforges :
WebServerXKit
iMailist
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 25th April 2024 - 02:10