Java邮件客户端发送邮件+附件
来源:互联网 发布:不义联盟网络对战模式 编辑:程序博客网 时间:2024/06/05 15:55
目前研究一下使用Java发送带有附件的邮件,从网上搜索了一下发现都存在各种各样的问题。在这里总结一下,展示一下基础代码,防止遗忘。
代码
public static boolean sendMail(String subject, String toMail, String content, String... files) { boolean isFlag = false; try { String smtpFromMail = "你的QQ号码@qq.com"; // 账号 String pwd = "QQ上面申请的授权码"; // 密码 int port = 465; // 端口 String host = "smtp.qq.com"; // 端口 Properties props = new Properties(); props.put("mail.smtp.host", host); props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); props.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(props); session.setDebug(false); MimeMessage message = new MimeMessage(session); try { message.setFrom(new InternetAddress(smtpFromMail, "QQ邮件测试")); message.addRecipient(Message.RecipientType.TO, new InternetAddress(toMail)); message.setSubject(subject); message.addHeader("charset", "UTF-8"); /* 添加正文内容 */ Multipart multipart = new MimeMultipart(); BodyPart contentPart = new MimeBodyPart(); contentPart.setText(content); contentPart.setHeader("Content-Type", "text/html; charset=UTF-8"); multipart.addBodyPart(contentPart); /* 添加附件 */ for (String file : files) { File usFile = new File(file); MimeBodyPart fileBody = new MimeBodyPart(); DataSource source = new FileDataSource(file); fileBody.setDataHandler(new DataHandler(source)); sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder(); fileBody.setFileName("=?GBK?B?" + enc.encode(usFile.getName().getBytes()) + "?="); multipart.addBodyPart(fileBody); } message.setContent(multipart); message.setSentDate(new Date()); message.saveChanges(); Transport transport = session.getTransport("smtp"); transport.connect(host, port, smtpFromMail, pwd); transport.sendMessage(message, message.getAllRecipients()); transport.close(); isFlag = true; } catch (Exception e) { isFlag = false; e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } return isFlag; } public static void main(String[] args) { boolean res = Main.sendMail("这是一封测试邮件", "想要发送的邮件地址", "朋友好久不见", "附件路径"); System.out.println("Resuylt: " + res); }
注
1、使用Java客户端配置QQ邮箱发送邮件,需要现在QQ邮箱网页上申请授权码,发送邮件时放在密码的位置;
2、特别需要注意发送邮件的标题、正文内容的编码格式问题,不然容易造成乱码现象。
阅读全文
1 0
- Java邮件客户端发送邮件+附件
- java 发送邮件+附件
- Java 发送邮件【附件】
- java Mail发送附件邮件
- java发送带附件邮件
- Java邮件发送带附件
- java发送邮件带附件
- Java发送邮件(带附件)
- Java发送邮件(带附件)
- Java 发送带附件邮件
- Java发送邮件(带附件)
- Java发送邮件(带附件)
- java发送邮件带附件
- Java实现邮件发送(附件)
- java发送带附件邮件
- Python 发送带附件邮件客户端
- java发送邮件(多人发送,附件)
- Java 发送邮件&发送正文&添加附件
- YII2框架学习 扩展篇(二) 事件机制
- 面试(动态规划算法之:最长公共子序列 & 最长公共子串(LCS))
- Dataset 列表:机器学习研究
- Flask-admin 学习及一些笔记
- 接sdk时遇到的一些问题:
- Java邮件客户端发送邮件+附件
- HBase架构与原理
- JavaWeb学习总结(七)——HttpServletResponse对象(一)
- 一次CPU占用过高事件的胡乱解决
- HDU 4424 Conquer a New Region【并查集】【思维题】
- 2111: [ZJOI2010]Perm 排列计数
- SOA标准之----SCA架构思想
- javaWeb过滤器
- 归并排序