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.
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.
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>
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'
}
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>
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();
}
}
}
Tippen Sie auf die Schaltfläche "Senden", um die E-Mail zu senden. Wenn die Übertragung abgeschlossen ist, wird der Toast angezeigt. Empfangsbestätigung
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