Go Down

Topic: Envois de mail lors d'apuis sur bouton avec ethernet shield (Read 6109 times) previous topic - next topic

woodman

#15
Jun 19, 2012, 05:17 pm Last Edit: Jun 19, 2012, 05:21 pm by woodman Reason: 1

http://arduino.cc/playground/Italiano/Mail


dans le lien la ils utilisent un username et password donc ça dois être sécurisé du coup


j'espère recevoir rapidement mon shield ethernet car il me manque plus que ça et je pourrai faire les test


zoroastre

Yep!

Attention, sur le site italien, ils utilisent un encodage à base64, il y a donc quelques étapes préliminaires à effectuer avant d'écrire ton code.

Quote
Per poter utilizzare lo sketch che segue, è necessario personalizzare vari parametri:
bisogna configurarlo in modo che lo shield ethernet venga riconosciuto dalla rete casalinga in cui è installato; le impostazioni sono diverse per ogni persona,e si può fare riferimento ad un altro tutorial per stabilire qual è l'IP e il MAC address da inserire.
bisogna sostituire mittente, destinatario, oggetto e corpo del messaggio con quelli desiderati
bisogna scoprire l'indirizzo IP del proprio server di posta; il nome del server si trova nella configurazione del vostro client di posta, sotto "server in uscita"; per scoprirne l'IP, basta inserirlo in questo sito: http://www.visualroute.it/strumenti/dnslookup.asp
bisgona inserire il proprio username e password. Questa è la parte più complessa, percè ormai quasi tutti i provider richiedono l'autenticazione dell'utente per poter inviare e-mail , e per fare ciò è necessario convertire le proprie credenziali di accesso (username e password) in formato "BASE64"; al momento non è disponibile una libreria Arduino che lo faccia, quindi è necessario appoggiarsi "una tantum" a un server esterno per convertire le proprie credenziali, per esempio http://www.motobit.com/util/base64-decoder-encoder.asp e http://webnet77.com/cgi-bin/helpers/base-64.pl


1- Adresse IP et MAC
2- Destinataire, corps du message et touti quanti  :smiley-mr-green:
3- Adresse IP du serveur (utilisation de dnslookup, certainement pour identifier et discuter avec le serveur maitre en direct)
4- Nom d'utilisateur et mot de passe encodés pour l'exemple ici en base64

Tiens je comprends l'italien  :smiley-eek:

@+

Zoroastre.
Gné! ;)

woodman

Pour le Nom d'utilisateur et mot de passe encodés pour l'exemple ici en base64

ça veut dire que je peut pas les mettre comme ca direct dans le programme ??


OLIVIERC67

Si tu utilises le smtp de ton FAI, pas besoin de log/pwd du moment que tu l'envoie de chez toi où d'une connexion du même FAI. En tout cas c'est le cas chez Free.

De même si tu veux utiliser le SMTP de ton FAI* chez quelqu'un qui n'est pas chez ton FAI, tu peux choisir "POP before SMTP", pour s'authentifier avant d'envoyer. Là tu dois mettre ton log/pwd.

De là a ce que arduino le gère, c'est une autre histoire.  Et ça m'intéresse beaucoup.




*Cette methode est très pratique pour pas avoir à modifier constamment tes paramètres POP/SMTP quand tu est itinérant.
- 1 mega 2560
- 1 Raspeberry Pi (en pré-commande)
- Quarante douze PC
- beaucoup de volonté, pas beaucoup de temps.
- Ma religion : OpenSour

al1fch

#19
Jun 19, 2012, 07:55 pm Last Edit: Jun 19, 2012, 08:20 pm by al1fch Reason: 1
Si quelqu'un arrive en 2012 (certains articles datent un peu) à envoyer directement du mail (sans passer par un 'intermédiaire de confiance')  en SMTP à partir d'Arduino avec login/password en BASE64 merci de faire un retour !!  Il me semble que ce procédé a disparu peu à peu pour le SMTP au profit d'autres nécessitant une puissance de calcul supérieure côté client, genre SSL (le futur Arduino WiFi shield avec son micro 32bits saura peut être faire ...)
LaPoste.net était peut être un des derniers à accepter le BASE64 sur son SMTP.

J''espère sincèrement avoir tort et qu'il reste encore au moins un serveur SMTP accessible en BASE64 !!

Pour moi seul l'envoi au serveur SMTP de son propre FAI est encore possible pour l'Arduino .... du moins chez FREE.


PS : traduite en ligne la note 4 de l'article italien est asez restrictive :
Quote
NOTE 4: Cette liste seulement donne accès aux serveurs SMTP qui ne nécessitent pas de cryptage SSL ; d'autres, comme par exemple Gmail, exigent, afin que ce code ne fonctionnera pas. En ce moment, je ne sais pas comment se connecter aux serveurs qui requièrent le chiffrement SSL.

