博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android在发送带有附件的邮件
阅读量:6423 次
发布时间:2019-06-23

本文共 4268 字,大约阅读时间需要 14 分钟。

准备好工作了-下载最新的版本号JMail

在android上发送邮件方式:

第一种:借助GMail APPclient。缺点是必须使用GMail帐号,有点是比較方便

不须要写非常多代码。可是不是非常灵活。

另外一种:基于JMail实现。能够非常灵活的自己设置各种属性。不须要GMail帐号

在另外一种方式的实现之前。看一下JMail对EMail结构的划分:

基于SMTP协议发送EMail,所以client必须要知道SMTP的主机

腾讯邮件的SMTP主机为:stmp.qq.com端口为465基于SSL协议

最后我做了一个简单的封装,把发送文本加图像附件的功能做出了

一个单独的Class。仅仅要调用一下就可以完毕:

package com.gloomyfish.jmail.demo;import java.util.Date;import java.util.Properties;import javax.activation.DataHandler;import javax.activation.DataSource;import javax.activation.FileDataSource;import javax.mail.Address;import javax.mail.Message;import javax.mail.Multipart;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeBodyPart;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMultipart;public class EMailSender {	private String host;	private String port;	private String userName;	private String password;	private String[] images;	public String[] getImagePath() {		return images;	}	public void setImagePath(String[] imagePath) {		this.images = imagePath;	}	public EMailSender(String host, String port, String userName, String password) 	{		this.host = host;		this.port = port;		this.userName = userName;		this.password = password;	}	public void sendEmail(String subject, String recepits, String sender, String content) 	{		Properties props = new Properties();		props.put("mail.smtp.host", host);  //设置smtp的server地址		// props.put("mail.smtp.starttls.enable", "true");		// props.put("mail.smtp.port", port); // 设置端口		// props.put("mail.smtp.auth", "true"); //设置smtpserver要身份验证。

props.put("mail.smtp.socketFactory.port", port); props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.port", port); // 返回授权Base64编码 PopupAuthenticator auth = new PopupAuthenticator(userName, password); // 获取会话对象 Session session = Session.getInstance(props, auth); // 设置为DEBUG模式 session.setDebug(true); // 邮件内容对象组装 MimeMessage message = new MimeMessage(session); try { Address addressFrom = new InternetAddress(sender, "Jia Zhi Gang"); Address addressTo = new InternetAddress(recepits, "My QQ E-Mail"); message.setSubject(subject); message.setSentDate(new Date()); message.setFrom(addressFrom); message.addRecipient(Message.RecipientType.TO,addressTo); // 邮件文本/HTML内容 Multipart multipart = new MimeMultipart(); MimeBodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setContent(content, "text/html"); multipart.addBodyPart(messageBodyPart); // 加入邮件附件 if (images != null && images.length > 0) { for (String filePath : images) { MimeBodyPart attachPart = new MimeBodyPart(); DataSource source = new FileDataSource(filePath); attachPart.setDataHandler(new DataHandler(source)); attachPart.setFileName(filePath); multipart.addBodyPart(attachPart); } } // 保存邮件内容 message.setContent(multipart); // 获取SMTP协议client对象,连接到指定SMPTserver Transport transport = session.getTransport("smtp"); transport.connect(host, Integer.parseInt(port), userName, password); System.out.println("connet it success!!!!"); // 发送邮件到SMTPserver Thread.currentThread().setContextClassLoader( getClass().getClassLoader() ); Transport.send(message); System.out.println("send it success!!!!"); // 关闭连接 transport.close(); } catch(Exception e) { e.printStackTrace(); } } public String getHost() { return host; } public void setHost(String host) { this.host = host; } public String getPort() { return port; } public void setPort(String port) { this.port = port; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }

用户授权类:

package com.gloomyfish.jmail.demo;import javax.mail.Authenticator;import javax.mail.PasswordAuthentication;class PopupAuthenticator extends Authenticator {	private String userName;	private String password;	public PopupAuthenticator(String userName, String password)	{		this.userName = userName;		this.password = password;	}    public PasswordAuthentication getPasswordAuthentication() {        return new PasswordAuthentication(userName, password);    }}
特别注意:

1.在android上发送邮件必须自己导入三个相关的JAVA文件

上述JAR下载的文件已经在文章的开头给定!

你可能感兴趣的文章
stm 常用头文件
查看>>
mac 删除文件夹里所有的.svn文件
查看>>
程序制作 代写程序 软件定制 代写Assignment 网络IT支持服务
查看>>
mysql 案例~select引起的性能问题
查看>>
直接读取图层
查看>>
springsecurity 源码解读 之 RememberMeAuthenticationFilter
查看>>
HTML5标准学习 - 编码
查看>>
JS 时间戳转星期几 AND js时间戳判断时间几天前
查看>>
UVa11426 最大公约数之和(正版)
查看>>
mime
查看>>
SQL练习之求解填字游戏
查看>>
DOM
查看>>
关于网上商城开发的随笔记录1
查看>>
UIApplication
查看>>
12:Web及MySQL服务异常监测案例
查看>>
hdu 3955 March
查看>>
数据库性能优化之冗余字段的作用
查看>>
C语言程序设计第五次作业
查看>>
Go语言的接口
查看>>
DBA_实践指南系列9_Oracle Erp R12应用补丁AutoPatch/AutoControl/AutoConfig(案例)
查看>>