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 :

Envoi de pieces jointe depuis une application


Sujet :

Android

  1. #1
    Membre à l'essai
    Homme Profil pro
    Automatisme et Informatique Industrielle
    Inscrit en
    septembre 2002
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Automatisme et Informatique Industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2002
    Messages : 17
    Points : 12
    Points
    12
    Par défaut Envoi de pieces jointe depuis une application
    Bonjour,

    Je remet un peut les pieds dans le développement informatique après pas mal d'années uniquement dans l'automatisme.

    Un client m'a commandé un systeme pour gérer un entrepôt en scannant des codes-barres et les enregistrer dans un fichier, au départ le systeme devait être simple, puis s'est considérablement compliqué avec le besoin de l'interaction avec l'opérateur.
    La solution retenue est d'utiliser des terminaux de chez Zebra (MC2200) qui sont sous Android 10. J'ai déjà écrit est débugé une grosse partie de l'application (ma première en Java) qui consiste à récupérer le code-barre lu par le lecteur intégré au terminal, le décoder pour nos besoin, complété par une saisie opérateur et stocker les informations dans un fichier.
    Maintenant le client aimerai que lorsque l’opérateur revient vers la zone bureautique (couverte par le wifi), ce dernier appui sur un bouton pour envoyer le fichier par email.

    J'ai trouvé par mal d'exemples qui utilise Gmail, (procédure Intent) qui ouvre une fenêtre Gmail et on doit re cliqué pour envoyer l’e-mail.
    D'autres exemples avec javax.mail mais qui datent tous et qui me pose tous des problèmes de compilation sous un Android récent et mes compétences pour adapter ces morceaux de codes sont très limitées.

    En espérant que tout le monde ne soit pas partis en vacances et qu'une bonne âme puisse m'aider, m'orienter à résoudre ce problème

    Ah j'oubliai un autre point qui n'est peut-être pas négligeable, les terminaux n'ont pas accès à internet (donc pas possibilité d'utiliser un compte Google) et on doit donc se servir du serveur de mail interne à l'entreprise.

    Merci d'avance pour toute aide.
    Programmeur en automatisme industriel : Siemens, Schneider principalement et plein d'autre
    un peu de visualbasic, Delphi, C. Débute en java pour android

  2. #2
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    décembre 2011
    Messages
    1 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : décembre 2011
    Messages : 1 308
    Points : 3 633
    Points
    3 633
    Billets dans le blog
    12
    Par défaut
    Hello,

    • Tes terminaux peuvent appeler un service REST du LAN qui se chargera d'envoyer les mails vers l'extérieur
    • Si tu tiens à envoyer des mails via les terminaux Android, essaye de voir s'il existe une lib qui s'intègre bien à Android, mais ça ne résoudra pas ton souci de LAN


    A+
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  3. #3
    Membre à l'essai
    Homme Profil pro
    Automatisme et Informatique Industrielle
    Inscrit en
    septembre 2002
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Automatisme et Informatique Industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2002
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    Merci de cette première réponse.

    En fait je n'ai pas besoin de "sortir" du LAN, le destinataire du mail est interne à l'entreprise, un compte mail sur le serveur de l'entreprise à été crée pour les terminaux.

    Je suis en train de chercher une lib, mais à part ajouter les jar de javax.mail je ne trouve pas grand chose
    Programmeur en automatisme industriel : Siemens, Schneider principalement et plein d'autre
    un peu de visualbasic, Delphi, C. Débute en java pour android

  4. #4
    Membre à l'essai
    Homme Profil pro
    Automatisme et Informatique Industrielle
    Inscrit en
    septembre 2002
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Automatisme et Informatique Industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2002
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    Je viens de tomber sur la librairie Maildroid, je vais creuser de ce coté, si quelqu’un à des retour dessus je suis preneur
    Programmeur en automatisme industriel : Siemens, Schneider principalement et plein d'autre
    un peu de visualbasic, Delphi, C. Débute en java pour android

  5. #5
    Membre à l'essai
    Homme Profil pro
    Automatisme et Informatique Industrielle
    Inscrit en
    septembre 2002
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Automatisme et Informatique Industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2002
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    J'ai reussi à faire fonctionner javax.mail en suivant un tuto sur youtube de "RuntimeCode"
    il faut ajouter les bibliotheque : activation.jar, additionnal.jar et mail.jar (dispo ici : https://code.google.com/archive/p/ja...roid/downloads)
    et ajouter les déclaration dans le build.gradle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    dependencies {
     
        ...
     
        implementation files('libs/activation.jar')
        implementation files('libs/additionnal.jar')
        implementation files('libs/mail.jar')
    }
    Créer une Class java JavaMailApi dans votre projet
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    import android.content.Context;
    import android.os.AsyncTask;
     
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.Multipart;
    import javax.mail.PasswordAuthentication;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeBodyPart;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMultipart;
     
    import java.io.IOException;
    import java.util.Properties;
     
    public class JavaMailAPI extends AsyncTask<Void, Void, Void> {
     
        private Context context;
     
        private Session session;
        private String email, subject, message, nameFilePath;
     
        public JavaMailAPI(Context context, String email, String subject, String message, String nameFilePath) {
            this.context = context;
            this.email = email;
            this.subject = subject;
            this.message = message;
            this.nameFilePath = nameFilePath;
        }
     
        @Override
        protected Void doInBackground(Void... voids) {
            Properties properties = new Properties();
            properties.put("mail.smtp.host", Utils.SMTPSERVER);
            properties.put("mail.smtp.socketFactory.port", Utils.PORT);
            properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
            properties.put("mail.smtp.auth", "true");
            properties.put("mail.smtp.port", Utils.PORT);
     
            session = Session.getDefaultInstance(properties, new javax.mail.Authenticator(){
                protected PasswordAuthentication getPasswordAuthentication(){
                    return new PasswordAuthentication(Utils.IDENTIFIANT, Utils.PASSWORD);
                }
            });
     
            MimeMessage mimeMessage = new MimeMessage(session);
            try {
                mimeMessage.setFrom(new InternetAddress(Utils.EMAIL));
                mimeMessage.addRecipients(Message.RecipientType.TO, String.valueOf(new InternetAddress(email)));
                mimeMessage.setSubject(subject);
                Multipart emailContent = new MimeMultipart();
                MimeBodyPart texbody = new MimeBodyPart();
                MimeBodyPart csvAttachement = new MimeBodyPart();
     
                csvAttachement.attachFile(nameFilePath);
                emailContent.addBodyPart(texbody);
                texbody.setText(message);
                emailContent.addBodyPart(csvAttachement);
                mimeMessage.setContent(emailContent);
                Transport.send(mimeMessage);
            } catch (MessagingException | IOException e) {
                e.printStackTrace();
            }
     
            return null;
        }
    }
    Ensuite une class java Utils pour declarer vos parametres de connection (en dur ou par lecture d'un fichier de conf ou ...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class Utils {
        public static final String IDENTIFIANT = "monIdentifant";
        public static final String PASSWORD = "monPassword";
        public static final String EMAIL = "monEmail";
        public static final String SMTPSERVER = "monServeurSmtp";
        public static final String PORT = "465";
     
    }
    appel de la fonction dans le programme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        private void sendEmail() {
            String mEmail = "destinataire@sonmail.fr";
            String mSubject = " Test Email Android";
            String mMessage = "Test reussi envoi avec piece jointe";
            String myFilePath = getExternalFilesDir(Environment.MEDIA_SHARED).getPath() + "/monfichier.csv";
     
            JavaMailAPI javaMailAPI = new JavaMailAPI(this, mEmail, mSubject, mMessage, myFilePath);
            javaMailAPI.execute();
        }
    ne pas oublier l'autorisation dans le AndroidManifest.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <uses-permission android:name="android.permission.INTERNET"/>
    Si vous avez des commentaires, n'hésiter pas, je débute en java et en Android.

    Il me reste à gérer les éventuelles et erreurs et je suis preneur d'une solution qui permettrait de mettre en cache à l’instar de la boite "envoi" d'un logiciel de gestion des mails pour que si l'operateur envoi le fichier alors qu'il ne se situe pas dans la zone de couverture réseau, le mail ne soit pas perdu et puisse partir plus tard
    Programmeur en automatisme industriel : Siemens, Schneider principalement et plein d'autre
    un peu de visualbasic, Delphi, C. Débute en java pour android

Discussions similaires

  1. [WM17] Planifier l'envoi d'un sms depuis une application Android
    Par devquipeut dans le forum Windev Mobile
    Réponses: 1
    Dernier message: 06/07/2014, 22h51
  2. Réponses: 1
    Dernier message: 05/06/2008, 12h20
  3. Appels DCOM depuis une application Unix
    Par Dinaïz dans le forum Windows
    Réponses: 1
    Dernier message: 26/08/2005, 13h53
  4. Réponses: 5
    Dernier message: 22/12/2003, 14h18
  5. Gestion des Utilisateurs depuis une application
    Par LLaurent dans le forum XMLRAD
    Réponses: 4
    Dernier message: 25/03/2003, 16h29

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