J'essaie de créer une application d'envoi de courrier dans Android.
Si j'utilise:
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
Cela lancera l'application Android intégrée; J'essaie d'envoyer le mail sur le bouton, cliquez directement sans utiliser cette application.
Réponses:
Envoyez des e-mails dans Android à l'aide de l'API JavaMail à l'aide de l'authentification Gmail.
Étapes pour créer un exemple de projet:
MailSenderActivity.java:
GMailSender.java:
JSSEProvider.java:
AJOUTER 3 pots trouvés dans le lien suivant vers votre projet Android
Cliquez ici - Comment ajouter des pots externes
Et n'oubliez pas d'ajouter cette ligne dans votre manifeste:
Cliquez simplement sur le lien ci-dessous pour modifier l'accès au compte pour les applications moins sécurisées https://www.google.com/settings/security/lesssecureapps
Exécutez le projet et vérifiez votre compte de messagerie destinataire pour le courrier. À votre santé!
PS Et n'oubliez pas que vous ne pouvez pas faire d'opération réseau à partir d'une activité dans Android. Par conséquent, il est recommandé d'utiliser
AsyncTask
ouIntentService
d'éviter le réseau sur l'exception du thread principal.Fichiers Jar: https://code.google.com/archive/p/javamail-android/
la source
Merci pour vos précieuses informations. Le code fonctionne bien. Je peux également ajouter une pièce jointe en ajoutant le code suivant.
la source
filename
variable ici, vous devez spécifier le chemin du fichier. Par exemple:String path = Environment.getExternalStorageDirectory().getPath() + "/temp_share.jpg";
Ajoutez cette ligne dans votre manifeste:
la source
Vous pouvez utiliser l'API JavaMail pour gérer vos tâches de messagerie. L'API JavaMail est disponible dans le package JavaEE et son pot est disponible en téléchargement. Malheureusement, il ne peut pas être utilisé directement dans une application Android car il utilise des composants AWT qui sont complètement incompatibles dans Android.
Vous pouvez trouver le port Android pour JavaMail à l'emplacement suivant: http://code.google.com/p/javamail-android/
Ajoutez les pots à votre application et utilisez la méthode SMTP
la source
eu.ocathain.com.sun.mail:javax.mail:1.5.2
Afin d'aider ceux qui obtiennent une exception Network On Main Thread avec une cible SDK> 9. Ceci utilise le code de droopie ci-dessus mais fonctionnera de la même manière pour tous.
Vous pouvez utiliser AsyncTask comme ci-dessous
la source
Code de travail à 100% avec démo Vous pouvez également envoyer plusieurs e-mails en utilisant cette réponse.
Téléchargez le projet ICI
Étape 1: Téléchargez le courrier, l'activation, les fichiers jar supplémentaires et ajoutez votre dossier de bibliothèques de projet dans Android Studio. J'ai ajouté une capture d'écran voir ci-dessous Lien de téléchargement
Connectez - vous avec gmail ( en utilisant votre messagerie à partir ) et ALLUME bouton à bascule LINK
La plupart des gens oublient cette étape j'espère que vous ne le ferez pas.
Étape 2: Après avoir terminé ce processus. Copiez et collez ces cours dans votre projet.
GMail.java
SendMailTask.java
Étape 3: Maintenant, vous pouvez modifier cette classe en fonction de vos besoins, vous pouvez également envoyer plusieurs courriers en utilisant cette classe. je fournis les fichiers xml et java à la fois.
activity_mail.xml
SendMailActivity.java
Remarque N'oubliez pas d'ajouter une autorisation Internet dans votre fichier AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET"/>
J'espère que cela fonctionne si ce n'est pas le cas, alors commentez ci-dessous.
la source
SMTP
L'utilisation de SMTP est une façon de procéder, et les autres ont déjà indiqué comment procéder. Notez simplement qu'en faisant cela, vous contournez complètement l'application de messagerie intégrée et vous devrez fournir l'adresse du serveur SMTP, le nom d'utilisateur et le mot de passe de ce serveur, soit statiquement dans votre code, soit l'interroger auprès de l'utilisateur .
HTTP
Une autre façon impliquerait un simple script côté serveur, comme php, qui prend certains paramètres d'URL et les utilise pour envoyer un courrier. De cette façon, vous avez seulement besoin de faire une demande HTTP à partir de l'appareil (facilement possible avec les bibliothèques intégrées) et vous n'avez pas besoin de stocker les données de connexion SMTP sur l'appareil. C'est une indirection de plus par rapport à l'utilisation directe de SMTP, mais comme il est très facile de faire des requêtes HTTP et d'envoyer des mails depuis PHP, cela pourrait même être plus simple que la manière directe.
Application de messagerie
Si le courrier doit être envoyé à partir du compte de messagerie par défaut de l'utilisateur qu'il a déjà enregistré avec le téléphone, vous devrez adopter une autre approche. Si vous avez suffisamment de temps et d'expérience, vous voudrez peut-être vérifier le code source de l'application de messagerie Android pour voir si elle offre un point d'entrée pour envoyer un courrier sans interaction avec l'utilisateur (je ne sais pas, mais il y en a peut-être un).
Peut-être que vous trouvez même un moyen d'interroger les détails du compte des utilisateurs (afin que vous puissiez les utiliser pour SMTP), bien que je doute fortement que cela soit possible, car ce serait un énorme risque pour la sécurité et Android est construit de manière plutôt sécurisée.
la source
voici une version alt qui fonctionne aussi pour moi et a des pièces jointes (publiée déjà ci-dessus mais version complète contrairement au lien source, que les gens ont posté, ils ne peuvent pas le faire fonctionner depuis ses données manquantes)
et l'appeler dans une activité ...
la source
Could not send email android.os.NetworkOnMainThreadException at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork
il est nécessaire de voir cette solution stackoverflow.com/questions/25093546/…Usage:
Configuration:
Autorisations:
Pour les pièces jointes également, vous devez définir l'autorisation READ_EXTERNAL_STORAGE:
La source
(Je l'ai testé moi-même)
la source
Mot d'avertissement si vous utilisez "smtp.gmail.com" comme serveur smtp par défaut.
Google vous obligera à modifier fréquemment le mot de passe de votre compte de messagerie associé en raison de ses politiques trop zélées "d'activité suspecte". En substance, il traite les demandes répétées de smtp de différents pays dans un court laps de temps comme une "activité suspecte". Comme ils supposent que vous (le titulaire du compte de messagerie) ne pouvez être que dans un seul pays à la fois.
Lorsque les systèmes google détectent une "activité suspecte", cela empêchera la réception d'e-mails supplémentaires jusqu'à ce que vous changiez le mot de passe. Comme vous aurez codé en dur le mot de passe dans l'application, vous devez relancer l'application chaque fois que cela se produit, ce n'est pas idéal. Cela m'est arrivé 3 fois en une semaine, j'ai même stocké le mot de passe sur un autre serveur et récupéré dynamiquement le mot de passe chaque fois que Google m'a forcé à le changer.
Je recommande donc d'utiliser l'un des nombreux fournisseurs de smtp gratuits au lieu de "smtp.gmail.com" pour éviter ce problème de sécurité. Utilisez le même code mais remplacez "smtp.gmail.com" par votre nouvel hôte de transfert smtp.
la source
suspicioud activity
problème?Edit: JavaMail 1.5.5 prétend prendre en charge Android , vous ne devriez donc pas avoir besoin d'autre chose.
J'ai porté le dernier JavaMail (1.5.4) sur Android. Il est disponible dans Maven Central, ajoutez simplement ce qui suit àbuild.gradle
~~Vous pouvez ensuite suivre le tutoriel officiel .
Le code source est disponible ici: https://bitbucket.org/artbristol/javamail-forked-android
la source
J'ai trouvé une alternative plus courte pour ceux qui ont besoin d'aide. Le code est:
Source: envoi d'e-mails via l'API JavaMail
J'espère que cela t'aides! Bonne chance!
la source
Ceux qui
ClassDefNotFoundError
essaient de déplacer ces trois fichiers jar dans le dossier lib de votre projet, cela a fonctionné pour moi !!la source
Pour envoyer un mail avec pièce jointe ..
la source
Je ne parviens pas à exécuter le code de Vinayak B. Enfin, j'ai résolu ce problème en suivant:
1.Utiliser ceci
2.Application de AsyncTask.
3.Changement du problème de sécurité du compte gmail de l'expéditeur (passez à "TURN ON") dans ce
la source
Avez-vous envisagé d'utiliser Apache Commons Net? Depuis 3.3, un seul pot (et vous pouvez en dépendre en utilisant gradle ou maven) et vous avez terminé: http://blog.dahanne.net/2013/06/17/sending-a-mail-in-java- and-android-with-apache-commons-net /
la source
Sans intervention de l'utilisateur, vous pouvez envoyer comme suit:
Envoyer un e-mail depuis le client apk. Ici mail.jar, activation.jar est requis pour envoyer un email java. Si ces pots sont ajoutés, cela pourrait augmenter la taille de l'APK.
Alternativement, vous pouvez utiliser un service Web sur le code côté serveur, qui utilisera les mêmes mail.jar et activation.jar pour envoyer des e-mails. Vous pouvez appeler le service Web via asynctask et envoyer un e-mail. Référez-vous au même lien.
(Mais, vous devrez connaître les informations d'identification du compte de messagerie)
la source
Dans le cas où il vous est demandé de conserver la bibliothèque jar aussi petite que possible, vous pouvez inclure la fonction SMTP / POP3 / IMAP séparément pour éviter le problème «trop de méthodes dans le dex».
Vous pouvez choisir les bibliothèques de fichiers jar souhaitées sur la page Web javanet , par exemple, mailapi.jar + imap.jar peut vous permettre d'accéder à icloud, serveur de messagerie hotmail dans le protocole IMAP. (avec l'aide de additional.jar et activation.jar)
la source
J'ai essayé d'utiliser le code soumis par @Vinayak B. Cependant, je reçois une erreur disant: pas de fournisseur pour smtp
J'ai créé une nouvelle question pour cela avec plus d'informations ICI
J'ai pu le réparer moi-même après tout. Je devais utiliser un autre mail.jar et je devais m'assurer que mon " accès aux applications moins sécurisées " était activé.
J'espère que cela aide toute personne ayant le même problème. Cela fait, ce morceau de code fonctionne également sur la vitre Google.
la source
Tout le code fourni dans les autres réponses est correct et fonctionne bien, mais un peu compliqué, j'ai donc décidé de publier une bibliothèque (toujours en développement) pour l'utiliser plus facilement: AndroidMail .
Il vous suffit de créer un MailSender, de construire un mail et de l'envoyer (déjà géré en arrière-plan avec une AsyncTask).
Vous pouvez recevoir une notification pour l'e-mail envoyé et il prend également en charge différents types de destinataires (TO, CC et BCC), pièces jointes et html:
Vous pouvez l'obtenir via Gradle ou Maven:
S'il vous plaît laissez-moi savoir si vous avez un problème avec elle! :)
la source
Voici beaucoup de solutions. Cependant, je pense que nous devons changer la configuration du GMail pour permettre l'accès à partir d'appareils moins sécurisés. Accédez au lien ci-dessous et activez-le. Ça marche pour moi
https://myaccount.google.com/lesssecureapps?pli=1
la source
la source
Envoi d'e-mails par programme avec Kotlin.
J'ai également trouvé cette liste de services de messagerie POP très utile:
https://support.office.com/en-gb/article/pop-and-imap-email-settings-for-outlook-8361e398-8af4-4e97-b147-6c6c4ac95353
Comment utiliser:
Le code:
Gradle:
AndroidManifest:
la source
Pour ajouter une pièce jointe, n'oubliez pas d'ajouter.
la source