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.
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.
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>
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'
}
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>
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();
}
}
}
Appuyez sur le bouton «Envoyer» pour envoyer l'e-mail. Lorsque la transmission est terminée, le toast s'affiche. Confirmation de réception
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