Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >使用 Java 发送邮件

使用 Java 发送邮件

作者头像
宋先生
发布于 2019-07-18 06:54:53
发布于 2019-07-18 06:54:53
2.4K00
代码可运行
举报
运行总次数:0
代码可运行

在我们的应用程序中有时需要给用户发送邮件,例如激活邮件、通知邮件等等。那么如何使用 Java 来给用户发送邮件呢?

  • 使用 java 代码发送邮件
  • 使用工具类发送邮件
  • 使用Spring进行整合发送邮件
  • 发送带附件的邮件

一.使用 Java 代码发送邮件

第一步:导入依赖坐标
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!-- Javamail -->
<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.4</version>
</dependency>
第二步:编写 Java 代码发送邮件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * java程序发送邮件
 * @author Mr.song
 * @date 2019/05/24 16:17
 */
public class JavaMail {
    public static void main(String[] args) throws Exception {
        //1.配置发送邮件的属性
        Properties properties = new Properties();
        properties.setProperty("mail.smtp.host", "localhost"); //设置协议主机
        properties.setProperty("mail.smtp.auth", "true"); //设置smtp是否需要认证
        //2.根据属性获得一个会话
        Session session = Session.getInstance(properties);
        //3.设置会话是debug模式(会打印更多相关信息)
        session.setDebug(true);
        //4.创建邮件主题信息对象
        MimeMessage message = new MimeMessage(session);
        //5.设置发件人
        message.setFrom(new InternetAddress("dintalk@sh.com"));
        //6.设置邮件主题
        message.setSubject("我的第一份java邮件");
        //7.设置邮件正文
        message.setText("第一份邮件发送成功了,哈哈");
        //8.设置收件人: TO-发送    CC-抄送   BCC-密送
        message.setRecipient(Message.RecipientType.TO, new InternetAddress("talkdin@sh.com"));
        //9.获取发送器对象:提供指定的协议
        Transport transport = session.getTransport("smtp");
        //10.设置发件人的信息
        transport.connect("localhost", "dintalk", "123456");
        //11.发送邮件
        transport.sendMessage(message, message.getAllRecipients());
        //12.关闭资源
        transport.close();
    }
}

二.使用工具类发送邮件

第一步:导入依赖坐标(同 上)
第二步:抽取工具类
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * @author Mr.song
 * @date 2019/05/24 16:53
 */
public class MailUtil {
    /**
     * 工具类发送邮件的方法里,发件邮箱的信息是固定的
     * @param map : 收件地址和发送类型 (地址作 key)
     * @param subject : 邮件的主题
     * @param content : 邮件的正文
     * @throws MessagingException
     */
    public static void sendMail(Map<String,String>map,String subject,String content) 
        throws MessagingException {
        //1.配置发送邮件的属性
        Properties properties = new Properties();
        properties.setProperty("mail.smtp.host","localhost"); //设置协议主机
        properties.setProperty("mail.smtp.auth","true"); //设置smtp是否需要认证
        //2.根据属性获得一个会话
        Session session = Session.getInstance(properties);
        //3.设置会话是debug模式(会打印更多相关信息,生产环境可设为false)
        session.setDebug(true);
        //4.创建邮件主题信息对象
        MimeMessage message = new MimeMessage(session);
        //5.设置发件人
        message.setFrom(new InternetAddress("dintalk@sh.com"));
        //6.设置邮件主题
        message.setSubject(subject);
        //7.设置邮件正文
        message.setText(content);
        //8.设置收件人: TO-发送    CC-抄送   BCC-密送
        for (Map.Entry<String, String> me : map.entrySet()) {
            String email = me.getKey(); //邮件地址
            String type = me.getValue(); //邮件类型
            if ("to".equalsIgnoreCase(type)){
                //发送
                message.setRecipient(Message.RecipientType.TO,new InternetAddress(email));
            }else if ("cc".equalsIgnoreCase(type)){
                //抄送
                message.setRecipient(Message.RecipientType.CC,new InternetAddress(email));
            }else if ("bcc".equalsIgnoreCase(type)){
                //密送
                message.setRecipient(Message.RecipientType.BCC,new InternetAddress(email));
            }
        }
        //9.获取发送器对象:提供指定的协议
        Transport transport = session.getTransport("smtp");
        //10.设置发件人的信息
        transport.connect("localhost","dintalk","123456");
        //11.发送邮件
        transport.sendMessage(message,message.getAllRecipients());
        //12.关闭资源
        transport.close();
    }
}
第三步:发送邮件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * 使用工具类发送邮件
 * @author Mr.song
 * @date 2019/05/24 16:47
 */
