SDK-ul de Android nu oferă din păcate suport pentru trimiterea de mail-uri din cod, dar asta se poate face ușor folosind biblioteca JavaMail, care este atașată acestui post.
Se crează un AsyncTask pentru un Thread nou, care să implementeze toate cele patru metode și anume:
Metoda doInBackground se construiește astfel:
protected String doInBackground(String… mailMessage)
{
Properties props = new Properties();
props.put(“mail.smtp.host”, “smtp.gmail.com”);
props.put(“mail.smtp.socketFactory.port”, “465″);
props.put(“mail.smtp.socketFactory.class”,”javax.net.ssl.SSLSocketFactory”);
props.put(“mail.smtp.auth”, “true”);
props.put(“mail.smtp.port”, “465″);
Session session = Session.getDefaultInstance(props,
new javax.mail.Authenticator()
{
protected PasswordAuthentication getPasswordAuthentication()
{ return new PasswordAuthentication(“youremailaccount”,”youremailpassword”); }
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(“youremailaccount”));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(“receiversemailaccount”));
message.setSubject(“emailsubject”);
message.setText(“emailtext”);
Transport.send(message);
} catch (MessagingException e) {
throw new RuntimeException(e);
}
return null;
}
Prin celelalte metode implementate se pot crea, ferestre de dialog de atenționări, sau de confirmare la trimiterea mail-ului, chiar și un dialog pentru monitorizarea progresului, aici creativitatea este importantă.
Trimiterea mail-ului se face pe un Thread separat pentru a nu încarca aplicația.
Se face logarea prin SSL pe portul 465, iar apoi se construiește mesajul și în final se trimite mail-ul la adresa destinatarului. Este preferabil să se folosească un try-catch pentru tratarea erorilor.
Codul de mai sus funcționează cu Gmail și ar trebui să ruleze corect și pe alte servicii de mail care suportă conexiuni SMTP prin SSL.