Android使用Java Mail发送邮件
来源:互联网 发布:如何删除知乎回答 编辑:程序博客网 时间:2024/05/16 05:17
由于项目中有需求,所以试了一下在Android中使用Java Mail,在这里记录一下方便以后复制粘贴!
开始环境:
AndroidStudio 2.3.3
需要在build.gardle引入Java Mail相关库 :
compile 'com.sun.mail:android-mail:1.6.0'compile 'com.sun.mail:android-activation:1.6.0'
发送邮件需要权限:
<uses-permission android:name="android.permission.INTERNET"/>如果发送附件还需要:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
在这里使用QQ邮箱作为例子:
private void sendMail() throws Exception{ //host跟port可以到: //http://service.mail.qq.com/cgi-bin/help?subtype=1&&no=1000557&&id=20010 String host ="smtp.qq.com"; int port = 25; String user = "123456789@qq.com";//换成你自己的 String password = ""; Properties properties = System.getProperties(); properties.put("mail.smtp.starttls.enable", "true"); properties.put("mail.smtp.auth", "true"); // Session session = Session.getDefaultInstance(properties); MimeMessage message = new MimeMessage(session); ////设置发件人 message.setFrom("隔壁老王<123456789@qq.com>"); // MimeMultipart multipart = new MimeMultipart(); //邮件内容 MimeBodyPart text = new MimeBodyPart(); text.setText("窗前明月光,疑似地上霜,举头望明月,低头思故乡。", "UTF-8"); multipart.addBodyPart(text); // MimeBodyPart attachment = new MimeBodyPart(); //附件地址 attachment.attachFile(Environment.getExternalStorageDirectory().getAbsolutePath() + "/test.docx"); //附件名称,收件人收到附件显示的附件名称 attachment.setFileName("test.docx"); multipart.addBodyPart(attachment); //设置收件人 message.addRecipients(Message.RecipientType.TO, "987654321@qq.com"); //邮件主题 message.setSubject("Hello World", "UTF-8"); message.setContent(multipart); //发送时间 message.setSentDate(new Date()); //不传附件的话可以使用message.setText()设置邮件内容,否则message.setText()不起作用,接受者收不到内容 //message.setText("窗前明月光,疑似地上霜,举头望明月,低头思故乡。", "UTF-8"); // Transport transport = session.getTransport(); transport.connect(host, port, user, password); // transport.sendMessage(message, message.getAllRecipients()); transport.close();}
过程中遇到了附件名称中文乱码问题,可以使用
MimeUtility.encodeText(String text)
例子:
String name = MimeUtility.encodeText("小明.docx")
如果邮件名称过长的话使用MeneUtility.encodeText()还是会出现问题的
例子:
String name = MimeUtility.encodeText("小明 2017.08.11 王大明 135****5436.doc")
这样的附件名称在收件人那边会显示:tcmime.1245.1725.5276.bin
解决办法是,加上这行代码:
properties.put("mail.mime.splitlongparameters","false");
这个问题我找了好久都没能自己解决,最后在这里找到答案了:
http://blog.csdn.net/wty19/article/details/50607411
感谢wty19
阅读全文
0 0
- Android使用Java Mail发送邮件
- Android 使用Java Mail发送邮件
- 使用java mail 发送邮件
- 使用Java Mail发送邮件
- java 使用 mail 发送邮件
- 使用Java Mail发送邮件
- 使用Java Mail发送邮件
- 使用Java发送邮件(javax.mail)
- 【JAVA】使用javax.mail发送邮件
- Java使用javax.mail发送邮件
- java使用javax.mail.jar发送邮件
- 【JAVA】使用javax.mail发送邮件
- Android 发送邮件mail
- Java Mail 发送邮件
- JAVA MAIL发送邮件
- Java Mail 发送邮件
- Java mail发送邮件
- java mail 发送邮件
- SSM整合 -- 在Eclipse怎么创建一个Maven项目
- spring 模板引擎
- QT-数据库操作(以MYSQL为例)
- 第一次使用Java写pat
- 继承,super,this关键字及构造器
- Android使用Java Mail发送邮件
- 利用fiddler将本地网页放到某个域下
- 修改自己git的别名
- 防止 Android 内存泄漏的 8 种方法
- input和select在设置同样的宽度下长度不一。
- CAN总线(一)
- http://www.cnblogs.com/zhbsh/archive/2013/04/22/3035477.html
- DOM导航
- EasyRMS录像服务器如何实现精确查找: HLLS+M3U8录像回放