java发送邮件(2)

   commons mail是对java mail的接口进行封装,使之使用起来能够更加方便,快捷。今天我们就来看看commons mail发送邮件应该怎么做呢?
   commons mail把java mail的接口封装成为一个抽象类org.apache.commons.mail.Email,此外Email又有四个子类分别是org.apache.commons.mail.SimpleEmail、org.apache.commons.mail.MultiPartEmail、org.apache.commons.mail.HtmlEmail和org.apache.commons.mail.ImageHtmlEmail。SimpleEmail负责发送基本的text邮件、MultiPartEmail负责发送带有附件的邮件,HtmlEmail负责发送HTML邮件,而ImageHtmlEmail则负责发送嵌有图片的邮件。
   这几个类的类图如下:
![这里写图片描述](https://img-blog.csdn.net/20150803225421322)
  因为对java mail做了比较好的封装,所以我们不用所有的邮件服务器地址、协议、内容、发件人、收件人等等的相关信息都直接在Email的子类中设置即可,设置完之后,就可以利用其子类直接发送信息。
下面我们来看看各类邮件发送的例子:
一、发送简单的文本邮件
public class BasicTextMailSender {
    public static void main(String[] args) throws EmailException {
        SimpleEmail mail = new SimpleEmail();

        mail.setHostName("smtp.163.com");
        mail.setSmtpPort(25);
        mail.setAuthenticator(new DefaultAuthenticator("choukakou@163.com", "BRZJH1SJHHRHL"));
        mail.setSSLOnConnect(true);
        mail.setFrom("choukakou@163.com");

        mail.setDebug(true);

        mail.setSubject("commons simple mail test");
        mail.setMsg("This is a mail sended by commons mail");
        mail.addTo("zhao.jiahong@yahoo.com");

        mail.send();

    }
}
二、发送HTML邮件
public class HtmlEmailSender {
    public static void main(String[] args) throws EmailException, MalformedURLException {
        HtmlEmail email = new HtmlEmail();

        email.setHostName("smtp.163.com");
        email.setFrom("choukakou@163.com", "me");
        email.setDebug(true);
        email.setSubject("attachment mail test");
        email.addTo("zhao.jiahong@yahoo.com");
        email.setAuthenticator(new DefaultAuthenticator("choukakou@163.com", "BRZJH1SJHHRHL"));
        URL url = new URL("http://pic.mmfile.net/2014/08/20140815mt05.jpg");
        String cid = email.embed(url, "beauty");

        email.setHtmlMsg("<html>beauty -<img src=\"cid:" + cid + "\"></html>");

        email.setTextMsg("your client does not support html messages");

        email.send();
    }
}
三、发送嵌入图片的邮件
public class HtmlWithImageEmailSender {
    public static void main(String[] args) throws MalformedURLException, EmailException {

        String htmlEmailTemplate = "...<img src=\"http://pic.mmfile.net/2014/10/30t01.jpg\"...";

        URL url = new URL("http://pic.mmfile.net");

        ImageHtmlEmail email = new ImageHtmlEmail();
        email.setDataSourceResolver(new DataSourceUrlResolver(url));
        email.setHostName("smtp.qq.com");
        email.setFrom("249745552@qq.com", "me");
        email.setDebug(true);
        email.setSubject("attachment mail test");
        email.addTo("zhao.jiahong@yahoo.com");
        email.setAuthenticator(new DefaultAuthenticator("249745552@qq.com", "linlinjiahong21"));

        email.setHtmlMsg(htmlEmailTemplate);

        email.setTextMsg("your client does not support html messages");

        email.send();
    }
}
四、发送带有附件的邮件
public class AttachmentEmailSender {
    public static void main(String[] args) throws EmailException {
        EmailAttachment attachment = new EmailAttachment();

        attachment.setPath("F:\\hello.txt");
        attachment.setDescription("chou");
        attachment.setDisposition(EmailAttachment.ATTACHMENT);
        attachment.setName("hello");

        MultiPartEmail mail = new MultiPartEmail();
        mail.setHostName("smtp.163.com");
        mail.setSmtpPort(25);
        mail.setAuthenticator(new DefaultAuthenticator("choukakou@163.com", "BRZJH1SJHHRHL"));
        mail.setSSLOnConnect(true);
        mail.setFrom("choukakou@163.com", "me");

        mail.setDebug(true);
        mail.setSubject("attachment mail test");
        mail.setMsg("This is a attachment mail sended by commons mail");
        mail.addTo("zhao.jiahong@yahoo.com");

        mail.attach(attachment);

        mail.send();
    }
}
我们可以看出来,经过commons mail对java mail相关接口的封装,我们发送邮件将变得很简单,并且方便操作。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值