/*** 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对象构建一个sessionSession 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里)