按步骤来,首先dependencies引入,最新好像是1.6.7
implementation 'com.sun.mail:android-mail:1.6.0'
implementation 'com.sun.mail:android-activation:1.6.0'
新建两个类
public class EmailSend {
private static String _HOST = "smtp.qq.com";
public static boolean SendEmail(String _FileUrl) {
Properties props = new Properties();
props.put("mail.smtp.protocol", "smtp");
props.put("mail.smtp.auth", "true");//设置要验证
props.put("mail.smtp.host", _HOST);//设置host
props.put("mail.smtp.port", "25"); //设置端口
PassAuthenticator pass = new PassAuthenticator(); //获取帐号密码
Session session = Session.getInstance(props, pass); //获取验证会话
try {
//配置发送及接收邮箱
InternetAddress fromAddress, toAddress;
/**
* 这个地方需要改成自己的邮箱
*/
fromAddress = new InternetAddress(GlobeFile.FROMEMAIL);
toAddress = new InternetAddress(GlobeFile.TOEMAIL);
/**
* 一下内容是:发送邮件时添加附件
*/
MimeBodyPart attachPart = new MimeBodyPart();
FileDataSource fds = new FileDataSource(_FileUrl); //打开要发送的文件
attachPart.setDataHandler(new DataHandler(fds));
attachPart.setFileName(fds.getName());
Log.e("EmailSend",attachPart.getFileName());
MimeMultipart allMultipart = new MimeMultipart("mixed"); //附件
allMultipart.addBodyPart(attachPart);//添加
//设置邮件的正文
MimeBodyPart content = new MimeBodyPart();// 邮件的正文
content.setContent("附带的内容", "text/plain;charset=UTF-8");//指定正文,网络图片
allMultipart.addBodyPart(content);//添加正文
//配置发送信息
MimeMessage message = new MimeMessage(session);
//message.setContent("test", "text/plain");
message.setContent(allMultipart); //发邮件时添加附件
message.setSubject("Wenlong Yang");//标题可以写自己公司或者方便辨别的名字
message.setFrom(fromAddress);
message.addRecipient(javax.mail.Message.RecipientType.TO, toAddress);
message.saveChanges();
//连接邮箱并发送
Transport transport = session.getTransport("smtp");
/**
* 这个地方需要改称自己的账号和密码
*/
transport.connect(_HOST, GlobeFile.FROMEMAIL, GlobeFile.FROMPASSWORD);
transport.send(message);
transport.close();
return true;
} catch (Exception e) {
Log.e("sendmail", e.toString());
return false;
}
}
}
和
public class PassAuthenticator extends Authenticator {
public PasswordAuthentication getPasswordAuthentication() {
/**
* 这个地方需要添加上自己的邮箱的账号和密码
*/
String username = GlobeFile.FROMEMAIL;
String pwd = GlobeFile.FROMPASSWORD;
return new PasswordAuthentication(username, pwd);
}
}
全局项目文件里面的对应
//LOG发送的邮箱地址 public static final String FROMEMAIL = "我的@qq.com"; public static final String FROMPASSWORD = "授权码"; //LOG接收的邮箱地址 public static final String TOEMAIL = "收件@gmail.com";
最后就是使用,这个使用需要开一个子线称
例如
new Thread(new Runnable(){
@Override
public void run() {
if (EmailSend.SendEmail(GlobeFile.LOG_PATH_SDCARD_DIR + filename.getText().toString())) {
Log.e("tmp_composite:", "上报成功");
uiShow("日志上报成功");
} else {
Log.e("tmp_composite:", "上报失败");
uiShow("日志上报失败");
}
}
}).start();