java 发送邮件

原创 2018年04月15日 15:34:02

原文:java 发送邮件工具类,发送html、带附件的均可

 

依赖:

  • 第三方jar包

commons-email-1.3.3.jar

1
2
3
4
5
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-email</artifactId>
    <version>1.3.3</version>
</dependency>

  

commons-io-2.4.jar

1
2
3
4
5
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.4</version>
</dependency>

  

classpath新增res.properties配置文件

1
2
3
4
5
6
7
8
9
10
11
12
#设置邮件服务器
send_email_host_name=smtp.qq.com
#设置是否使用安全连接
send_email_use_ssl=true
#设置安全连接端口号
send_email_ssl_port=456
#发送Email编码
send_email_charset=UTF-8
#发送Email用户名
send_email_user_name=xx@xx.com
#发送Email密码
send_email_user_pwd=xx

  

EmailUtil.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
package com;
 
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
 
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.apache.commons.mail.MultiPartEmail;
import org.apache.commons.mail.SimpleEmail;
 
import sun.misc.BASE64Encoder;
 
 
/**
 * 依赖jar包,commons-email-.*.*.*.jar,commons-io-*.*.jar
 * <pre>
 * 类名称    : EmailUtils
 * 类描述    : 发送Emial(发送纯文本的邮件,带附件的邮件,html的邮件)
 * </pre>
 */
public class EmailUtil {
 
 
 
    //设置邮件服务器
    private static final String send_email_host_name = PropertiesUtil.getParam("send_email_host_name");
 
    //设置是否使用安全连接
    private static final String send_email_use_ssl = PropertiesUtil.getParam("send_email_use_ssl");
 
    //设置安全连接端口号
    private static final String  send_email_ssl_port = PropertiesUtil.getParam("send_email_ssl_port");
 
    //发送Email用户名
    private static final String send_email_user_name =  PropertiesUtil.getParam("send_email_user_name");
 
    //发送Email密码
    private static final String send_email_user_pwd = PropertiesUtil.getParam("send_email_user_pwd");
 
