/** * java发送带附件的邮件 * 周枫 * 2013.8.10 */ package com.dsideal.Util; import javax.mail.*; import javax.mail.internet.*; import java.util.*; import javax.activation.*; public class SendMail { private static String host = "smtp.qq.com"; // smtp服务器 private static String user = "95834073@qq.com"; // 用户名 private static String pwd = "******"; // 密码 /** * <p>功能:</p> * @author 周枫 * @date 2013-8-10 * @param "发送的邮箱", "接收的邮箱", "这个是收件箱列表标题名称", "发送邮件显示标题", "邮件正文", "附件名称","附件地址+名称" * @return void */ public static void send(String from,String to,String personalName,String subject,String mail_body,String affixName,String affix_url) { Properties props = new Properties(); // 设置发送邮件的邮件服务器的属性(这里使用网易的smtp服务器) props.put("mail.smtp.host", host); // 需要经过授权,也就是有户名和密码的校验,这样才能通过验证(一定要有这一条) props.put("mail.smtp.auth", "true"); // 用刚刚设置好的props对象构建一个session Session session = Session.getDefaultInstance(props); // 用session为参数定义消息对象 MimeMessage message = new MimeMessage(session); try { Address address = new InternetAddress(from,personalName); // 加载发件人地址 message.setFrom(address); // 加载收件人地址 message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // 加载标题 message.setSubject(subject); // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件 Multipart multipart = new MimeMultipart(); // 设置邮件的文本内容 BodyPart contentPart = new MimeBodyPart(); contentPart.setText(mail_body); multipart.addBodyPart(contentPart); // 添加附件 BodyPart messageBodyPart = new MimeBodyPart(); //解决中文乱码问题 DataSource source = new FileDataSource(affix_url); // 添加附件的内容 messageBodyPart.setDataHandler(new DataHandler(source)); // 添加附件的标题 // 这里很重要,不会变成乱码 messageBodyPart.setFileName(MimeUtility.encodeText(affixName)); multipart.addBodyPart(messageBodyPart); // 将multipart对象放到message中 message.setContent(multipart); // 保存邮件 message.saveChanges(); // 发送邮件 Transport transport = session.getTransport("smtp"); // 连接服务器的邮箱 transport.connect(host, user, pwd); // 把邮件发送出去 transport.sendMessage(message, message.getAllRecipients()); transport.close(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { SendMail.send("95834073@qq.com", "95834073@qq.com", "列表名称", "html页面标题", "周枫java发送邮件", "附件.txt", "D:"+File.separator+"temp周枫.txt"); System.out.println("邮件成功发送完成!"); } }
要用到的JAR包:http://files.cnblogs.com/littlehb/mail.rar (解压后放到Lib里)