javamail发送邮件

Java 官方也提供了对电子邮件协议封装的 Java 类库,就是JavaMail,但并没有包含到标准的 JDK 中,需要我们自己去官方下载。
需要用到两个jar包
mail.jar:http://www.oracle.com/technetwork/java/javamail/index-138643.html
activation.jar :http://www.oracle.com/technetwork/articles/java/index-135046.html

发送邮箱时 需要SMTP服务器,163、126、qq都有这个功能。
如163邮箱:
这里写图片描述

钩上开启smtp服务就可以。
126邮箱需要设置授权码,也就是使用stmp服务的密码

简单封装:

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.List;
import java.util.Properties;

public class MailUtils {
    private MimeMessage message;
    //组装最终的消息
    private MimeMultipart multipart = new MimeMultipart();

    public static MailUtils getMail() {
        MailUtils mailUtils = new MailUtils();
        mailUtils.init();
        return mailUtils;
    }

    private MailUtils init() {
        // 配置发送邮件的环境属性
        final Properties props = new Properties();

        // 表示SMTP发送邮件,需要进行身份验证
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.host", "smtp.126.com");
        // 发件人的账号
        props.put("mail.user", "xxx@126.com");
        // 访问SMTP服务时需要提供的密码
        //如果有授权码,只需要在这里填写授权码
        props.put("mail.password", "xxx");

        // 构建授权信息,用于进行SMTP进行身份验证
        Authenticator authenticator = new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                String userName = props.getProperty("mail.user");
                String password = props.getProperty("mail.password");
                return new PasswordAuthentication(userName, password);
            }
        };

        // 使用环境属性和授权信息,创建邮件会话
        Session mailSession = Session.getInstance(props, authenticator);
        // 创建邮件消息
        message = new MimeMessage(mailSession);
        // 设置发件人
        InternetAddress form = null;
        try {
            form = new InternetAddress(props.getProperty("mail.user"));
            message.setFrom(form);

            // 设置抄送
//            InternetAddress cc = new InternetAddress("abc@123.net");
//            message.setRecipient(MimeMessage.RecipientType.CC, cc);

            // 设置密送,其他的收件人不能看到密送的邮件地址
//            InternetAddress bcc = new InternetAddress("def@163.com");
//            message.setRecipient(MimeMessage.RecipientType.BCC, bcc);

        } catch (AddressException e) {
            e.printStackTrace();
        } catch (MessagingException e) {
            e.printStackTrace();
        }
        return this;
    }

    public MailUtils sendTo(String email){
        InternetAddress to = null;
        try {
            to = new InternetAddress(email);
            message.setRecipient(MimeMessage.RecipientType.TO, to);
        } catch (AddressException e) {
            e.printStackTrace();
        } catch (MessagingException e) {
            e.printStackTrace();
        }
        return this;
    }

    public MailUtils sendTo(String emails[]){
        try {
            InternetAddress to[] = new InternetAddress[emails.length];
            for (int i=0; i<emails.length; i++)
                to[i] = new InternetAddress(emails[i]);

            message.addRecipients(MimeMessage.RecipientType.TO, to);
        } catch (AddressException e) {
            e.printStackTrace();
        } catch (MessagingException e) {
            e.printStackTrace();
        }
        return this;
    }

    public boolean send() {
        // 发送邮件
        try {
            message.setContent(multipart);
            Transport.send(message);
        } catch (MessagingException e) {
            e.printStackTrace();
        }
        return true;
    }

    public MailUtils setTitle(String title) {
        // 设置邮件标题
        try {
            message.setSubject(title);
        } catch (MessagingException e) {
            e.printStackTrace();
        }
        return this;
    }

    //发送文本
    public MailUtils setText(String text) {
        try {
            MimeBodyPart contentPart = new MimeBodyPart();
            contentPart.setText(text);
            multipart.addBodyPart(contentPart);
        } catch (MessagingException e) {
            e.printStackTrace();
        }
        return this;
    }

    //发送html消息
    public MailUtils setContent(String content) {

        try {
            MimeBodyPart contentPart = new MimeBodyPart();
            contentPart.setContent(content, "text/html");
            multipart.addBodyPart(contentPart);
        } catch (MessagingException e) {
            e.printStackTrace();
        }

        return this;
    }

    //发送多个附件
    public MailUtils setFiles(List<String> filepaths) {
        for (String path : filepaths)
            setFile(path);

        return this;
    }

    //发送附件
    public MailUtils setFile(String filepath) {
        try {
            //创建文件部分
            MimeBodyPart filePart = new MimeBodyPart();
            DataSource source = new FileDataSource(filepath);
            filePart.setDataHandler(new DataHandler(source));
            multipart.addBodyPart(filePart);
        } catch (MessagingException e) {
            e.printStackTrace();
        }
        return this;
    }
}

使用:

 boolean res = MailUtils.getMail().sendTo("xxx@qq.com")
 .setTitle("==>title")
 .setText("123\n").setContent("\n<a>xyz.com</a>").setContent("321")
 .send();
 System.out.println("==>  "+res);

参考:
http://blog.csdn.net/xietansheng/article/details/51673073
http://www.runoob.com/java/java-sending-email.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值