    //发送Email编码
    private static final String send_email_charset ="UTF-8";
 
 
    /**
     * 发送纯文本的Email
     * @param receiver 收信人
     * @param subjecct Email主题
     * @param msg Email内容
     * @throws EmailException
     */
    public static void  sendPlainEmail(String receiver,String subjecct,String msg) throws EmailException{
        SimpleEmail  email = new SimpleEmail();
        email.setHostName(send_email_host_name);
        boolean is_ssl = false;
        if(!ValidateUtil.validateBlank(send_email_use_ssl) && send_email_use_ssl.equals("true"))is_ssl = true;
        email.setSSL(is_ssl);
        email.setSslSmtpPort(send_email_ssl_port);
        email.setAuthentication(send_email_user_name, send_email_user_pwd);
 
        if(!ValidateUtil.validateBlank(receiver)){
            try {
                email.addTo(receiver,"receiver");
                email.setCharset(send_email_charset);
                email.setFrom(send_email_user_name);
                email.setSubject(subjecct);
                email.setMsg(msg);
                email.send();
            catch (EmailException e) {
                throw new EmailException(e);
            }
        }
    }
 
    /**
     * 发送多个带附件的Email
     * @param receiver 收信人
     * @param multipart 附件map key:附件名字不需加文件扩展名,map value:附件路径和名字,如果为网络资源,请以http开头
     * @param subjecct Email主题
     * @param msg Email内容
     * @throws EmailException
     */
    public static void  sendMultipartEmail(String receiver,Map<String, String> multipart,String subjecct,String msg) throws EmailException{
        MultiPartEmail email = new MultiPartEmail();
        email.setHostName(send_email_host_name);
        boolean is_ssl = false;
        if(!ValidateUtil.validateBlank(send_email_use_ssl) && send_email_use_ssl.equals("true"))is_ssl = true;
        email.setSSL(is_ssl);
        email.setSslSmtpPort(send_email_ssl_port);
        email.setAuthentication(send_email_user_name, send_email_user_pwd);
 
        Iterator<Entry<String,String>> iter = multipart.entrySet().iterator();
        String encoding = System.getProperty("file.encoding");
        BASE64Encoder encoder = new BASE64Encoder();
        while (iter.hasNext()) {
            Map.Entry<java.lang.String, java.lang.String> entry = (Map.Entry<java.lang.String, java.lang.String>) iter
                    .next();
 
            String multiPath = entry.getValue();
            String  multiName = entry.getKey() +"." + FilenameUtils.getExtension(multiPath);
            if(!ValidateUtil.validateBlank(multiName) && !ValidateUtil.validateBlank(multiPath)){
                EmailAttachment attachment =  new EmailAttachment();
 
                if(multiPath.startsWith("http:")){
                    try {
                        attachment.setURL(new URL(multiPath));
                    catch (MalformedURLException e) {
                        throw new EmailException(e);
                    }
                }else{
                    attachment.setPath(multiPath);
                }
                attachment.setName("=?"+encoding+"?B?"+encoder.encode(multiName.getBytes())+"?=");
                attachment.setDisposition(EmailAttachment.ATTACHMENT);
                attachment.setDescription("");
                email.attach(attachment);
            }
 
        }
        if(!ValidateUtil.validateBlank(receiver)){
            try {
                email.addTo(receiver,"receiver");
                email.setCharset(send_email_charset);
                email.setFrom(send_email_user_name);
                email.setSubject(subjecct);
                email.setMsg(msg);
                email.send();
            catch (EmailException e) {
                throw new EmailException(e);
            }
        }
    }
 
 
 
    /**
     * 发送Html的Email
     * @param receiver 收信人
     * @param subjecct Email主题
     * @param msg Email内容
     * @throws EmailException
     */
    public static void  sendHtmlEmail(String receiver,String subjecct,String msg,String sendName) throws EmailException{
 
        System.out.print("系统正在发送邮箱,接受者:"+receiver+",标题:"+subjecct +",内容:"+msg);
 
        HtmlEmail  email = new HtmlEmail();
        email.setHostName(send_email_host_name);
        boolean is_ssl = false;
        if(!ValidateUtil.validateBlank(send_email_use_ssl) && send_email_use_ssl.equals("true"))is_ssl = true;
        email.setSSL(is_ssl);
        email.setSslSmtpPort(send_email_ssl_port);
        email.setAuthentication(send_email_user_name, send_email_user_pwd);
        if(!ValidateUtil.validateBlank(receiver)){
            try {
                email.addTo(receiver,"receiver");
                email.setCharset(send_email_charset);
                email.setFrom(send_email_user_name,sendName);
 
                email.setSubject(subjecct); 
 
                email.setHtmlMsg(msg);
                email.send();
            catch (EmailException e) {
                throw new EmailException(e);
            }
        }
 
    }
 
}

java实现了发送邮件功能

  • 2009年10月19日 18:53
  • 44KB
  • 下载

Java 线程池 发送邮件

想了解下Java线程池的用法,恰好最近要做一个简易的邮件通知中间功能,所以写下这个笔记。见笑。 servlet代码SendEmailServlet.java: package servlet; ...
  • Mchange
  • Mchange
  • 2014-04-02 15:49:32
  • 1863

【javaMail】【3.多线程发邮件】java mail 多线程发送邮件

背景 多线程发送邮件 最近在做一个功能,需要批量或不定时散量发送邮件给不同的人。比方说注册功能,需要给注册人发送邮件,如果遇上系统新开放注册,有一定量的并发,如果一窝蜂地发,有可能造成smtp服务器拒...
  • ku360517703
  • ku360517703
  • 2016-01-12 17:08:51
  • 3813

基于java mail.jar邮件发送,最详细代码和讲解

下载mail.jar包,部署。然后下载我的附件代码,运行testSendMail就ok,有详细注释!...
  • tanqian351
  • tanqian351
  • 2016-03-31 16:05:38
  • 840

在java程序中实现发送邮件的功能

最近比较忙,在做一个人事管理系统的项目,在这项目需求中,需要一个发送邮件的功能。这个时候我们可以使用javamail的jar包来实现完美需要的功能,在这里简单的分享一个最基础的发邮件功能。 首先我们需...
  • sdksdk0
  • sdksdk0
  • 2016-05-13 23:05:48
  • 4190

Java定时发送邮件(一)

最近在做一个定时发送邮件的任务,刚拿到就想到之前在SSH网上商城做过发送邮件,但由于刚进入对项目所用的整体框架不是很理解,定时发送邮件真不知道应该怎么做?     既然没有思路,就开始找思路,先从第一...
  • u013038643
  • u013038643
  • 2016-05-31 22:50:10
  • 1476

JAVAWEB创建和发送邮件

一、RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两个部分,邮件头和邮件体之间使用空行分隔。   邮件头包含的内容有: 1. f...
  • qq_15646957
  • qq_15646957
  • 2016-09-14 23:32:23
  • 767

java邮件发送Demo(完整例子)

  • 2011年12月13日 13:27
  • 504KB
  • 下载

Java Mail 发送邮件之——简单实现

Java Mail发送邮件简单示例,包括准备条件和核心代码,尽可能简单的描述清除。...
  • chenghuaying
  • chenghuaying
  • 2016-07-09 23:10:34
  • 1579

javamail发送邮件和附件一个例子,直接eclipse运行

  • 2008年12月13日 13:02
  • 772KB
  • 下载
收藏助手
不良信息举报
您举报文章:java 发送邮件
举报原因:
原因补充:

(最多只允许输入30个字)