Java发送邮件

简介: Java发送邮件

强烈推荐一个大神的人工智能的教程:http://www.captainai.net/zhanghan


【前言】


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


【发送邮件】


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


相关文章
|
19天前
|
Java
有关Java发送邮件信息(支持附件、html文件模板发送)
有关Java发送邮件信息(支持附件、html文件模板发送)
68 1
|
8月前
|
Java 数据安全/隐私保护
使用Java发送邮件的示例
使用Java发送邮件的示例
138 0
|
9月前
|
Java
Java发送邮件的代码示例
以下是一个使用Java发送邮件的代码示例: ```java import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress;
106 0
|
3天前
|
网络协议 Java API
Java语言发送邮件的技术性详解
Java语言发送邮件的技术性详解
|
5天前
|
Java API 数据安全/隐私保护
Java 发送邮件
5月更文挑战第20天
|
19天前
|
Java API 数据安全/隐私保护
【亮剑】如何在Java项目中结合Spring框架实现邮件发送功能
【4月更文挑战第30天】本文介绍了如何在Java项目中结合Spring框架实现邮件发送功能。首先,需在`pom.xml`添加Spring和JavaMail依赖。然后,在`applicationContext.xml`配置邮件发送器,包括SMTP服务器信息。接着,创建一个使用依赖注入的`EmailService`类,通过`JavaMailSender`发送邮件。最后,调用`EmailService`的`sendSimpleEmail`方法即可发送邮件。最佳实践包括:使用配置管理敏感信息,利用`MimeMessage`构造复杂邮件,异常处理和日志记录,以及在大量发送时考虑使用邮件队列。
|
19天前
|
Java
【Java专题_03】使用springboot发送邮件
【Java专题_03】使用springboot发送邮件
32 2
|
19天前
|
Java
有关Java发送邮件信息(支持附件、html文件模板发送)
有关Java发送邮件信息(支持附件、html文件模板发送)
103 0
|
19天前
|
Java
java 使用qq邮箱发送邮件报错 port: 465, response: 550 错误
java 使用qq邮箱发送邮件报错 port: 465, response: 550 错误
105 0
|
7月前
|
Java
java阿里云企业邮箱发送邮件
java阿里云企业邮箱发送邮件
3637 0