IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Envoyer un email sans Intent - JavaMail API


Sujet :

Android

  1. #1
    Membre régulier
    Homme Profil pro
    ETUDIANT
    Inscrit en
    Novembre 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : ETUDIANT

    Informations forums :
    Inscription : Novembre 2012
    Messages : 111
    Points : 70
    Points
    70
    Par défaut Envoyer un email sans Intent - JavaMail API
    Bonjour,

    J'ai fais un programme qui permet d'envoyer un émail sans itent ,voila sur Samsung ace2 (v 2.3.6)? envoie e mail ça marche , mais si j’exécute le même apk sur note2(v4.1.2) envoi ça marche pas :message:"Il y a eu un problème lors de l'envoi du mail!"

    une partie de code source:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    .setPositiveButton("Envoyer",new DialogInterface.OnClickListener() 
      {
       public void onClick(DialogInterface dialog,int idi) 
    	 {
    	   //On récupère l'email de l'expéditeur et le mot de passe
    	   
    	   final String emailEx = mailrobot;
    	   final String mdp = passrobot;
    	   final String emailDe = emailD.getText().toString();
    	   final String sujet = sujetT.getText().toString();
    	   final String message = "ccccccc"; 
    	   /* VERIFICATION a faire si vous le souhaitez pour savoir si tout est bien rempli avant d'essayer 
    	    * d'envoyer le mail */
    	   sendMail(emailEx, mdp, emailDe, sujet, message);
    	   
    	  
    	 }
    
      //Pour bien faire il faudrait exécuter cette fonction dans un thread avec une progress Bar
      private void sendMail(String emailEx, String mdp, String emailDe, String sujet, String message) 
      {
      	// Création de l'objet sendMail avec le 2e constructeur
        Mail sendMail = new Mail(emailEx, mdp);
       // Ajout de l'expédideur
       sendMail.setFrom(emailEx);
       // Création du tableau des destinataires
       String[] toArr = {emailDe};
       // Ajouts des destinataires
       sendMail.setTo(toArr);
       sendMail.setSubject(sujet);
       sendMail.setBody(message);
       // Si on souhaite ajouter une pièce jointe
     /*File f = new File(Environment.getExternalStorageDirectory() + "/temp_rapports/"+PDF);
     
       try {
     			sendMail.addAttachment(f.getAbsolutePath());
     		} catch (Exception e1) {
     			e1.printStackTrace();
     		}
       */  
       
        try {    
           	if(sendMail.send())  
           	{
           		Toast.makeText(context.getApplicationContext(), "Email envoyé avec succès!", Toast.LENGTH_LONG).show();
           	}
           	else {
           		Toast.makeText(context.getApplicationContext(), "Email non envoyé!", Toast.LENGTH_LONG).show();
           	     }
           }catch(javax.mail.AuthenticationFailedException e) {
           	Toast.makeText(context.getApplicationContext(), "Mauvais user et/ou mot de passe!", Toast.LENGTH_LONG).show();
           }catch(javax.mail.MessagingException e) {
           	Toast.makeText(context.getApplicationContext(), "Problème de connexion!", Toast.LENGTH_LONG).show();
           }
           catch(Exception e) {
           	Toast.makeText(context.getApplicationContext(), "Il y a eu un problème lors de l'envoi du mail!", Toast.LENGTH_LONG).show();
           	Log.e("SendMailAttachementActivity", "Email non envoyé", e);
           }
       }
    	})// END envoyer

  2. #2
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Et quelle est l'exception ?
    Tu l'as loggée, autant la fournir, non ?
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  3. #3
    Membre régulier
    Homme Profil pro
    ETUDIANT
    Inscrit en
    Novembre 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : ETUDIANT

    Informations forums :
    Inscription : Novembre 2012
    Messages : 111
    Points : 70
    Points
    70
    Par défaut re
    rebonjour,

    avec samsung ace --> pas as pas (Debug),

    execution de Transport.send(msg); ca fonctionne mais avec note2 aucun execution

    merci d'avance

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 639
    Points
    639
    Par défaut
    Bonjour,

    Si tu ne donnes pas la log il y a peu de chance que quelqu'un puisse t'aider.

    Que log cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Log.e("SendMailAttachementActivity", "Email non envoyé", e);
    C'est elle qui te permettra de connaitre l'origine de l'erreur.

    Romain.

  5. #5
    Membre régulier
    Homme Profil pro
    ETUDIANT
    Inscrit en
    Novembre 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : ETUDIANT

    Informations forums :
    Inscription : Novembre 2012
    Messages : 111
    Points : 70
    Points
    70
    Par défaut re
    11-18 14:25:58.313: E/Watchdog(2275): !@Sync 15746
    11-18 14:26:00.013: W/AlarmManager(2275): FACTORY_ON= 0
    11-18 14:26:00.163: E/ClockAlarmWidget(2335): [AlarmWidgetIdManager] getListItem() : itemIndex=0, widgetID:1
    11-18 14:26:00.163: E/ClockAlarmWidget(2335): [AlarmWidgetIdManager] getListItem() : ItemIndex exceed ListItemCount. itemIndex=1
    11-18 14:26:00.163: E/ClockAlarmWidget(2335): [AlarmWidgetIdManager] getListItem() : itemIndex=1, widgetID:1
    11-18 14:26:08.788: E/SendMailAttachementActivity(25893): Email non envoyé
    11-18 14:26:26.758: E/MtpService(23106): In MTPAPP onReceive:android.intent.action.BATTERY_CHANGED
    11-18 14:26:26.763: E/MtpService(23106): battPlugged Type : 2
    11-18 14:26:28.313: E/Watchdog(2275): !@Sync 15747
    11-18 14:26:58.313: E/Watchdog(2275): !@Sync 15748
    11-18 14:27:00.013: W/AlarmManager(2275): FACTORY_ON= 0
    11-18 14:27:00.153: E/ClockAlarmWidget(2335): [AlarmWidgetIdManager] getListItem() : itemIndex=0, widgetID:1
    11-18 14:27:00.153: E/ClockAlarmWidget(2335): [AlarmWidgetIdManager] getListItem() : ItemIndex exceed ListItemCount. itemIndex=1
    11-18 14:27:00.153: E/ClockAlarmWidget(2335): [AlarmWidgetIdManager] getListItem() : itemIndex=1, widgetID:1
    11-18 14:27:05.163: I/APO/CPO(27281): Found the at_distributor. Decided APO mode.
    11-18 14:27:15.258: W/ProcessStats(2275): Skipping unknown process pid 27351

  6. #6
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Bizarre le logcat sans l'affichage de l'exception... il sort d'ou le logcat ?

    Le Samsung Ace est encore en gingerbread non ? (Android 2.3)
    Le Note2 lui doit être en JellyBean (Android 4.1+)

    Vu le code, il y a fort à parier pour que le système ait lui aussi détecté que tu ne faisais pas les choses correctement:
    //Pour bien faire il faudrait exécuter cette fonction dans un thread avec une progress Bar
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  7. #7
    Membre régulier
    Homme Profil pro
    ETUDIANT
    Inscrit en
    Novembre 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : ETUDIANT

    Informations forums :
    Inscription : Novembre 2012
    Messages : 111
    Points : 70
    Points
    70
    Par défaut re
    voila le log gut:
    01-01 01:46:48.120: E/SendMailAttachementActivity(6977): Email non envoyé
    01-01 01:46:48.120: E/SendMailAttachementActivity(6977): android.os.NetworkOnMainThreadException
    01-01 01:46:48.120: E/SendMailAttachementActivity(6977): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
    01-01 01:46:48.120: E/SendMailAttachementActivity(6977): at java.net.InetAddress.lookupHostByName(InetAddress.java:391)
    01-01 01:46:48.120: E/SendMailAttachementActivity(6977): at java.net.InetAddress.getLocalHost(InetAddress.java:371)
    01-01 01:46:48.120: E/SendMailAttachementActivity(6977): at javax.mail.internet.InternetAddress.getLocalAddress(InternetAddress.java:517)
    01-01 01:46:48.120: E/SendMailAttachementActivity(6977): at javax.mail.internet.UniqueValue.getUniqueMessageIDValue(UniqueValue.java:99)
    01-01 01:46:48.120: E/SendMailAttachementActivity(6977): at javax.mail.internet.MimeMessage.updateMessageID(MimeMessage.java:2054)
    01-01 01:46:48.120: E/SendMailAttachementActivity(6977): at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:2076)
    01-01 01:46:48.120: E/SendMailAttachementActivity(6977): at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:2042)
    01-01 01:46:48.120: E/SendMailAttachementActivity(6977): at javax.mail.Transport.send(Transport.java:117)
    01-01 01:46:48.120: E/SendMailAttachementActivity(6977): at com.immo.peb_calculator.Mail.send(Mail.java:105)
    01-01 01:46:48.120: E/SendMailAttachementActivity(6977): at com.immo.peb_calculator.mailxml$1.onClick(mailxml.java:70)
    01-01 01:46:48.120: E/SendMailAttachementActivity(6977): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:167)
    01-01 01:46:48.120: E/SendMailAttachementActivity(6977): at android.os.Handler.dispatchMessage(Handler.java:99)
    01-01 01:46:48.120: E/SendMailAttachementActivity(6977): at android.os.Looper.loop(Looper.java:137)
    01-01 01:46:48.120: E/SendMailAttachementActivity(6977): at android.app.ActivityThread.main(ActivityThread.java:4511)
    01-01 01:46:48.120: E/SendMailAttachementActivity(6977): at java.lang.reflect.Method.invokeNative(Native Method)
    01-01 01:46:48.120: E/SendMailAttachementActivity(6977): at java.lang.reflect.Method.invoke(Method.java:511)
    01-01 01:46:48.120: E/SendMailAttachementActivity(6977): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980)
    01-01 01:46:48.120: E/SendMailAttachementActivity(6977): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)
    01-01 01:46:48.120: E/SendMailAttachementActivity(6977): at dalvik.system.NativeStart.main(Native Method)

  8. #8
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Ben voilà, tu as ta réponse...

    Ce n'est pas "pour bien faire", mais "absolument nécessaire à faire"

    Utiliser AsyncTask pour plus de simplicité (synchro avec le thread principal), ou un thread à part si une synchro n'est pas nécessaire (pas d'affichage de retour par exemple).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  9. #9
    Membre régulier
    Homme Profil pro
    ETUDIANT
    Inscrit en
    Novembre 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : ETUDIANT

    Informations forums :
    Inscription : Novembre 2012
    Messages : 111
    Points : 70
    Points
    70
    Par défaut Bonjour,
    Voila enfin ca marche ,avec AsyncTask!! ( Transport.send(messages[0]) qui envoi email)

    .........
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     @Override
            protected Void doInBackground(Message... messages) {
                try {
     
                    Transport.send(messages[0]);
     
     
                } catch (MessagingException e) {
     
                    e.printStackTrace();
                }
                return null;

    mais si je veux faire un Toast pour faire les tests :

    si send :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    {
         	       		Toast.makeText(context.getApplicationContext(), "Email envoyé avec succès!", Toast.LENGTH_LONG).show();
         	       	}
         	       	else {
         	       		Toast.makeText(context.getApplicationContext(), "Email non envoyé!", Toast.LENGTH_LONG).show();
         	       	     }
         	       }catch(javax.mail.AuthenticationFailedException e) {
         	       	Toast.makeText(context.getApplicationContext(), "Mauvais user et/ou mot de passe!", Toast.LENGTH_LONG).show();
         	       }catch(javax.mail.MessagingException e) {
         	       	Toast.makeText(context.getApplicationContext(), "Problème de connexion!", Toast.LENGTH_LONG).show();
         	       }
         	       catch(Exception e) { 
         	       	Toast.makeText(context.getApplicationContext(), "Il y a eu un problème lors de l'envoi du mail!", Toast.LENGTH_LONG).show();
         	       	Log.e("SendMailAttachementActivity", "Email non envoyé", e);
         	       }
    merci d'avance

  10. #10
    Membre régulier Avatar de loupapet
    Homme Profil pro
    Retraité d'Eurocopter
    Inscrit en
    Janvier 2009
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité d'Eurocopter
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 69
    Points : 72
    Points
    72
    Par défaut Bonjour brayanrabat,
    Je viens de tomber sur votre message et vois que personne n'a proposé de réponse. Voici donc ma proposition :

    • dans l'activité principale, Android tue toute tâche qui risque de durer plus de 5 secondes ce qui est le cas pour les envois de courriels sans intervention de l'utilisateur. IL faut donc qu'elle tourne en tâche de fond.
    • L'Async Task tourne dans un process différent de l'activité principale (UIThread) et n'a donc pas accès à son layout.
    • Pour exécuter un toast, il faut donc l'envoyer à une tâche qui tourne dans le process de l'UIThread et c'est le cas de la méthode

      "onProgressUpdate(String... messerr)" (l'une des méthodes de l'Async Task)

    • Pour passer le message d'erreur à la méthode onProgressUpdate", l'Async Task ("doInBackground(....)" devra donc lancer un appel à la méthode

      publishProgress(messerr)"

      pour cette transmission. Elle sert justement à mettre à jour des données dans le layout (données, curseurs, barres de progression, etc...)

    En espérant vous avoir aidé, cordialement.

  11. #11
    Membre régulier
    Homme Profil pro
    ETUDIANT
    Inscrit en
    Novembre 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : ETUDIANT

    Informations forums :
    Inscription : Novembre 2012
    Messages : 111
    Points : 70
    Points
    70
    Par défaut re
    Bonjour

    Merci infiniment jean pierre , et l’équipe de développez.com

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Envoyer un mail sans intent via SMTP de GMail
    Par danieldou dans le forum Android
    Réponses: 1
    Dernier message: 27/11/2014, 15h33
  2. Envoyer un email via JavaMail sous Eclipse
    Par sihamnet dans le forum Développement Web en Java
    Réponses: 7
    Dernier message: 28/06/2012, 05h47
  3. [OL-2003] envoyer un email sans qu'il aille dans le dossier des emails envoyés
    Par o.deb dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 08/06/2010, 17h10
  4. Réponses: 0
    Dernier message: 26/04/2010, 03h45
  5. Récupérer email avec JavaMail API
    Par petitavion414 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 27/07/2007, 16h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo