android 自动推送,安卓实现自动发送邮件的功能

67fbd42e0162

我们在安卓开发中,可能需要安卓发送邮件的功能。往往,我们必须手动输入账号和密码后发生邮件。这种方式费时费力,因此在这里介绍使用一种方法实现自动发送邮件的功能,我们可以用其收集bug发送邮箱等功能的实现。

一 下载jar包

Android实现发送邮件,首先需要依赖additional.jar、mail.jar和activation.jar这3个jar包。

首先前往百度网盘 密码: 8s5b下载所需要的jar包,然后将其放入app/libs文件加下

二 创建发送邮件所需要的EmailSender 类

/**

* Created by cs_android on 2018/1/16.

*/

import java.io.File;

import java.util.Date;

import java.util.Properties;

import javax.activation.DataHandler;

import javax.activation.FileDataSource;

import javax.mail.Address;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.AddressException;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeBodyPart;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMultipart;

public class EmailSender {

private Properties properties;

private Session session;

private Message message;

private MimeMultipart multipart;

public EmailSender() {

this.properties = new Properties();

}

public void setProperties(String host,String post){

//地址

this.properties.put("mail.smtp.host",host);

//端口号

this.properties.put("mail.smtp.post",post);

//是否验证

this.properties.put("mail.smtp.auth",true);

this.session=Session.getInstance(properties);

this.message = new MimeMessage(session);

this.multipart = new MimeMultipart("mixed");

}

/**

* 设置收件人

* @param receiver 收件人

* @throws MessagingException

*/

public void setReceiver(String[] receiver) throws MessagingException{

Address[] address = new InternetAddress[receiver.length];

for(int i=0;i

address[i] = new InternetAddress(receiver[i]);

}

this.message.setRecipients(Message.RecipientType.TO, address);

}

/**

* 设置邮件

* @param from 来源

* @param title 标题

* @param content 内容

* @throws AddressException

* @throws MessagingException

*/

public void setMessage(String from,String title,String content) throws AddressException, MessagingException{

this.message.setFrom(new InternetAddress(from));

this.message.setSubject(title);

//纯文本的话用setText()就行,不过有附件就显示不出来内容了

MimeBodyPart textBody = new MimeBodyPart();

textBody.setContent(content,"text/html;charset=gbk");

this.multipart.addBodyPart(textBody);

}

/**

* 添加附件

* @param filePath 文件路径

* @throws MessagingException

*/

public void addAttachment(String filePath) throws MessagingException{

FileDataSource fileDataSource = new FileDataSource(new File(filePath));

DataHandler dataHandler = new DataHandler(fileDataSource);

MimeBodyPart mimeBodyPart = new MimeBodyPart();

mimeBodyPart.setDataHandler(dataHandler);

mimeBodyPart.setFileName(fileDataSource.getName());

this.multipart.addBodyPart(mimeBodyPart);

}

/**

* 发送邮件

* @param host 地址

* @param account 账户名

* @param pwd 密码

* @throws MessagingException

*/

public void sendEmail(String host,String account,String pwd) throws MessagingException{

//发送时间

this.message.setSentDate(new Date());

//发送的内容,文本和附件

this.message.setContent(this.multipart);

this.message.saveChanges();

//创建邮件发送对象,并指定其使用SMTP协议发送邮件

Transport transport=session.getTransport("smtp");

//登录邮箱

transport.connect(host,account,pwd);

//发送邮件

transport.sendMessage(message, message.getAllRecipients());

//关闭连接

transport.close();

}

}

三 发送邮件

//耗时操作要起子线程

new Thread(new Runnable() {

@Override

public void run() {

try {

EmailSender sender = new EmailSender();

//设置服务器地址和端口,可以查询网络

sender.setProperties("smtp.163.com", "25");

//分别设置发件人,邮件标题和文本内容

sender.setMessage("×××××××××@163.com", "title" + "-" +

"content");

//设置收件人

sender.setReceiver(new String[]{"×××××××@163.com"});

//添加附件换成你手机里正确的路径

// sender.addAttachment("/sdcard/emil/emil.txt");

//发送邮件

//sender.setMessage("你的163邮箱账号", "EmailS//ender", "Java Mail !");这里面两个邮箱账号要一致

sender.sendEmail("smtp.163.com", "*****@163.com", "password");

} catch (AddressException e) {

e.printStackTrace();

} catch (MessagingException e) {

e.printStackTrace();

}

}

}).start();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值