android发送QQ邮件(带附件)

来源:互联网 发布:建筑学书籍知乎 编辑:程序博客网 时间:2024/05/17 07:13

本文转载自https://my.oschina.net/chenhao901007/blog/373883,谢谢!

package com.dailywork.util;import java.io.UnsupportedEncodingException;import java.util.List;import java.util.Properties;import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.BodyPart;import javax.mail.Message;import javax.mail.MessagingException;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;import javax.mail.internet.MimeUtility;public class EmailManager {private Properties props; // 系统属性private Session session; // 邮件会话对象private MimeMessage mimeMsg; // MIME邮件对象private Multipart mp; // Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象/** * Constructor *  * @param smtp *            邮件发送服务器 */public EmailManager() {props = System.getProperties();props.put("mail.smtp.auth", "false");session = Session.getDefaultInstance(props, null);session.setDebug(true);mimeMsg = new MimeMessage(session);mp = new MimeMultipart();}/** * Constructor *  * @param smtp *            邮件发送服务器 */public EmailManager(String smtp, String username, String password) {props = System.getProperties();props.put("mail.smtp.auth", "true");props.put("mail.smtp.host", smtp);props.put("username", username);props.put("password", password);props.setProperty("mail.transport.protocol", "smtp");props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");// ssl方式session = Session.getDefaultInstance(props, null);session.setDebug(true);mimeMsg = new MimeMessage(session);mp = new MimeMultipart();}/** * 发送邮件 */public boolean sendMail(String from, String[] to, String[] copyto, String subject, String content,List<String> files, int port) {try {// 设置发信人mimeMsg.setFrom(new InternetAddress(from));// 设置接收人for (int i = 0; i < to.length; i++) {mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to[i]));}// 设置抄送人if (copyto != null && copyto.length > 0) {for (int i = 0; i < copyto.length; i++) {mimeMsg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(copyto[i]));}}// 设置主题mimeMsg.setSubject(subject);// 设置正文for (String file : files) {BodyPart bp = new MimeBodyPart();bp.setContent(content, "text/html;charset=utf-8");mp.addBodyPart(bp);// 设置附件bp = new MimeBodyPart();FileDataSource fileds = new FileDataSource(file);bp.setDataHandler(new DataHandler(fileds));bp.setFileName(MimeUtility.encodeText(fileds.getName(), "UTF-8", "B"));mp.addBodyPart(bp);mimeMsg.setContent(mp);}mimeMsg.saveChanges();// 发送邮件if (props.get("mail.smtp.auth").equals("true")) {Transport transport = session.getTransport("smtp");transport.connect((String) props.get("mail.smtp.host"), port, (String) props.get("username"),(String) props.get("password"));transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO));// transport.sendMessage(mimeMsg,// mimeMsg.getRecipients(Message.RecipientType.CC));transport.close();} else {Transport.send(mimeMsg);}System.out.println("邮件发送成功");} catch (MessagingException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch blocke.printStackTrace();}return true;}}
调用发送邮件函数:

public void sendMail() {String smtp = "smtp.qq.com";String username = "@qq.com";String password = "";String from = "@qq.com";String[] to = { "@qq.com" };String subject = "日志";String content = "你好!<br/>本邮件发送自" + android.os.Build.MODEL + "。";String folder = Environment.getExternalStorageDirectory() + File.separator + AppUtil.toPath(this)+ File.separator + "logs" + File.separator; //获取目录路径List<String> files = FileUtil.findFiles(folder); //获取文件夹下所有文件的绝对路径EmailManager email = new EmailManager(smtp, username, password);if(email.sendMail(from, to, null, subject, content, files, 465)) {for(String file : files) {FileUtil.deleteFile(file);}}}



0 0
原创粉丝点击