ENVOI DE MAIL DANS UNE
APPLICATION ANDROID EN JAVA
1°) Créer une boite mail, pour
tester, sous gmail par exemple
2°) Oter la
sécurité
·
Paramètres 
o Voir tous
les paramètres
§ Onglet
<Comptes et importations>
·
Autres paramètres de votre compte Google
o
Sécurité

3°) Exemple d'application
:
Après avoir créer un projet (empty activity), ajouter les 2 lignes
suivantes, à la fin des dépendances, dans le Module.app (en gras)
:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:2.0.4'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.sun.mail:android-mail:1.6.6'
implementation 'com.sun.mail:android-activation:1.6.7'
}
Exemple de code à utiliser dans l'application :
. . .
public class EcouteurBoutonEnvoiMail implements View.OnClickListener
{
@Override
public void onClick(View v)
{
PrepareMail envoi =new PrepareMail();
envoi.execute("formarmor.prod@gmail.com",
"mot de passe","Test envoi mail via appli Android Java..");
}
}
private class PrepareMail extends android.os.AsyncTask
{
@Override
protected Object doInBackground(Object... obj)
{
envoiMail(obj);
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();
}
private void envoiMail(Object[] obj)
{
//Configurer le serveur smtp+
Properties props=new Properties();
// Via gmail
props.put("mail.smtp.host", "smtp.gmail.com"); //smtp.mail.yahoo.fr pour Yahoo par exemple
props.put("mail.smtp.ssl.trust", "smtp.gmail.com"); //smtp.mail.yahoo.fr pour Yahoo par exemple
// Via Orange
//props.put("mail.smtp.host", "smtp.orange.fr");
//props.put("mail.smtp.ssl.trust", "smtp.orange.fr");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.port", "465");
props.put("mail.smtp.auth", "true");
// Pour autoriser une connexion "non sécurisée" : pour gmail notamment
props.setProperty("mail.smtp.starttls.enable", "true");
final String pseudo = (String) obj[0];
final String mdp = (String) obj[1];
//Création d'une session et envoi du pseudo et mot de passe
javax.mail.Session session= Session.getInstance(props, new javax.mail.Authenticator()
{
@Override
protected javax.mail.PasswordAuthentication getPasswordAuthentication()
{
return new javax.mail.PasswordAuthentication(pseudo, mdp);
}
});
//Créer message
MimeMessage msg=new MimeMessage(session);
try {
//Configurer expéditeur
InternetAddress adrExpediteur = new InternetAddress(expediteur);
msg.setFrom(adrExpediteur);
String fichier = "";
String[] destinataires = {"formarmor.prod@gmail.com"};
for (int j = 0; j < destinataires.length; j++)
{
//Configurer destinataire
InternetAddress[] adrDestinataires = new InternetAddress[1];
adrDestinataires[0] = new InternetAddress(destinataires[j]);
System.out.println("Destinataire:" + adrDestinataires[0]);
//Le deuxième paramètre est un tableau d'InternetAddress, même si un seul élément
msg.setRecipients(Message.RecipientType.TO, adrDestinataires);
// Préparation à l'ajout du message et de la pièce jointe
Multipart multipart = new MimeMultipart();
// creation partie principale du message
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText("ESSAI D'ENVOI VIA L'APPLI JAVA");
multipart.addBodyPart(messageBodyPart);
System.out.println("TEST1");
// création et ajout de la piece jointe
messageBodyPart = new MimeBodyPart();
fichier = Environment.getExternalStorageDirectory() + "/MonPremierPDF.pdf";
System.out.println("Fichier envoyé : " + fichier);
DataSource source = new FileDataSource(fichier);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(source.getName());
multipart.addBodyPart(messageBodyPart);
// Fin piece jointe
//Définition du sujet et du contenu du message(texte et pièce jointe)
msg.setSubject(sujet);
msg.setContent(multipart);
System.out.println("TEST2");
//les deux lignes suivantes sont ptionnelles
msg.setHeader("Exemple mail en java", "JAVAMAIL");
msg.setSentDate(new Date());
System.out.println("TEST3");
//Envoi du mail
try
{
Transport.send(msg);
}
catch(Exception e)
{
System.out.println("PROBLEME ENVOI:" + e.getMessage());
}
System.out.println("La transmission est terminée");
}
}
catch(MessagingException ex)
{
System.out.println("Erreur envoi mail : " + ex.getMessage());
}
}
}
. . .