【java】向指定邮箱发送电子邮件 您所在的位置:网站首页 word文档怎么往邮箱里发送 【java】向指定邮箱发送电子邮件

【java】向指定邮箱发送电子邮件

2024-07-11 09:03| 来源: 网络整理| 查看: 265

我们有时候会有这样的需求,向指定用户发送邮件,有可能是最简单的邮件,有可能是带附件的邮件。下面我们来看一下如何发送邮件。

文章目录 网络协议获取授权码代码实现javax.mail 发送邮件springboot 发送邮件1.导入依赖2.全局配置3.写测试类测试

网络协议

首先我们要了解一下邮件协议。

发送邮箱用到了SMTP、POP3和IMAP等协议

SMTP是一种提供可靠且有效的电子邮件传输的协议。SMTP是建立在FTP文件传输服务商的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。

SMTP独立于特定的传输子系统。且只需要可靠有序的数据流信道支持,SMTP的重要特征之一就是其能跨越网络传输邮件,即“SMTP邮件中继”。

使用SMTP可以实现相同网络处理进程之间的邮件传输,也可通过中继器或网关实现某处理进程与其他网络之间的邮件传输。

POP3 邮局协议IMAP是对POP3的扩展,作用类似,功能更强。

使用SMTP :把邮件发送到服务器,服务器间传递邮件。

使用POP3: 收件方查看邮箱里的邮件。

在这里插入图片描述

获取授权码

这里我们演示qq的授权码 我们进入qq邮箱界面,设置->账户 在这里插入图片描述

代码实现 javax.mail 发送邮件 @Test public void testEmail() throws MessagingException { Properties prop = new Properties(); //定义邮件发送协议 prop.setProperty("mail.transport.protocol", "smtp"); //声明邮件服务器地址 prop.setProperty("mail.smtp.host", "smtp.qq.com"); //发送权限,为true时表示允许发送 prop.setProperty("mail.smtp.auth", "true"); //设置为true时,调试的时候可以在控制台显示信息 prop.setProperty("mail.debug", "true"); //相当于建立了一条通信路线 Session session = Session.getInstance(prop); Message msg = new MimeMessage(session); //发件者邮箱 msg.setFrom(new InternetAddress("[email protected]")); //收件邮箱 msg.setRecipient(RecipientType.TO, new InternetAddress("[email protected]")); msg.setSubject("这是14598466112发送给48987462135的邮件XXXXXXXXXX"); msg.setText("这是邮件的正文"); Transport tran = session.getTransport(); tran.connect("894645250", "授权码"); tran.sendMessage(msg, msg.getAllRecipients()); } springboot 发送邮件

在spring-boot中也为我们提供了发送邮件的工具

1.导入依赖

在pom中导入发送电子邮件需要的依赖

org.springframework.boot spring-boot-starter-mail 2.全局配置

我们在application.yml文件中配置邮件的相关信息

spring: mail: host: smtp.qq.com # 主机协议 如果是qq,那么不变,如果是163,将qq换成163 userName: [email protected] #邮箱账号,这里用的qq的 passWord: pcdoqdtjzsmcdahg #授权码,不是qq密码 default-encoding: UTF-8 properties: mail: smtp: auth: true starttls: enable: true required: true 3.写测试类测试

我们在导入依赖,配置完后就可以进行代码编写了 我们写一个测试类测试

@RequiredArgsConstructor public class Email { private final JavaMailSender javaMailSender; private final EmailProperties emailProperties; public void sendEmail(EmailDTO emailDTO) { //1.创建一个邮件对象 MimeMessage mimeMessage = javaMailSender.createMimeMessage(); //2.发送邮件的一个工具类 MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage); @Value("${spring.mail.username}") private String userName; try { //获得邮件标题 mimeMessageHelper.setSubject("标题"); //获得邮件内容 mimeMessageHelper.setText("标题内容", true); //获得发件人名字 mimeMessageHelper.setFrom(userName); //收件人 mimeMessageHelper.setTo("收件人的邮箱"); //发送邮件 javaMailSender.send(mimeMessage); } catch (MessagingException e) { e.printStackTrace(); } } }

补充:

发送邮件这个可以封装成一个方法,所以我们可以写成一个工具类,为以后开发时能更好的利用,所以我们这里可以对上述的方法改一些东西

首先,我们可以在config包下写一个配置类,

@Configuration @ConfigurationProperties(prefix = "spring.mail") public class EmailProperties { //发送者用户名 private String userName; //发送者密码,是授权码 private String passWord; //发送的主机 private String host; //get和set方法自行补充 }

我们在配置完后,就可以直接调用了

其次,我们可以将所需要传递的参数封装为一个实体类

public class Email{ private final String title =; private final String content; private String to; //get和set方法自行添加 }

在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有