1. 添加对如下jar包的引用activation.jar, additionnal.jar, mail.jar

2. 添加访问internet的权限

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


3. 实现如下两个类:

import java.security.AccessController;import java.security.Provider;public 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;             }         });     } }


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


4. 使用方法:

public class SendEmailTestActivity extends Activity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                Button btnSend = (Button)findViewById(R.id.btnSend);        btnSend.setOnClickListener( new OnClickListener(){@Overridepublic void onClick(View arg0) {try {                   //发送方的邮箱名及密码。                    GMailSender sender = new GMailSender("*******@gmail.com", "*******");                     sender.sendMail("This is Subject",    //主题                            "This is Body",    //正文                            "xxx@gmail.com",  //发送人                              "*******@gmail.com"); //收件人,不一定非得gmail其他邮箱比如163,qq邮箱都行。                    Toast.makeText(getBaseContext(), "发送成功!",Toast.LENGTH_LONG).show();                } catch (Exception e) {                        Log.e("SendMail", e.getMessage(), e);                       Toast.makeText(getBaseContext(), "发送失败"+e.getMessage(),Toast.LENGTH_LONG).show();                                } }        });    }}


更多相关文章

  1. Android(安卓)Jni代码示例讲解
  2. Android面试知识点总结-Android篇
  3. Android(安卓)HttpClient GET或者POST请求基本使用方法
  4. android之listview使用方法(一)
  5. [Android]滑动刷新ListView——android-pulltorefresh使用方法解
  6. Google_android_JNI使用方法
  7. Android(安卓)学习路线总结
  8. Android配置QQ邮箱问题
  9. Android中使用google Analytics

随机推荐

  1. Android蓝牙开发
  2. android关闭整个应用程序
  3. 百度地图申请密钥Android SDK
  4. Android菜鸟的成长笔记(7)——什么是Activi
  5. android String与HTML的相互转换
  6. android 3.0中加快启动模拟器
  7. 理解Android安全机制
  8. Android Studio中获取sha1证书的方法
  9. LinearLayout
  10. Android中使用webview和web页面的一些交