public class UtilMail {
    public static void main(String[] args) throws Exception{
        Map<String,String> map = new HashMap<>();
        map.put("din@sh.com","to");
        map.put("talk@sh.com","cc");
        map.put("talkdin@sh.com","bcc");
        MailUtil.sendMail(map,"我的第二封邮件","使用工具类发送邮件....");
    }
}

三.整合Spring进行邮件发送

第一步:导入依赖坐标
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!-- Javamail -->
<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.4</version>
</dependency>
<!--整合spring坐标-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>5.0.4.RELEASE</version>
</dependency>
第二步:编写发件方邮箱配置文件(mail.properties)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#设置发件方邮箱地址
mail.from=dintalk@sh.com
#设置协议主机
mail.host=localhost
#设置发件方用户名
mail.username=dintalk
#设置发件方密码
mail.password=123456
#设置邮件编码格式
mail.encoding=UTF-8
#设置邮件发送协议
mail.protocol=smtp
第三步:编写mail的Spring配置文件( applicationContext-mail.xml )
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
             http://www.springframework.org/schema/beans/spring-beans.xsd
             http://www.springframework.org/schema/context
             http://www.springframework.org/schema/context/spring-context.xsd">
    <!-- 1.指定引入其他资源文件.properties文件 -->
    <context:property-placeholder location="classpath:mail.properties"/>
    <!-- 2.配置简单邮件消息对象 -->
    <bean id="mailMessage" class="org.springframework.mail.SimpleMailMessage">
        <!-- 此时我们只需要注入发件箱名称即可。不要注入主题,正文,收件箱等不固定的信息 -->
        <property name="from" value="${mail.from}"></property>
    </bean>

    <!-- 3.配置邮件发送器 -->
    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host" value="${mail.host}"></property>
        <property name="username" value="${mail.username}"></property>
        <property name="password" value="${mail.password}"></property>
        <property name="defaultEncoding" value="${mail.encoding}"></property>
        <property name="protocol" value="${mail.protocol}"></property>
        <property name="javaMailProperties">
            <props>
                <!-- 是否需要验证 -->
                <prop key="mail.smtp.auth">true</prop>
                <!-- 是否需要debug的信息 -->
                <prop key="mail.debug">true</prop>
                <!-- 设置发送超时时间,以秒为单位。0为永不超时 -->
                <prop key="mail.smtp.timeout">0</prop>
            </props>
        </property>
    </bean>
</beans>
第四步:发送邮件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * 整合Spring的邮件发送
 * @author Mr.song
 * @date 2019/05/24 17:07
 */
public class SpringMail {

    public static void main(String[] args) throws MessagingException {
        //1.获取Spring容器
        ApplicationContext ac = new ClassPathXmlApplicationContext
            ("classpath:applicationContext-mail.xml");
        //2.获取消息对象
        SimpleMailMessage mailMessage = (SimpleMailMessage) ac.getBean("mailMessage");
        //3.设置邮件的主题
        mailMessage.setSubject("Spring整合javamail");
        //4.设置邮件的内容,和收件人信息
        mailMessage.setText("Spring整合javamail成功");
        mailMessage.setTo("din@sh.com","talk@sh.com");
        mailMessage.setCc("talkdin@sh.com");
        //5.获取邮件发送对象
        JavaMailSenderImpl mailSender = (JavaMailSenderImpl) ac.getBean("mailSender");
        //6.发送邮件
        mailSender.send(mailMessage);
    }
}

四.发送带附件的邮件(在整合Spring的基础上)

编写带附件的邮件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * 发送带附件的邮件
 * @author Mr.song
 * @date 2019/05/24 17:35
 */
