Google+

Wednesday, June 8, 2011

Sending ThirdParty Email in Android

Hi All,
This is first step to send third party email from Android Application.


There are total 5 steps to create to send email application in android.
Please Compile program after complete all steps.
Yout have to add some external Library into Application. Find the Step 5 For the Same.


Step : 1 Write the Main Activity where you want to send email.


final Button send = (Button) this.findViewById(R.id.sentBtn);
send.setOnClickListener(new View.OnClickListener()
{
    public void onClick(View view)
    {
        //this is use to send email from which account
        GMailSender sender = new GMailSender("<Gmail UserName>", "<Ur PASSWORD>");
        try
        {
            // Add your Data like subject , message, senderEmail and email to
            sender.sendMail("Demo Transaction Receipt", "This is Demo Transaction email",
                            "<Sender Email Address>", "<email TO>");
        } catch (Exception e)
        {
            Log.e("SendMail", e.getMessage(), e);
        }
    }
});




Step : 2 --> Write the GMailSender where you have set you email sender setting. we are using Google setting  as we are sending email using Gmail account







//import necessary packages

public class GMailSender extends javax.mail.Authenticator
{
    private String mailhost = "smtp.gmail.com";
    private String user;
    private String password;
    private Session session;

    static
    {
          //you have to create JSSEProvider() please find the Class Below

          Security.addProvider(new JSSEProvider());
    }

    public GMailSender(String user, String password)
    {
        this.user = user;
        this.password = password;

        Properties props = new Properties();
        props.setProperty("mail.transport.protocol", "smtp");
        props.setProperty("mail.host", mailhost);
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.port", "465");
        props.put("mail.smtp.socketFactory.port", "465");
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.socketFactory.fallback", "false");
        props.setProperty("mail.smtp.quitwait", "false");

        session = Session.getDefaultInstance(props, this);
    }

    protected PasswordAuthentication getPasswordAuthentication()
    {
        return new PasswordAuthentication(user, password);
    }

    public synchronized void sendMail(String subject, String body, String sender, String recipients) throws Exception
    {
        try
        {
            MimeMessage message = new MimeMessage(session);
            DataHandler handler = new DataHandler(new ByteArrayDataSource(body.getBytes(), "text/html"));
            message.setSender(new InternetAddress(sender));
            message.setSubject("Demo Transaction Receipt");
            message.setDataHandler(handler);
            if (recipients.indexOf(',') > 0)
                message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients));
            else
                message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));
            Transport.send(message);
        } catch (MessagingException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (Exception e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    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");
        }
    }
}





Step : 3 Write the JSSEProvider for Security Setting



public final class JSSEProvider extends Provider
{

    public JSSEProvider()
    {
        super("HarmonyJSSE", 1.0, "Harmony JSSE Provider");
        AccessController.doPrivileged(new java.security.PrivilegedAction<Void>()
        {
            public Void run()
            {
                put("SSLContext.TLS", "org.apache.harmony.xnet.provider.jsse.SSLContextImpl");
                put("Alg.Alias.SSLContext.TLSv1", "TLS");
                put("KeyManagerFactory.X509", "org.apache.harmony.xnet.provider.jsse.KeyManagerFactoryImpl");
                put("TrustManagerFactory.X509", "org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl");
                return null;
            }
        });
    }
}




Step : 4 Setting Internet Permission in AndroidManifest.xml

 As We know, to send email we required Internet Connection and Permission to the application.
Add the following permission in AndroidMenifest.xml above <application Tag......></application>


<uses-permission android:name="android.permission.INTERNET"></uses-permission>




Step : 4 Adding External Library

To Send email we need to Add some External Library into an Application
Download the Following Libraries and follow the Steps


Activation.jar
Additionnal.jar
Mail.jar
 

 

How To add External Libraries in Eclipse Project
  1. Open Package Explorer
  2. Write Click on the Project
  3. Mouse Over on "Build Path" --> and select "Add External Archives"
  4. Select all the Libraries which you want to add. Here we are adding above libraries.
  5. Congratulation.
  
Now You Can Compile your project and send email.




Don't Forget to Leave Comments 
Google+