java中发送电子邮件的使用

java中发送电子邮件的使用

一、简介

本文将介绍在java中,怎么发送电子邮件。这里使用apache的commons-email包进行电子邮件的发送,其可以发送简单的文本邮件、带html格式的邮件、带附件的邮件。

二、common-email包介绍

2.1 官方文档地址

http://commons.apache.org/proper/commons-email/userguide.html

2.2 maven依赖包

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-email</artifactId>
    <version>1.5</version>
</dependency>

2.3 关键类

  • SimpleEmail:发送简单的电子邮件;
  • MultiPartEmail:发送带附件的电子邮件;
  • HtmlEmail:发送带html标签的电子邮件(内嵌图片为url地址);
  • ImageHtmlEmail:发送带html标签的电子邮件(内嵌图片可为url地址,也可为本地地址,通过DataSourceResolver解析);
  • EmailAttachment:电子邮件的附件(附件可以为url地址[setURL],也可以为本地地址[setPath]);

三、配置发送电子邮件权限

3.1 开通smtp

以qq邮件服务器为例,首先要获取发电子邮件权限,即是开通smtp服务,流程如下:

打开qq邮箱->设置->帐户->POP3/SMTP服务 开启。

此时可以获取发送方的密码(注意:不是邮箱密码),用户名为发送方邮箱。

3.2 端口设置

  • STARTTLS:端口为25
  • SSL :端口为465

四、示例

import org.apache.commons.mail.*;
import org.apache.commons.mail.resolver.DataSourceCompositeResolver;
import org.apache.commons.mail.resolver.DataSourceFileResolver;
import org.apache.commons.mail.resolver.DataSourceUrlResolver;

import java.net.URL;

public class EmailPaperStudy {

    public static void main(String[] args) throws Exception {
        //发送简单文本邮件
        sendSimpleEmail();

        //发送带附件的邮件
        sendAttachEmail();

        //发送html格式的邮件(内嵌图片为url地址)
        sendHtmlEmail();

        //发送带html标签的电子邮件(内嵌图片可为url地址,也可为本地地址,通过DataSourceResolver解析)
        sendImageHtmlEmail();
    }

    /
     * 发送简单文本邮件
     *
     * @throws Exception
     */
    public static void sendSimpleEmail() throws Exception {
        Email email = new SimpleEmail();
        email.setSSLOnConnect(true);
        email.setCharset("utf-8");
        email.setDebug(true);
        email.setHostName("smtp.qq.com"); //邮件服务器地址
        email.setAuthentication("用户名", "smtp密码");  //用户名(即邮箱)和密码(不是邮箱密码,是邮箱开通smtp服务的密码)
        email.setFrom("发送方邮箱");
        email.addTo("接收方邮箱");

        email.setSubject("邮件标题");
        email.setMsg("邮件内容");

        email.send();
    }


    /
     * 发送带附件的邮件,且附件由url地址或本地文件提供
     *
     * @throws Exception
     */
    public static void sendAttachEmail() throws Exception {
        MultiPartEmail email = new MultiPartEmail();
        email.setHostName("smtp.qq.com");
        email.setSmtpPort(465);
        email.setSSLOnConnect(true);
        email.setCharset("utf-8");
        email.setDebug(true);

        email.setAuthentication("用户名", "smtp密码");
        email.setFrom("发送方邮箱");
        email.addTo("接收方邮箱");

        email.setSubject("邮件标题");
        email.setMsg("邮件内容");

        //可多个附件,操作完全一样
        EmailAttachment attach = new EmailAttachment();
        //附件由url地址提供
//        attach.setURL(new URL("http://dev.kf.sogou.com/file/lvshi/ai-lawyer/doc-templates/fc2880427add42d488c58df57236fd88.docx"));
        //附件由本地文件提供
        attach.setPath("C:/Users/panda/Pictures/bg1.jpg");
        attach.setDisposition(EmailAttachment.ATTACHMENT);
        attach.setName("附件名称.jpg");
        email.attach(attach);

        email.send();
    }


    /
     * 发送带html标签的电子邮件(内嵌图片为url地址)
     *
     * @throws Exception
     */
    public static void sendHtmlEmail() throws Exception {
        HtmlEmail email = new HtmlEmail();
        email.setHostName("smtp.qq.com");
        email.setSmtpPort(465);
        email.setSSLOnConnect(true);
        email.setCharset("utf-8");
        email.setDebug(true);

        email.setAuthentication("用户名", "smtp密码");
        email.setFrom("发送方邮箱");
        email.addTo("接收方邮箱");

        email.setSubject("邮件标题");

        email.setHtmlMsg("<html>" +
                "<a href='http://commons.apache.org/proper/commons-email/userguide.html'>邮件内容</a><br/>" +
                "<img src='https://bbsfiles.vivo.com.cn/vivobbs/attachment/forum/201801/01/103444furvn88o8u3futvu.jpg.thumb.jpg' />" +
                "</html>");

//        email.setHtmlMsg("<html><img src='C:/Users/panda/Pictures/bg1.jpg' /></html>"); //内嵌本地地址,是不生效的

        email.send();


        email.setSubject("邮件标题1");
        email.setHtmlMsg("<html>" +
                "<a href='http://commons.apache.org/proper/commons-email/userguide.html'>邮件内容</a><br/>" +
                "<img src='https://bbsfiles.vivo.com.cn/vivobbs/attachment/forum/201801/01/103444furvn88o8u3futvu.jpg.thumb.jpg' /><br/>" +
                "</html>");
        email.send();
    }

    /
     * 发送带html标签的电子邮件(内嵌图片可为url地址,也可为本地地址,通过DataSourceResolver解析)
     *
     * @throws Exception
     */
    public static void sendImageHtmlEmail() throws Exception {
        ImageHtmlEmail email = new ImageHtmlEmail();
        email.setHostName("smtp.qq.com");
        email.setSmtpPort(465);
        email.setSSLOnConnect(true);
        email.setCharset("utf-8");
        email.setDebug(true);

        //解析资源
        DataSourceResolver[] dataSourceResolvers = new DataSourceResolver[]{
                new DataSourceFileResolver(),//解析本地图片
                new DataSourceUrlResolver(new URL("http://"))};  //解析http地址的图片
        email.setDataSourceResolver(new DataSourceCompositeResolver(dataSourceResolvers));

        email.setAuthentication("用户名", "smtp密码");
        email.setFrom("发送方邮箱");
        email.addTo("接收方邮箱");

        email.setSubject("邮件标题");

        email.setHtmlMsg("<html>" +
                "<a href='http://commons.apache.org/proper/commons-email/userguide.html'>邮件内容</a><br/>" +
                "<img src='https://bbsfiles.vivo.com.cn/vivobbs/attachment/forum/201801/01/103444furvn88o8u3futvu.jpg.thumb.jpg' /><br/>" +
                "<img src='C:/Users/panda/Pictures/bg1.jpg' />" +
                "</html>");

        email.send();
    }
}
发布了274 篇原创文章 · 获赞 95 · 访问量 50万+

猜你喜欢

转载自blog.csdn.net/chinabestchina/article/details/105189320