Bonjour

pourquoi ne pas passer par http://www.pushingbox.com/

Lorsque l'arduino détecte un événement il se connecte a pushingbox lequel te renvois un  mail..



al1fch

#21
Jun 19, 2012, 08:53 pm Last Edit: Jun 19, 2012, 08:56 pm by al1fch Reason: 1
présentation de PushingBox :
http://www.domotique-info.fr/2012/02/pushingbox-notifications/
avec la problématique de la confiance à accorder aux intermédiaires.

skywodd

Salut,

Je prend le train en marche donc désolé si j'ai zappé des trucs ;)


présentation de PushingBox :
http://www.domotique-info.fr/2012/02/pushingbox-notifications/
avec la problématique de la confiance à accorder aux intermédiaires.

Pourquoi ne pas tout simplement faire un script php avec PHPmailer (qui supporte le STMP sécurisé) pour envoyer les mails ?
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

OLIVIERC67



J''espère sincèrement avoir tort et qu'il reste encore au moins un serveur SMTP accessible en BASE64 !!

Pour moi seul l'envoi au serveur SMTP de son propre FAI est encore possible pour l'Arduino .... du moins chez FREE.




Le base64 est un encodage pour pouvoir envoyer un mail avec une pièce jointe ou des caractères non-ascii (ex : image jpg, archive zip/rar, executable., éàèç, ...).
Attention, les caractères ASCII sont ceux compris vont de 32 et 126. Les autres caractères ne sont pas ascii, c'est un abus de langage.

Le base64 est toujours dispo dans les mailers et fonctionne toujours chez moi (free/thunderbird/mutt). Difficile de faire passer des non-ASCII en SMTP. C'est pour ça que la base64 a été utilisé à l'origine.

Ai je loupé quelque chose dans ton problème ?
- 1 mega 2560
- 1 Raspeberry Pi (en pré-commande)
- Quarante douze PC
- beaucoup de volonté, pas beaucoup de temps.
- Ma religion : OpenSour

al1fch

#24
Jun 19, 2012, 10:07 pm Last Edit: Jun 19, 2012, 10:24 pm by al1fch Reason: 1
Quote
Ai je loupé quelque chose dans ton problème ?

Mon probleme réside dans l'acceptation ou non du couple login/ mot de passe en Base64 pour l'accès aux serveurs SMTP par Telnet. Il me semble que "ça eu marché, ça ne marche plus"....
je veux bien sûr parler des tentatives pour envoyer de chez moi du mail par Telnet à un autre serveur SMTP que celui de mon FAI.
Ce qui est décrit sur la page italienne signalée par zoroastre je n'arrive pas aujourd'hui à le reproduire avec divers serveurs où cela à , auparavant, fonctionné comme celui de LaPoste.net (envoyer UserName et Password en Base64). On trouve sur la toile tout un tas d'exemple des années 2006-2009.
Code: [Select]
// Login data:
String UserName64 = "XXXXXXX";
String Password64 = "XXXXXXX";

// SMTP server data:
// smtp.libero.it : 212.52.84.54
// smtp.iol.it : 212.52.84.203
// out.virgilio.it : 62.211.72.20
byte server[] = { 212, 52, 84, 54 }; // SMTP server
String ServerName = "libero.it";

OLIVIERC67

#25
Jun 19, 2012, 10:45 pm Last Edit: Jun 19, 2012, 10:51 pm by OLIVIERC67 Reason: 1

Quote
Ai je loupé quelque chose dans ton problème ?

Mon probleme réside dans l'acceptation ou non du couple login/ mot de passe en Base64 pour l'accès aux serveurs SMTP par Telnet. Il me semble que "ça eu marché, ça ne marche plus"....
je veux bien sûr parler des tentatives pour envoyer de chez moi du mail par Telnet à un autre serveur SMTP que celui de mon FAI.
Ce qui est décrit sur la page italienne signalée par zoroastre je n'arrive pas aujourd'hui à le reproduire avec divers serveurs où cela à , auparavant, fonctionné comme celui de LaPoste.net (envoyer UserName et Password en Base64). On trouve sur la toile tout un tas d'exemple des années 2006-2009.
Code: [Select]
// Login data:
String UserName64 = "XXXXXXX";
String Password64 = "XXXXXXX";

// SMTP server data:
// smtp.libero.it : 212.52.84.54
// smtp.iol.it : 212.52.84.203
// out.virgilio.it : 62.211.72.20
byte server[] = { 212, 52, 84, 54 }; // SMTP server
String ServerName = "libero.it";



