[Version 2020] So senden Sie eine E-Mail mit Android Studio Javamail

Ich habe ein Programm zum Senden von E-Mails direkt aus der Anwendung in Android Studio unter Bezugnahme auf So senden Sie E-Mails von Android Zero mit Javamail geschrieben. Konnte aufgrund einer Reihe von Fehlern nicht erstellt werden. Die meisten Artikel wurden vor 2017 geschrieben (unabhängig davon, ob meine Methode falsch oder veraltet war), und keiner von ihnen funktionierte. Deshalb suchte ich nach der neuesten Einführungsmethode.

Fazit: Die Möglichkeit, eine JAR-Datei herunterzuladen und in eine Bibliothek zu importieren, ist alt!

Die Methode, die in den von mir gesuchten und gefundenen Artikeln häufig beschrieben wurde, bestand darin, drei JAR-Dateien von javamail-android herunterzuladen und manuell in den libs-Ordner von Android Studio zu kopieren und zu installieren. Ich habe jedoch festgestellt, dass es eingeführt werden kann, indem man es einfach in build.gradle schreibt, ohne so etwas zu tun, also werde ich schreiben, wie es geht.

: one: Beschrieben in AndroidManifest.xml (Internetzugriffsberechtigung)

Berechtigungen hinzufügen. Durch den Internetzugang müssen Benutzer Berechtigungen nicht mehr manuell aktivieren. Fügen Sie den folgenden Satz hinzu: <Verwendungsberechtigung 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>

: zwei: Beschrieben in Abhängigkeiten von build.gradle (App-Ebene)

Das ist der Punkt. Bitte fügen Sie die folgenden zwei Sätze hinzu.

build.gradle


dependencies {
···Kürzung···

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

: drei: Beschreiben Sie das Layout

Dieses Mal werde ich ein Programm schreiben, das eine E-Mail sendet, wenn die Taste gedrückt wird.

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="E-Mail-Sendetest"
        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="Senden" />

</LinearLayout>

: vier: Programmbeschreibung

Bitte ändern Sie die E-Mail-Adresse, das Passwort, den Titel und den Text Ihres Google-Kontos entsprechend. Darüber hinaus soll dieses Programm Ihnen eine E-Mail senden.

Wenn Sie die Zieladresse ändern möchten, lesen Sie bitte "msg.setRecipients (javax.mail.Message.RecipientType.TO, javax.mail.internet.InternetAddress.parse (account +" @ gmail.com "));Bitte ändern Sie das Konto + "@ gmail.com" in die Zieladresse. (Beispiel für das Senden vom eingegebenen Google-Konto an [email protected]:msg.setRecipients (javax.mail.Message.RecipientType.TO, javax.mail.internet.InternetAddress.parse (" [email protected] ")) ; `)

Sie können den Mail-Typ auch in CC oder BCC ändern oder an mehrere Adressen senden, indem Sie den Teil "javax.mail.Message.RecipientType.TO" ändern. (Klicken Sie hier für Details: 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("Name des Google Mail-Kontos (@gmail.Vor com)",
                        "Google Mail-Passwort","Testtitel","vollständig senden\n Schreiben Sie den Text hier") ;
            }
        });
    }

    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"));
                //Senden Sie sich eine 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)"Die Übertragung ist abgeschlossen";

        }
        @Override
        protected void onPostExecute(Object obj) {
            //Zeigen Sie eine Nachricht auf dem Bildschirm an
            Toast.makeText(MainActivity.this,(String)obj,Toast.LENGTH_LONG).show();
        }
    }
}

: iphone: Es sieht so aus, als ob es ausgeführt wurde

Tippen Sie auf die Schaltfläche "Senden", um die E-Mail zu senden. Wenn die Übertragung abgeschlossen ist, wird der Toast angezeigt. 2_R.png Empfangsbestätigung 1.png

: chain: Referenzseite

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] So senden Sie eine E-Mail mit Android Studio Javamail
So erstellen Sie eine App mit Tensorflow mit Android Studio
Senden Sie E-Mails mit JavaMail unter AWS
Erstellen Sie mit Android Studio eine ausführbare JAR-Datei
[Java] Senden Sie eine E-Mail mit Amazon SES
Verwendung von ExpandableListView in Android Studio
So erstellen Sie mit rbenv eine Umgebung für eine beliebige Version von Ruby
Ich möchte eine E-Mail in Java senden.
Wie erstelle ich Unity Native Plugin (Android-Version)
Wie schreibe ich React Native Bridge ~ Android-Version ~
Wie man einen imposanten Android-Musikplayer macht
[Android Studio] So ändern Sie TextView in eine beliebige Schriftart [Java]
Wie man einen Oleore-Generator mit Swagger Codegen herstellt
[Android Studio] [Java] So fixieren Sie den Bildschirm vertikal
Senden Sie eine E-Mail mit einem PDF-Anhang über JavaMail
So machen Sie einen Screenshot mit dem Android Studio-Emulator
Eine nicht unterstützte Java-Version So beseitigen Sie Fehler
So senken Sie die Java-Version
Ich möchte manuell eine Autorisierungs-E-Mail mit Devise senden
So überprüfen Sie die JSF-Version
[Spring Boot] Senden Sie eine E-Mail
Umgang mit Instanzen
So autorisieren Sie mit graphql-ruby
Android: Umgang mit "Java-Version von '10 .0.1 'konnte nicht ermittelt werden"
So veröffentlichen Sie eine Anwendung mithilfe der AWS (3) EC2-Instanzumgebungskonstruktion
[Android Studio (Version 4.0)] Bis zur Projekterstellung
Wie man eine Ansicht auf Android "aushöhlt"
So fügen Sie eine externe Bibliothek ein
[Android] So erstellen Sie ein Dialogfragment
So erstellen Sie CloudStack mit Docker
[Android] So aktivieren / deaktivieren Sie das Benachrichtigungsfeld mit StatusBarManager
[Android] Übergeben von Bildern und Empfangen von Rückrufen beim Teilen mit ShareCompat
So beschneiden Sie ein Bild in libGDX
So sortieren Sie eine Liste mit Comparator
[Rails] So laden Sie Bilder mit Carrierwave hoch
So verwischen Sie das Bild (super einfach)
[Android] Wie man mit dunklen Themen umgeht
[Java] So berechnen Sie das Alter mit LocalDate
Schritte zum Veröffentlichen einer Anwendung auf Heroku
So definieren Sie eine Bean der inneren Klasse
Java: So senden Sie Werte von Servlet zu Servlet
[Swift5] So implementieren Sie Animationen mit "lottie-ios"
So implementieren Sie die Image-Veröffentlichung mithilfe von Schienen
Hinzufügen von Informationen zur Anwendungsversion zu Sentry-Informationen
Von Java nach C und von C nach Java in Android Studio
So fügen Sie Symbole mit Font awesome ein
[Swift] So generieren Sie eine ID, um eine bestimmte Sache eindeutig zu identifizieren (mithilfe der UUID)
So erstellen Sie ein Excel-Formular mithilfe einer Vorlagendatei mit Spring MVC
Ich mache eine Android-App und sie steckt voller Fehler und wie man sie löst