Inviare email da Android
Oggi vediamo come inviare email da una nostra app in Android.
La classe che vedremo è alquanto semplice, ed è composta da due metodi: uno per l'invio senza allegato e l'altro per l'invio anche di un allegato.
Prima di tutto impostiamo i permessi nel manifest:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
L'invio delle email richiede l'accesso a internet ovviamente.
A questo punto vediamo la classe:
import java.io.File;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
public class SendEmail {
public static void sendWithAttach(Context ctx, String from) {
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("message/rfc822");
i.putExtra(Intent.EXTRA_SUBJECT, "Lista films");
i.putExtra(Intent.EXTRA_TEXT, "Ciao!");
if (!from.isEmpty()) {
i.putExtra(Intent.EXTRA_EMAIL, new String[] { "mia_email@email.it" });
}
ctx.startActivity(Intent.createChooser(i, "Scegli un programma: "));
}
public static void sendWithAttach(Context ctx, String from, String attach) {
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("message/rfc822");
i.putExtra(Intent.EXTRA_SUBJECT, "Lista films");
i.putExtra(Intent.EXTRA_TEXT, "In allegato il file!");
if (!from.isEmpty()) {
i.putExtra(Intent.EXTRA_EMAIL, new String[] { "mia_email@email.it" });
}
File f = new File(attach);
if (f.exists()) {
Uri u = null;
if (f.exists()) {
u = Uri.parse("file://" + f);
}
i.putExtra(Intent.EXTRA_STREAM, u);
ctx.startActivity(Intent.createChooser(i, "Scegli un programma: "));
}
}
}
Come vedete il secondo metodo richiede un parametro in più, che corrsiponde al file da inviare.
Una volta lanciato, il metodo richiederà il programma che si vuole usare pe inviare le email, mettendo a disposizione la classica lista delle app disponibili.
Una volta scelto il client, verrà impostata l'email del mittente, il soggetto e il testo dell'email in automatico a seconda dei valori impostati.
Qui li abbiamo impostati da programma, ma sarebbe meglio farlo da app, oppure lasciarli vuoti; questo dipende da voi.
Per richiamare il metodo:
SendEmail.sendWithAttach(this, "", "PERCORSO_FILE");
Molto easy!
Enjoy!
java android email manifest intent context
Commentami!