public class AttachmentMail {
    public static void main(String[] args) throws MessagingException {
        //1.获取spring的容器
        ApplicationContext ac = new ClassPathXmlApplicationContext
                ("classpath:applicationContext-mail.xml");
        //2.获取发送器对象(spring提供的)
        JavaMailSenderImpl sender = (JavaMailSenderImpl) ac.getBean("mailSender");
        //3.获取MimeMessage
        MimeMessage mailMessage = sender.createMimeMessage();
        //4.创建spring提供的复杂邮件的帮助对象
        MimeMessageHelper helper = new MimeMessageHelper(mailMessage, true);
        //5.设置发件人邮箱
        helper.setFrom("dintalk@sh.com");
        //6.设置邮件的收件人
        helper.setTo("din@sh.com");
        //7.设置邮件的主题
        helper.setSubject("带有附件和图片的邮件");
        //8.设置邮件的正文
        helper.setText("<html><head></head><body><h1>这是一封带有附件和图片的邮件</h1><img src=cid:image></body></html>", true);
        //9.设置图片
        FileSystemResource resource = new FileSystemResource(new File("C:\\Users\\Administrator\\Desktop\\1.png"));
        //10.使用图片替换cid (cid是规定的,只能用cid)
        helper.addInline("image", resource);
        //11.设置附件
        helper.addAttachment("1.png", resource);
        //12.发送邮件
        sender.send(mailMessage);
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 顶哥说 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SpringBoot 2.0 集成 JavaMail ,实现异步发送邮件
(1)、Message 类: javax.mail.Message 类是创建和解析邮件的一个抽象类 子类javax.mail.internet.MimeMessage :表示一份电子邮件。 发送邮件时,首先创建出封装了邮件数据的 Message 对象, 然后把这个对象传递给邮件发送Transport 类,执行发送。 接收邮件时,把接收到的邮件数据封装在Message 类的实例中,从这个对象中解析收到的邮件数据。
知了一笑
2019/07/19
1.9K0
【Java专题_03】使用springboot发送邮件
1、以我自己的项目工程图为例(随便创建 一个sprinboot项目即可) 在pox.xml中添加依赖
夏之以寒
2024/03/04
1260
【Java专题_03】使用springboot发送邮件
Spring和Email整合详解
Spring Mail API都在org.springframework.mail及其子包org.springframework.mail.javamail中封装。
品茗IT
2019/09/12
1.1K0
java发送邮件-模板
今天写完了一个关于使用模板发送邮件的代码,作为例子保存着,希望以后用得着,也希望能够帮助到需要帮助的人 以163网易邮箱为例,使用java发送邮件,发送以邮件时使用模板(.ftl文件转换为html)发送邮件内容,并附带上附件,可抄送给多个人。项目的结构目录如下
全栈程序员站长
2022/08/28
1.8K0
java发送邮件-模板
ActiveMQ入门系列之应用:Springboot+ActiveMQ+JavaMail实现异步邮件发送「建议收藏」
现在邮件发送功能已经是几乎每个系统或网址必备的功能了,从用户注册的确认到找回密码再到消息提醒,这些功能普遍的会用到邮件发送功能。我们都买过火车票,买完后会有邮件提醒,有时候邮件并不是买完票立马就能收到邮件通知,这个就用到了异步邮件发送。
全栈程序员站长
2022/07/18
6010
ActiveMQ入门系列之应用:Springboot+ActiveMQ+JavaMail实现异步邮件发送「建议收藏」
走进Java接口测试之使用JavaMailSender发送邮件
一般我们在做接口自动化时,都会通过钉钉或者邮件的方式通知测试结果信息。而且基本上邮件的内容都是测试报告。所以,今天就来讲讲如何利用 pring提供的 JavaMailSender接口,实现邮件发送功能。
高楼Zee
2019/07/17
2.2K0
走进Java接口测试之使用JavaMailSender发送邮件
使用Java实现邮件发送功能,邮件发送API JavaMail
JavaMail是一个用于发送和接收邮件的API。它提供了一个独立于平台的、基于Java的邮件解决方案。我们可以使用JavaMail发送电子邮件,包括文本邮件、HTML邮件以及带附件的邮件。
Harry技术
2025/01/13
1530
使用Java实现邮件发送功能,邮件发送API JavaMail
利用java实现发送邮件
电子邮件的应用非常广泛,常见的如在某网站注册了一个账户,自动发送一封激活邮件,通过邮件找回密码,自动批量发送活动信息等。很显然这些应用不可能和我们自己平时发邮件一样,先打开浏览器,登录邮箱,创建邮件再发送。本文将简单介绍如何通过 Java 代码来创建电子邮件,并连接邮件服务器发送邮件。
全栈程序员站长
2022/08/28
1.4K0
利用java实现发送邮件
Java 发送邮件的几种方式[通俗易懂]
发送文件的项目地址(free):https://download.csdn.net/download/qq_36474549/10741073
全栈程序员站长
2022/08/28
1.3K0
Android之使用JavaMail发送邮件
            首先,我们原本可以直接通过Intent来调用系统邮件客户端发送邮件,但是这种发送需要跳转activity很不方便,所以我打算自己通过smtp协议发送邮件。很幸运,在google code上有一个现成的javaMail的java邮件客户端,我们只需要调用其中的接口就可以了。下面放出使用javaMail的一个demo源代码。 1.自己封装一个邮件发送类MailSender。 public class MailSender extends Authenticator { private
forrestlin
2018/05/23
1.2K0
羊皮书APP(Android版)开发系列(十三)Android 邮件发送的实现
在app开发过程中,邮件发送功能也是一个常见的功能,用于反馈一些app信息,严重错误等。这里使用javamail-android来实现,使用javamail-android需要下载三个jar包,分别是:additionnal.jar、mail.jar、activation.jar,下载地址是:https://code.google.com/archive/p/javamail-android/downloads,如果你的网络不能访问google的话,可以到我的github上下载,地址是:https://g
热心的程序员
2018/08/30
6030
java实现发送邮件工具[通俗易懂]
java实现发送邮件的功能:首先需要导入mail.jar; 然后需要写发送方法: 1、邮箱发送封装工具类:
全栈程序员站长
2022/08/28
6040
java实现发送邮件工具[通俗易懂]
Java Mail---SMTP协议-Java发邮件(带附件)演示过程
邮件客户端的主要任务是向邮件服务器发送邮件,以及接收来自邮件服务器的邮件。 Sun公司制定了一套API,它封装了邮件通信的各种协议。为Java开发者提供了收发电子邮件的公共接口。
谙忆
2021/01/21
2.3K0
Java Mail---SMTP协议-Java发邮件(带附件)演示过程
spring使用Email邮件系统
1.提供邮件信息发送接收,附件绑定功能. 1.配置spring-email.xml文件 <context:property-placeholder location="classpath:email.properties" ignore-unresolvable="true"/> <bean id="webEmailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property nam
Gxjun
2018/03/27
2.2K0
spring使用Email邮件系统
springboot发送邮件
相信使用过Spring的众多开发者都知道Spring提供了非常好用的 JavaMailSender接口实现邮件发送。在Spring Boot的Starter模块中也为此提供了自动化配置。下面通过实例看看如何在Spring Boot中使用 JavaMailSender 发送邮件。
共饮一杯无
2022/11/24
1.6K0
springboot发送邮件
使用JavaMail发送邮件
SMTP协议:Simple Mail Transfer Protocol,即简单邮件传输协议,用于发送电子邮件
星哥玩云
2022/07/11
1.3K0
使用JavaMail发送邮件
发送邮箱的Java工具类
只需要将“需要修改”的注释的代码处,修改成自己的即可使用 我用的是 163 邮箱,用别邮箱,就更改即可
用户9006224
2022/12/21
5680
Java常用工具类之发送邮件
package com.csice.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingE
二十三年蝉
2018/02/28
1.5K0
邮件实现详解(四)------JavaMail 发送(带图片和附件)和接收邮件
该文章介绍了如何通过JavaMailSender发送邮件,并附带上图片和附件。同时,介绍了MailReceiver实现接收邮件。
IT可乐
2018/01/04
3.5K0
邮件实现详解(四)------JavaMail 发送(带图片和附件)和接收邮件
Java发送邮件工具类
发送邮箱需要去开启 POP3/SMTP服务, 下面所有的密码都是授权码!!!! qq邮箱的设置在QQ邮箱-->设置-->账号-->进行设置
全栈程序员站长
2022/08/28
6600
Java发送邮件工具类
相关推荐
SpringBoot 2.0 集成 JavaMail ,实现异步发送邮件
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验