Je peux te dire que ça fonctionne avec telnet en base64 ( http://ostermiller.org/calc/encode.html )avec yahoo et free :


telnet smtp.mail.yahoo.fr 587

220 smtp148.mail.ukl.yahoo.com ESMTP
helo
504 auth type unimplemented (#5.5.1)
helo
250 smtp148.mail.ukl.yahoo.com
auth login
334 VXxxxxxxxxxxxWU6
YxxxxxxxxxxxxZxxI=
334 UxFxxxxxxxxxmx6
aGxxxxxxxxxxxNxM=
235 OK, go ahead

Voilà.
Je suis chez free. Maintenant si base64 bloque avec arduino, tu n'es pas obligé d'utilisé base64 du moment que tu te limite au caractères ascii :

         032      040    20   00100000       SP    (Space)
         033      041    21   00100001        !    (exclamation mark)
         034      042    22   00100010        "    (double quote)
         035      043    23   00100011        #    (number sign)
         036      044    24   00100100        $    (dollar sign)
         037      045    25   00100101        %    (percent)
         038      046    26   00100110        &    (ampersand)
         039      047    27   00100111        '    (single quote)
         040      050    28   00101000        (    (left opening parenthesis)
         041      051    29   00101001        )    (right closing parenthesis)
         042      052    2A   00101010        *    (asterisk)
         043      053    2B   00101011        +    (plus)
         044      054    2C   00101100        ,    (comma)
         045      055    2D   00101101        -    (minus or dash)
         046      056    2E   00101110        .    (dot)
         047      057    2F   00101111        /    (forward slash)
         048      060    30   00110000        0
         049      061    31   00110001        1
         050      062    32   00110010        2
         051      063    33   00110011        3
         052      064    34   00110100        4
         053      065    35   00110101        5
         054      066    36   00110110        6
         055      067    37   00110111        7
         056      070    38   00111000        8
         057      071    39   00111001        9
         058      072    3A   00111010        :    (colon)
         059      073    3B   00111011        ;    (semi-colon)
         060      074    3C   00111100        <    (less than sign)
         061      075    3D   00111101        =    (equal sign)
         062      076    3E   00111110        >    (greater than sign)
         063      077    3F   00111111        ?    (question mark)
         064      100    40   01000000        @    (AT symbol)
         065      101    41   01000001        A
         066      102    42   01000010        B
         067      103    43   01000011        C
         068      104    44   01000100        D
         069      105    45   01000101        E
         070      106    46   01000110        F
         071      107    47   01000111        G
         072      110    48   01001000        H
         073      111    49   01001001        I
         074      112    4A   01001010        J
         075      113    4B   01001011        K
         076      114    4C   01001100        L
         077      115    4D   01001101        M
         078      116    4E   01001110        N
         079      117    4F   01001111        O
         080      120    50   01010000        P
         081      121    51   01010001        Q
         082      122    52   01010010        R
         083      123    53   01010011        S
         084      124    54   01010100        T
         085      125    55   01010101        U
         086      126    56   01010110        V
         087      127    57   01010111        W
         088      130    58   01011000        X
         089      131    59   01011001        Y
         090      132    5A   01011010        Z
         091      133    5B   01011011        [    (left opening bracket)
         092      134    5C   01011100        \    (back slash)
         093      135    5D   01011101        ]    (right closing bracket)
         094      136    5E   01011110        ^    (caret cirumflex)
         095      137    5F   01011111        _    (underscore)
         096      140    60   01100000        `
         097      141    61   01100001        a
         098      142    62   01100010        b
         099      143    63   01100011        c
         100      144    64   01100100        d
         101      145    65   01100101        e
         102      146    66   01100110        f
         103      147    67   01100111        g
         104      150    68   01101000        h
         105      151    69   01101001        i
         106      152    6A   01101010        j
         107      153    6B   01101011        k
         108      154    6C   01101100        l
         109      155    6D   01101101        m
         110      156    6E   01101110        n
         111      157    6F   01101111        o
         112      160    70   01110000        p
         113      161    71   01110001        q
         114      162    72   01110010        r
         115      163    73   01110011        s
         116      164    74   01110100        t
         117      165    75   01110101        u
         118      166    76   01110110        v
         119      167    77   01110111        w
         120      170    78   01111000        x
         121      171    79   01111001        y
         122      172    7A   01111010        z
         123      173    7B   01111011        {    (left opening brace)
         124      174    7C   01111100        |    (vertical bar)
         125      175    7D   01111101        }    (right closing brace)
         126      176    7E   01111110        ~    (tilde)

- 1 mega 2560
- 1 Raspeberry Pi (en pré-commande)
- Quarante douze PC
- beaucoup de volonté, pas beaucoup de temps.
- Ma religion : OpenSour

woodman

le montage sera pas chez moi mais a mon travail (dans une fac) ça me permet de pas être obligé de passer pendant les vacances pour voir si y a pas eu une éventuelle coupure de courant et la messagerie utilisée c'est gmail donc la messagerie et le fai ne sont pas les mêmes

al1fch

#27
Jun 19, 2012, 11:04 pm Last Edit: Jun 19, 2012, 11:38 pm by al1fch Reason: 1
@woodman
Quote
le montage sera pas chez moi mais a mon travail (dans une fac) ça me permet de pas être obligé de passer pendant les vacances pour voir si y a pas eu une éventuelle coupure de courant et la messagerie utilisée c'est gmail donc la messagerie et le fai ne sont pas les mêmes

Tu pourrais donc tester le smtp de yahoo (si tu peux quand même échapper à gmail...) avec l'exemple 'italien' puisque olivier67 dit que ça passe chez eux. (ça sous entend que Yahoo accepte encore 'auth login' ou 'auth plain')

@olivierc67

-merci pour yahoo que je testerai prochainement je croyais avoir lu qu'ils refusaient maintenant 'auth plain' ou 'auth login'.

base 64 : si un serveur SMTP attend expressément son login/mdp codé en Base64 ça m'étonnerait qu'il accepte en clair les caractères que tu indiques. On parle bien içi, non pas de l'utilité générale du Base64 mais de son utilisation particulière pour certains serveurs SMTP comme procédé sommaire (en voie d'abandon) de 'codage' des login/mdp  (AUTH PLAIN ou AUTH LOGIN)
http://www.siteduzero.com/tutoriel-3-4429-envoyer-un-mail-avec-smtp.html#ss_part_1 article de 2008

Pour les codages/décodages divers (Base64 et autres) mon site 'tout en un' préféré est le même que celui utilisé sur le lien ci dessus : http://home.paulschou.net/tools/xlate/

OLIVIERC67


@woodman
Quote
le montage sera pas chez moi mais a mon travail (dans une fac) ça me permet de pas être obligé de passer pendant les vacances pour voir si y a pas eu une éventuelle coupure de courant et la messagerie utilisée c'est gmail donc la messagerie et le fai ne sont pas les mêmes

Tu pourrais donc tester le smtp de yahoo (si tu peux quand même échapper à gmail...) avec l'exemple 'italien' puisque olivier67 dit que ça passe chez eux. (ça sous entend que Yahoo accepte encore 'auth login' ou 'auth plain')


Pourquoi ne pas utiliser le smtp du ISP pour le script italien ? (IP:25)
Pas besoin d'authentification (du moins dans la plupart des cas).

T'arrive à recuperer un message d'erreur du serveur SMTP ?

Quote

@olivierc67

-merci pour yahoo que je testerai prochainement.

base 64 : si un serveur SMTP attend expressément son login/mdp codé en Base64 ça m'étonnerait qu'il accepte de l'ASCII, même restreint aux seuls caractères. On parle bien içi, non pas de l'utilité générale du Base64 mais de son utilisation particulière pour certains serveurs SMTP comme procédé sommaire (en voie d'abandon) de 'codage' des login/mdp  (AUTH PLAIN ou AUTH LOGIN)
http://www.siteduzero.com/tutoriel-3-4429-envoyer-un-mail-avec-smtp.html#ss_part_1
Attention : article de 2008,  auth plain et auth login sont 'en voie de dispatition' !



Ok, j'utilise plus telnet pour smtp depuis bien longtemps.

- 1 mega 2560
- 1 Raspeberry Pi (en pré-commande)
- Quarante douze PC
- beaucoup de volonté, pas beaucoup de temps.
- Ma religion : OpenSour

al1fch

#29
Jun 20, 2012, 01:00 am Last Edit: Jun 20, 2012, 01:21 am by al1fch Reason: 1
Pour ton envoi vers Gmail, woodman, je pense que ça peut finalement passer par Arduino !!!
(sauf blocage au niveau de la fac)

Une recherche Google "telnet gmail smtp" m'a donné une page qui explique comment accéder par telnet , en 'auth plain' (et pas en auth login) au serveur smtp de Gmail :
http://www.commentcamarche.net/forum/affich-20583525-telnet-authentification-sur-smtp-gmail-com

Auth Plain => Il faut impérativement coder en base64, en une chaine de catactères unique, l'ensemble
\0login\0motdepasse   (\0 représentant des caractères NUL)

C'est expliqué içi, y compris l'insertion grâce à un détour par l'hexadécimal, des \0
http://www.siteduzero.com/tutoriel-3-4429-envoyer-un-mail-avec-smtp.html#ss_part_1
Le codage étant fait içi : http://home3.paulschou.net/tools/xlate/

-> conserver soigneusement le résultat après codage en Base64.
Cette chaine est à envoyer après la réponse 334 du serveur, suivie d'un retour chariot


Test rapide effectué à la console sous Windows XP -> message reçu !!! (mais en indésirable)
Je joins ci dessous une copie d'écran ou j'ai mis en rouge mes actions  et laissé en noir les réponses du serveur.

reste à transposer ça sur Arduino.

Go Up