服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|JavaScript|易语言|

服务器之家 - 编程语言 - Java教程 - java实现发送邮件功能

java实现发送邮件功能

2021-07-14 16:16当年的春天 Java教程

这篇文章主要为大家详细介绍了java实现发送邮件功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

前言

前段时间做一个紧急的功能,其中有部分需求是需要发邮件通知;通过查阅以及实验,很快的写了个发送邮件的功能;现在整理一下记录下来。

发送邮件

一、在pom中引入相关依赖

?
1
2
3
4
5
6
7
8
9
10
11
<dependency>
   <groupid>javax.mail</groupid>
   <artifactid>javax.mail-api</artifactid>
   <version>1.5.6</version>
</dependency>
 
<dependency>
   <groupid>org.apache.commons</groupid>
   <artifactid>commons-email</artifactid>
   <version>1.4</version>
</dependency>

二、发送邮件的工具类

 

?
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
package com.zhanghan;
 
import org.apache.commons.mail.emailexception;
import org.apache.commons.mail.htmlemail;
import org.springframework.stereotype.service;
import org.springframework.util.stringutils;
 
import java.util.arraylist;
import java.util.list;
 
@service
public class emailserviceimpl implements emailservice {
  @override
  public void sendmail(string address, string subject, string htmlmsg, boolean isssl) throws emailexception {
 
    if (stringutils.isempty(address) || stringutils.isempty(subject) || stringutils.isempty(htmlmsg)) {
      throw new emailexception();
    }
 
    try {
      htmlemail email = new htmlemail();
      list<string> list = new arraylist<string>();
      list.add(address);
      string[] tos = list.toarray(new string[list.size()]);
 
      // 这里是smtp发送服务器的名字:163的如下:"smtp.163.com"
      email.sethostname("smtp.exmail.qq.com");
      if (isssl) {
        email.setsslonconnect(true);
        email.setsmtpport(465);
      }
      // 字符编码集的设置
      email.setcharset("utf-8");
      // 收件人的邮箱
      email.addto(tos);
      // 发送人的邮箱以及发件人名称
      email.setfrom("xxx@163.com", "zhanghan");
      // 如果需要认证信息的话,设置认证:用户名-密码。分别为发件人在邮件服务器上的注册名称和密码
      email.setauthentication("xxx@163.com", "yyyy");
      // 要发送的邮件主题
      email.setsubject(subject);
      // 要发送的信息,由于使用了htmlemail,可以在邮件内容中使用html标签
      email.sethtmlmsg(htmlmsg);
 
      string result1 = email.send();     
 
    } catch (exception e) {
      e.printstacktrace();
      throw new emailexception();
    }
  }
}

三、遇到的坑

在本地测试没有问题;我们的测试服务在阿里云上,阿里云对发送的时候是失败;追踪日志发现原来是阿里云将发送邮件的默认端口25关闭;需要将端口改成465。

总结

1、遇到问题要多看日志,追踪问题;

2、不断积累,不断完善自己知识体系。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/zhanghan18333611647/article/details/81265682

延伸 · 阅读

精彩推荐