欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java实现发送邮件功能

程序员文章站 2024-02-21 11:11:16
前言 前段时间做一个紧急的功能,其中有部分需求是需要发邮件通知;通过查阅以及实验,很快的写了个发送邮件的功能;现在整理一下记录下来。 发送邮件 一、在pom中引入...

前言

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

发送邮件

一、在pom中引入相关依赖

 <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>

二、发送邮件的工具类

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、不断积累,不断完善自己知识体系。

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