Android开发之JavaMail发送邮件(用户反馈)
2016-11-17 17:19
489 查看
给APP增加了一个用户反馈的小功能,由于懒的搭服务器,所以就用邮件的形式进行通信,有如下两种方式:
1.使用调用手机上的其他程序完成邮件发送
2.使用javamail进行邮件发送
这里果断使用javamail,因为我们大多数并不会在手机上使用邮件APP
使用javamail需要三个jar包,分别是additional.jar、mail.jar和activation.jar,可以到google官网下载:https://code.google.com/archive/p/javamail-android/downloads
我当时是因为没法上google的域名,baidu了好多,导包之后各种
http://download.csdn.net/detail/u012062785/9685867
eclipse导入jar包方法:
1.在项目的根目录下,新建文件夹libs,将下载的3个jar包放入该文件夹
2.选中项目,右键->Properties->Java Build Path->Libraries,选择Add External JARs,找到项目下lib目录的3个jar包,完成导入
接下来直接上源码
最后附录几个我遇到的问题
1.Authentication认证失败,是因为你的密码或者邮箱地址有误,163的邮箱尽量不要使用新申请的,而且这个密码是客户端授权密码,不是你的邮箱登录密码!
2. com.sun.mail.smtp.SMTPSendFailedException: 554 DT:SPM 163 smtp4,遇到这个问题是被反垃圾了==,在邮件标题或者邮件正文不要出现test或者helloworld的内容,否则网易会认为是垃圾邮件,导致无法发送出去。无法发送的原因可以参考http://help.163.com/09/1224/17/5RAJ4LMH00753VB8.html
最后调用new MailSend("邮件正文").sendMail();就可以发送出去了!!
1.使用调用手机上的其他程序完成邮件发送
2.使用javamail进行邮件发送
这里果断使用javamail,因为我们大多数并不会在手机上使用邮件APP
使用javamail需要三个jar包,分别是additional.jar、mail.jar和activation.jar,可以到google官网下载:https://code.google.com/archive/p/javamail-android/downloads
我当时是因为没法上google的域名,baidu了好多,导包之后各种
java.lang.NoClassDefFoundError: javax.activation.DataHandler 错误,这是因为导入的activation.jar包有问题,这里放上从google下载的:
http://download.csdn.net/detail/u012062785/9685867
eclipse导入jar包方法:
1.在项目的根目录下,新建文件夹libs,将下载的3个jar包放入该文件夹
2.选中项目,右键->Properties->Java Build Path->Libraries,选择Add External JARs,找到项目下lib目录的3个jar包,完成导入
接下来直接上源码
package com.pngcui.testmail; import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class MailSend { private String mailContext; public MailSend(String context){ this.mailContext = context; } public void sendMail() throws MessagingException{ Properties props = new Properties(); //使用smtp代理,且使用网易163邮箱 props.put("mail.smtp.host", "smtp.163.cn"); //设置验证 props.put("mail.smtp.auth", "true"); MyAuthenticator myauth = new MyAuthenticator("发件人邮箱@163.com", "密码"); Session session = Session.getInstance(props,myauth); //打开调试开关 session.setDebug(true); MimeMessage message = new MimeMessage(session); InternetAddress fromAddress = null; //发件人邮箱地址 fromAddress = new InternetAddress("发件人邮箱@163.com"); message.setFrom(fromAddress); InternetAddress toAddress = new InternetAddress("收件人邮箱地址"); message.addRecipient(Message.RecipientType.TO, toAddress); message.setSubject("邮件标题"); message.setText(mailContext);// 设置邮件内容 //message.setFileName("邮件附件"); message.saveChanges(); //存储信息 Transport transport = null; transport = session.getTransport("smtp"); transport.connect("smtp.163.com", "发件人邮箱@163.com", "密码"); transport.sendMessage(message, message.getAllRecipients()); transport.close(); } class MyAuthenticator extends javax.mail.Authenticator { private String strUser; private String strPwd; public MyAuthenticator(String user, String password) { this.strUser = user; this.strPwd = password; } @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(strUser, strPwd); } } }
最后附录几个我遇到的问题
1.Authentication认证失败,是因为你的密码或者邮箱地址有误,163的邮箱尽量不要使用新申请的,而且这个密码是客户端授权密码,不是你的邮箱登录密码!
2. com.sun.mail.smtp.SMTPSendFailedException: 554 DT:SPM 163 smtp4,遇到这个问题是被反垃圾了==,在邮件标题或者邮件正文不要出现test或者helloworld的内容,否则网易会认为是垃圾邮件,导致无法发送出去。无法发送的原因可以参考http://help.163.com/09/1224/17/5RAJ4LMH00753VB8.html
最后调用new MailSend("邮件正文").sendMail();就可以发送出去了!!
相关文章推荐
- android 邮件开发之javamail
- Android 发送邮件 JavaMail
- Android 发送邮件 JavaMail
- android 邮件开发之javamail
- android 邮件开发之javamail
- Android后台发送邮件实现用户反馈
- spring应用开发之javamail定时邮件发送
- Java + 腾讯企业邮箱 + javamail + SSL 发送邮件
- [置顶] 【java】javamail+freemarker生成邮件模板,并发送邮件
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板
- Java MailUtils邮件发送工具类 支持附件
- Mail Java实现邮件发送(带附件)
- Android开发中怎样调用系统Email发送邮件(多种调用方式)
- Java + 腾讯企业邮箱 + javamail + SSL 发送邮件(转载:http://www.cnblogs.com/LUA123/p/5575134.html)
- android使用javaemail实现发送邮件
- android使用javaemail发送邮件常见错误
- 使用Java.Mail 进行邮件发送
- Spring+javamail+velocity发送邮件
- java_mail 发送邮件
- java Spring的JavaMailSenderImpl邮件发送功能