android 邮件附件拷贝到应用程序,Android在发送带有附件的邮件

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

在android上发送邮件方式:

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

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

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

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

3b740b9184140378039ba93355901770.png

基于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文件

d8b76ef6a8e79133ec99d8dc4fbdba5e.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值