[Version 2020] Comment envoyer un e-mail à l'aide d'Android Studio Javamail

J'ai écrit un programme pour envoyer des e-mails directement depuis l'application dans Android Studio en référence à Comment envoyer des e-mails depuis Android Zero en utilisant Javamail. Impossible de construire en raison d'une série d'erreurs. La plupart des articles ont été écrits avant 2017 (que ma méthode soit erronée ou obsolète), et aucun d'entre eux n'a fonctionné, j'ai donc recherché la dernière méthode d'introduction.

Conclusion: la façon de télécharger un fichier jar et de l'importer dans une bibliothèque est ancienne!

La méthode souvent décrite dans les articles que j'ai recherchés et trouvés était de télécharger trois fichiers jar à partir de javamail-android et de les copier manuellement dans le dossier libs d'Android Studio et de les installer. Cependant, j'ai trouvé qu'il peut être introduit simplement en l'écrivant dans build.gradle sans faire une chose aussi gênante, donc je vais écrire comment le faire.

: one: Décrit dans AndroidManifest.xml (autorisation d'accès Internet)

Ajoutez des autorisations. L'accès à Internet élimine le besoin pour les utilisateurs d'activer manuellement les autorisations. Ajoutez la phrase suivante: <uses-permission android: name =" android.permission.INTERNET "/>

AndroidManifest.xml


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.mailsend">

    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

: two: Décrit dans les dépendances de build.gradle (au niveau de l'application)

C'est le point. Veuillez ajouter les deux phrases suivantes.

build.gradle


dependencies {
···réduction···

    implementation 'com.sun.mail:android-mail:1.6.5'
    implementation 'com.sun.mail:android-activation:1.6.5'
}

: trois: Décrivez la mise en page

Cette fois, j'écrirai un programme qui envoie un e-mail lorsque le bouton est appuyé.

activity_main.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Test d'envoi d'e-mails"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Envoyer" />

</LinearLayout>

: four: Description du programme

Veuillez modifier l'adresse e-mail, le mot de passe, le titre et le corps de votre compte Google, le cas échéant. De plus, ce programme est conçu pour vous envoyer un e-mail.

Pour modifier l'adresse de destination, reportez-vous à "msg.setRecipients (javax.mail.Message.RecipientType.TO, javax.mail.internet.InternetAddress.parse (account +" @ gmail.com "));Veuillez changer le compte + "@ gmail.com" par l'adresse de destination. (Exemple d'envoi depuis le compte Google saisi vers [email protected]:msg.setRecipients (javax.mail.Message.RecipientType.TO, javax.mail.internet.InternetAddress.parse (" [email protected] ")) ; `)

Vous pouvez également modifier le type de courrier en CC ou BCC, ou envoyer à plusieurs adresses en modifiant la partie «javax.mail.Message.RecipientType.TO». (Cliquez ici pour plus de détails: http://javadrive.s25.xrea.com/javamail/smtp/index3.html)

MainActivity.java


package com.example.mailsend;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button=findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                asyncTask a=new asyncTask();
                a.execute("Nom du compte Gmail (@gmail.Avant com)",
                        "Mot de passe Gmail","Titre du test","envoyer complètement\n Écrivez le texte ici") ;
            }
        });
    }

    private class asyncTask extends android.os.AsyncTask{
        protected String account;
        protected String password;
        protected String title;
        protected String text;

        @Override
        protected Object doInBackground(Object... obj){
            account=(String)obj[0];
            password=(String)obj[1];
            title=(String)obj[2];
            text=(String)obj[3];

            java.util.Properties properties = new java.util.Properties();
            properties.put("mail.smtp.host", "smtp.gmail.com");
            properties.put("mail.smtp.auth", "true");
            properties.put("mail.smtp.port", "465");
            properties.put("mail.smtp.socketFactory.post", "465");
            properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

            final javax.mail.Message msg = new javax.mail.internet.MimeMessage(javax.mail.Session.getDefaultInstance(properties, new javax.mail.Authenticator(){
                @Override
                protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
                    return new javax.mail.PasswordAuthentication(account,password);
                }
            }));

            try {
                msg.setFrom(new javax.mail.internet.InternetAddress(account + "@gmail.com"));
                //Envoyez-vous un e-mail
                msg.setRecipients(javax.mail.Message.RecipientType.TO, javax.mail.internet.InternetAddress.parse(account + "@gmail.com"));
                msg.setSubject(title);
                msg.setText(text);

                javax.mail.Transport.send(msg);

            } catch (Exception e) {
                return (Object)e.toString();
            }

            return (Object)"La transmission est terminée";

        }
        @Override
        protected void onPostExecute(Object obj) {
            //Afficher un message à l'écran
            Toast.makeText(MainActivity.this,(String)obj,Toast.LENGTH_LONG).show();
        }
    }
}

