Android应用使用JavaMail发送邮件
2013-10-25 20:09
721 查看
Android项目开发需求,不能使用系统的意图邮件发送方式,需要自定义发送格式。所以想到了Java API中是否有发送邮件的方法。先网上搜一下吧,javaMail,Google上一搜,讲解,代码,真心不少,但是找了一个试试,发送不成功,再找一个复制过来还是有点问题。唉,真是废了不少时间,我想说网上贴代码的不一定都是好心。看了好多资料,还不如照着网上找的资料,自己去改改试试。因为找到的代码几乎都是重复的,其实流程都已经很清楚了。
现在呢,经过修改,调试,终于发送成功了。所以在这里分享给大家。
以上是监听发送按钮,收集数据,调用发送工具发送邮件,在子线程完成。其中MessageInfo是自己封装出来的发送邮件需要的内容和配置信息。主要需要设置的信息有,发送者邮箱的用户名,邮箱密码,接收者邮箱,主题,正文内容,附件(如果想附加的话),服务器host地址,服务器监听端口,一般都服务器都是在25端口监听。MailSenderUtils就是自己封装出来的发送邮件的工具(其实很多代码都是从网上copy过来的)。
下面看一下发送工具里的代码:
注释写的很清楚,这里是从别人代码里copy的,自己添加了支持附件传送。
最后发送成功,喽一眼截图:
当然看这些都不如有源码,然后运行到手机上一试。想看源码的同志,下载地址:
http://download.csdn.net/detail/wangduanqing5945/6454451 需要积分3分,毕竟花了我一点时间的,如果没有分的同志,或者运行源码不能发送成功的,1181219972,QQ我。我想一般也没有必要,我都是测试过的。应该能发送成功。
现在呢,经过修改,调试,终于发送成功了。所以在这里分享给大家。
MessageInfo mailInfo = new MessageInfo(); if (MAIL_SEND_WAY == MAIL_SEND_WAY_QQ) { mailInfo.setMailServerHost("smtp.qq.com"); } else if (MAIL_SEND_WAY == MAIL_SEND_WAY_163) { mailInfo.setMailServerHost("smtp.163.com"); } mailInfo.setMailServerPort("25"); mailInfo.setValidate(true);//是否需要验证用户名和密码 mailInfo.setUserName(username.getText().toString().trim()); mailInfo.setPassword(password.getText().toString().trim()); mailInfo.setFromAddress(username.getText().toString() .trim()); mailInfo.setToAddress(receiver.getText().toString().trim()); mailInfo.setSubject(subject.getText().toString().trim()); mailInfo.setContent(body.getText().toString().trim()); mailInfo.setAttachFileNames(new String[] { nativeFilePath }); MailSenderUtils sms = new MailSenderUtils(); // sms.sendTextMail(mailInfo); sendResult = sms.sendMail(mailInfo); handler.sendEmptyMessage(10);
以上是监听发送按钮,收集数据,调用发送工具发送邮件,在子线程完成。其中MessageInfo是自己封装出来的发送邮件需要的内容和配置信息。主要需要设置的信息有,发送者邮箱的用户名,邮箱密码,接收者邮箱,主题,正文内容,附件(如果想附加的话),服务器host地址,服务器监听端口,一般都服务器都是在25端口监听。MailSenderUtils就是自己封装出来的发送邮件的工具(其实很多代码都是从网上copy过来的)。
下面看一下发送工具里的代码:
// 判断是否需要身份认证 MyAuthenticator authenticator = null; Properties pro = mailInfo.getProperties(); // 如果需要身份认证,则创建一个密码验证器 if (mailInfo.isValidate()) { authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); } // 根据邮件会话属性和密码验证器构造一个发送邮件的session Session sendMailSession = Session .getDefaultInstance(pro, authenticator); // 根据session创建一个邮件消息 Message mailMessage = new MimeMessage(sendMailSession); // 创建邮件发送者地址 Address from = new InternetAddress(mailInfo.getFromAddress()); // 设置邮件消息的发送者 mailMessage.setFrom(from); // 创建邮件的接收者地址,并设置到邮件消息中 Address to = new InternetAddress(mailInfo.getToAddress()); // Message.RecipientType.TO属性表示接收者的类型为TO mailMessage.setRecipient(Message.RecipientType.TO, to); // 设置邮件消息的主题 mailMessage.setSubject(mailInfo.getSubject()); // 设置邮件消息发送的时间 mailMessage.setSentDate(new Date()); // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象 Multipart mainPart = new MimeMultipart(); // 创建一个包含HTML内容的MimeBodyPart BodyPart html = new MimeBodyPart(); if (null != mailInfo.getAttachFileNames()) { for (int i = 0; i < mailInfo.getAttachFileNames().length; i++) { File file = new File(mailInfo.getAttachFileNames()[i]); MimeBodyPart mbp = new MimeBodyPart(); mbp.attachFile(file); mainPart.addBodyPart(mbp); } } // 设置邮件正文内容,使其支持html标签 html.setContent(mailInfo.getContent(), "text/html; charset=utf-8"); mainPart.addBodyPart(html); // 将MiniMultipart对象设置为邮件内容 mailMessage.setContent(mainPart); // 发送邮件 Transport.send(mailMessage);
注释写的很清楚,这里是从别人代码里copy的,自己添加了支持附件传送。
最后发送成功,喽一眼截图:
当然看这些都不如有源码,然后运行到手机上一试。想看源码的同志,下载地址:
http://download.csdn.net/detail/wangduanqing5945/6454451 需要积分3分,毕竟花了我一点时间的,如果没有分的同志,或者运行源码不能发送成功的,1181219972,QQ我。我想一般也没有必要,我都是测试过的。应该能发送成功。
相关文章推荐
- android用jsoup分析网页
- android学习_android的第一个程序
- Android中对话框的使用
- Android中如何做到Service被关闭后又自动启动
- 关于Ubuntu 13.04 64位系统配置Android SDK环境变量的问题
- android运行时发现异常 Unresolved compilation problem
- Android游戏开发测量每秒帧数 Frames Per Second (FPS)
- 关于Android动画之Tween
- Android服务端本地窗口FramebufferNativeWindow
- Android 头 5 年最重要的 20 个里程碑
- android EditText 自动滚动条并显示最新内容 .
- Android中用Spannable在TextView中设置超链接、颜色、字体
- android Activity之间的跳转
- [JAR包] android引入JAR包,打包成JAR包,打包成Library项目,导入Library项目
- Android最佳实践之:StrictMode介绍
- [转]ANDROID JNI之JAVA域与c域的互操作
- Android】Android apk默认安装位置设置
- [Android] 文字翻转动画的实现
- [Android] SurfaceView使用实例(正余弦移动)
- Android蓝牙开发深入解析