Langsung ke konten utama

[DIY] How to Send Email With JavaMail On Android ~ DroidUMM


Nah, Sekarang bagaimana caranya menggunakan JavaMail di Android ? Semoga tutorial berikut membantu
Pertama download dulu file pendukungnya alias library di http://code.google.com/p/javamail-android/

sekarang saya mencoba mengirim email menggunakan android tanpa menggunakan Intent. Yups, saya menggunakan JavaMail .


1. Buat Project Android dulu.

2. Buat tampilan sederhana. Disini saya membuat simple dengan membuat satu button yang authentication, subject email dan isinya di deklarasikan pada sourcecode.






3. Tambahkan library yang sudah anda download di http://code.google.com/p/javamail-android/ tadi pada project android anda.


4. Selanjutnya kita membuat GMAIL sender

yang isinya sebagai berikut

package com.mailsender.adtmail;

import javax.activation.DataHandler;   
import javax.activation.DataSource;   
import javax.mail.Message;   
import javax.mail.PasswordAuthentication;   
import javax.mail.Session;   
import javax.mail.Transport;   
import javax.mail.internet.InternetAddress;   
import javax.mail.internet.MimeMessage;   
import java.io.ByteArrayInputStream;   
import java.io.IOException;   
import java.io.InputStream;   
import java.io.OutputStream;   
import java.security.Security;   
import java.util.Properties;   

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

    static {   
        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/plain"));   
        message.setSender(new InternetAddress(sender));   
        message.setSubject(subject);   
        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(Exception e){

        }
    }   

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

5. Buat Class baru lagi JSSEProvider

package com.mailsender.adtmail;

import java.security.AccessController;
import java.security.Provider;

public final class JSSEProvider extends Provider {

    /**
  * 
  */
 private static final long serialVersionUID = 1L;

 public JSSEProvider() {
        super("HarmonyJSSE", 1.0, "Harmony JSSE Provider");
        AccessController.doPrivileged(new java.security.PrivilegedAction() {
            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;
            }
        });
    }
}

6. Yang terakhir Buat Class Activitynya 
package com.mailsender.adtmail;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class MailSenderActivity extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        final Button send = (Button) this.findViewById(R.id.send);
        send.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub

                try {   
                    GMailSender sender = new GMailSender("zeatnoz@gmail.com", "eravagansa1989adem2o");
                    sender.sendMail("This is Subject",   
                            "This is Body",   
                            "zeatnoz@gmail.com",   
                            "sudarq@yahoo.co.id");   
                } catch (Exception e) {   
                    Log.e("SendMail", e.getMessage(), e);   
                } 

            }
        });

    }
}

Komentar

Postingan populer dari blog ini

WhatsAppSniffer Hack WhatsApp

Who uses WhatsApp Messenger? From The look of the  Play Store listing , a  damn lot  of people. Considering it's so popular, it's probably a pretty secure app, right? Think again. WhatsApp actually sends all chats in  plaintext , so anyone on the same Wi-Fi network can easily pull your entire conversation - including pictures and videos - straight out of the air. And now, that process is even easier than ever thanks to a new app called  WhatsAppSniffer . It's basically just a packet sniffer, but it makes the process of pulling WhatsApp chats out of the sky stupid-easy, and that's never a good thing. You might as well just shout your private conversations across the room.

[Concept] Model View Present (MVP) Pattern for Architecture Android~ DroidUMM

 Model-View-Presenter (MVP) is an architecture pattern for the presentation layer of software applications. The pattern was originally developed at Taligent in 1990s and first was implemented in C++ and Java. In MVP, the View and the Model are neatly separated and the View exposes a contract through which the Presenter access the portion of View that is dependent on the rest of the system.  [Next Article Implement MVP on Android] The Model is the component which preserves data, state and business logic; it just exposes a group of service interfaces to Presenter and hides the internal details. The View is the user interface, it receives user’s action and contract to Presenter to achieve user’s need, and then the View responds user by result information. The Presenter sits in between the View and the Model; it receives input from the View and passes commands down to the Model. It then gets result and updates the View trough the contracted View interface.

[News] Sistem Keamanan Apple dan Android Terancam ~ DroidUMM

Pengguna ponsel pintar dengan sistem operasi iOS dan Android harus lebih waspada. Sebab, satu dari 20 ponsel Apple dan android bisa terinfeksi oleh perangkat lunak berbahaya. Demikian diklaim oleh sebuah perusahaan keamanan.Mickey Boodaei, kepala eksekutif Trusteer mengklaim bahwa “para penipu telah mengambil dua langkah di depan” dan mengangkat kekhawatiran tentang keamanan, khususnya dari sistem operasi Google Android. Penipu tersebut diduga memiliki semua alat yang mereka butuhkan untuk mengubah malware mobile menjadi masalah keamanan terbesar. Diprediksikan, dalam 12 hingga 24 bulan, lebih  dari satu ponsel dalam skala 1 banding 20 atau 5,6 persen dari seluruh ponsel Android dan apple dapat terinfeksi oleh malware mobile jika para penipu mulai mengintegrasikan apa yang disebut sebagai kerentanan ‘ zero day’ (ancaman yang belum diantisipasi) dalam serangan mereka.