I have used JavaMail-android libraries to send mail in background .In order to free user from username and password I decided to use Auth token generated when adding an acco
Hi its so simple and easy call your email sending class through Service it will work automatically email will send on particular time.
Here i have posted sample code:
you should write code in service as GMailSender sender = new GMailSender(send_id,send_pass,imgpath);
its for sending email through your gmail id only.
and now GmailSender.java as follows:
public class GMailSender extends javax.mail.Authenticator
{
private String mailhost = "smtp.gmail.com";
private String user;
private String password;
private Session session;
private String path_img;
static {
// AppLogger.LogError("Reached to Step1.1");
Security.addProvider(new JSSEProvider());
}
public GMailSender(String user, String password,String path)
{
path_img = path;
// AppLogger.LogError("Reached to Step1.2");
this.user = user;
this.password = password;
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");
//AppLogger.LogError("Reached to Step1.3");
session = Session.getDefaultInstance(props, this);
//AppLogger.LogError("Reached to Step1.4");
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, password);
}
public synchronized void sendMail(String subject, String body, String sender, String recipients) throws Exception {
try{
// AppLogger.LogError("Reached to Step1.5");
MimeMessage message = new MimeMessage(session);
// AppLogger.LogError("Reached to Step1.6");
DataHandler handler = new DataHandler(new ByteArrayDataSource(body.getBytes(), "text/html"));
message.setSender(new InternetAddress(sender));
message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(recipients));
//AppLogger.LogError("Reached to Step1.7");
message.setSubject(subject);
message.setDataHandler(handler);
MimeMultipart multipart = new MimeMultipart("related");
String htmlText=null;
BodyPart messageBodyPart = new MimeBodyPart();
htmlText = body+ "";
messageBodyPart.setContent(htmlText, "text/html");
MimeBodyPart attachmentPart = new MimeBodyPart();
FileDataSource fileDataSource = new FileDataSource(path_img) {
@Override
public String getContentType() {
return "image/jpg";
}
};
attachmentPart.setDataHandler(new DataHandler(fileDataSource));
attachmentPart.setFileName("image.jpg");
multipart.addBodyPart(messageBodyPart);
multipart.addBodyPart(attachmentPart);
message.setContent(multipart);
//AppLogger.LogError("Reached to Step1.8");
if (recipients.indexOf(',') > 0)
{
//AppLogger.LogError("Reached to Step1.9");
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients));
Transport.send(message);
// AppLogger.LogError("Reached to Step2.1");
}
else
{
//AppLogger.LogError("Reached to Step2.2");
message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));
Transport.send(message);
//AppLogger.LogError("Reached to Step2.3");
}
// Transport.send(message);
// AppLogger.LogError("Reached to Step2.4");
}catch (Exception e)
{
throw new FileNotFoundException();
}
}
public class ByteArrayDataSource implements DataSource {
private byte[] data;
private String type;
public ByteArrayDataSource(byte[] data, String type) {
super();
this.data = data;
this.type = type;
}
public ByteArrayDataSource(byte[] data) {
super();
this.data = data;
}
public void setType(String type) {
this.type = type;
}
public String getContentType() {
if (type == null)
return "application/octet-stream";
else
return type;
}
public InputStream getInputStream() throws IOException {
return new ByteArrayInputStream(data);
}
public String getName() {
return "ByteArrayDataSource";
}
public OutputStream getOutputStream() throws IOException {
throw new IOException("Not Supported");
}
}
try this sample and try for all email ids. and make sure that you have import all libraries needed..