: iphone: On dirait qu'il a été exécuté

Appuyez sur le bouton «Envoyer» pour envoyer l'e-mail. Lorsque la transmission est terminée, le toast s'affiche. 2_R.png Confirmation de réception 1.png

: chaînes: site de référence

https://it-engineer-info.com/language/android-app/2142/ http://7ujm.net/android/javamail.html https://stackoverflow.com/questions/32103337/android-studio-noclassdeffounderror

Recommended Posts

[Version 2020] Comment envoyer un e-mail à l'aide d'Android Studio Javamail
Comment créer une application à l'aide de Tensorflow avec Android Studio
Envoyer des e-mails à l'aide de JavaMail sur AWS
Créer un fichier exécutable avec Android Studio
[Java] Envoyer un e-mail à l'aide d'Amazon SES
Comment utiliser ExpandableListView dans Android Studio
Comment créer un environnement pour n'importe quelle version de Ruby en utilisant rbenv
Je souhaite envoyer un e-mail en Java.
Comment créer un plug-in natif Unity (version Android)
Comment écrire React Native Bridge ~ Version Android ~
Comment créer un lecteur de musique Android imposant
[Android Studio] Comment changer TextView en n'importe quelle police [Java]
Comment faire un générateur d'oléore en utilisant Swagger Codegen
[Android Studio] [Java] Comment réparer l'écran verticalement
Envoyer un e-mail avec une pièce jointe PDF via JavaMail
Comment faire une capture d'écran avec l'émulateur Android Studio
Une version Java non prise en charge Comment se débarrasser des erreurs
Comment abaisser la version java
Je souhaite envoyer manuellement un e-mail d'autorisation avec Devise
Comment vérifier la version JSF
[Spring Boot] Envoyer un e-mail
Comment gérer les instances
Comment autoriser à l'aide de graphql-ruby
Android: Comment gérer "Impossible de déterminer la version Java à partir de '10 .0.1 '"
Comment publier une application à l'aide de la construction d'environnement d'instance AWS (3) EC2
[Android studio (version 4.0)] Jusqu'à la création du projet
Comment "évider" une vue sur Android
Comment insérer une bibliothèque externe
[Android] Comment créer un fragment de dialogue
Comment créer CloudStack à l'aide de Docker
[Android] Comment activer / désactiver le panneau de notification à l'aide de StatusBarManager
[Android] Comment transmettre des images et recevoir des rappels lors du partage à l'aide de ShareCompat
Comment recadrer une image avec libGDX
Comment trier une liste à l'aide du comparateur
[Rails] Comment télécharger des images à l'aide de Carrierwave
Comment brouiller l'image (super facile)
[Android] Comment gérer les thèmes sombres
[Java] Comment calculer l'âge à l'aide de LocalDate
Étapes pour publier une application sur Heroku
Comment définir un bean de classe interne
Java: Comment envoyer des valeurs du servlet au servlet
[Swift5] Comment mettre en œuvre une animation à l'aide de "lottie-ios"
Pour implémenter la publication d'images à l'aide de rails
Comment ajouter des informations sur la version de l'application aux informations Sentry
De Java à C et de C à Java dans Android Studio
Comment insérer des icônes à l'aide de Font awesome
[Swift] Comment générer un identifiant pour identifier de manière unique une certaine chose (en utilisant UUID)
Comment créer un formulaire Excel à l'aide d'un fichier modèle avec Spring MVC
Je crée une application Android et elle est bloquée par des erreurs et comment la résoudre