用java发送邮件(黄海已测试通过)

/**
 * 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包:https://files.cnblogs.com/littlehb/mail.rar    (解压后放到Lib里)

posted @ 2013-07-27 10:19  糖豆爸爸  阅读(902)  评论(1编辑  收藏  举报
Live2D