java实现发送邮件功能

网友投稿 227 2023-01-13


java实现发送邮件功能

前言

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

发送邮件

一、在pom中引入相关依赖

javax.mail

javax.mail-api

1.5.6

org.apache.commons

commons-email

1.4

二、发送邮件的工具类

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 {

@Overridehttp://

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();

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:研发管理平台设计说明范文(研发管理平台设计说明范文模板)
下一篇:mock接口测试用例(前端mock测试)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~