java中发送电子邮件的使用

一、简介
本文将介绍在java中,怎么发送电子邮件。这里使用apache的commons-email包进行电子邮件的发送,
其可以发送简单的文本邮件、带html格式的邮件、带附件的邮件。
二、common-email包介绍
1、官方文档地址
http://commons.apache.org/proper/commons-email/userguide.html
2、maven依赖包


    org.apache.commons
    commons-email
    1.5

3、关键类
a、SimpleEmail:发送简单的电子邮件
b、MultiPartEmail:发送带附件的电子邮件
d、HtmlEmail:发送带html标签的电子邮件(内嵌图片为url地址)
d、ImageHtmlEmail:发送带html标签的电子邮件(内嵌图片可为url地址,也可为本地地址,通过DataSourceResolver解析)
e、EmailAttachment:电子邮件的附件(附件可以为url地址[setURL],也可以为本地地址[setPath])
三、配置发送电子邮件权限
1、开通smtp
以qq邮件服务器为例,首先要获取发电子邮件权限,即是开通smtp服务,流程如下:
打开qq邮箱->设置->帐户->POP3/SMTP服务 开启。
此时可以获取发送方的密码(注意:不是邮箱密码),用户名为发送方邮箱。
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("" +
                "邮件内容
" + "" + ""); // email.setHtmlMsg(""); //内嵌本地地址,是不生效的 email.send(); email.setSubject("邮件标题1"); email.setHtmlMsg("" + "邮件内容
" + "
" + ""); 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("" + "邮件内容
" + "
" + "" + ""); email.send(); } }

 

你可能感兴趣的:(java)