JavaXMail发送邮件功能实现 您所在的位置:网站首页 java开发邮件发送功能 JavaXMail发送邮件功能实现

JavaXMail发送邮件功能实现

2022-05-25 08:26| 来源: 网络整理| 查看: 265

本文为作者原创,转载请注明出处,谢谢配合 作者:stars-one 链接:https://www.cnblogs.com/stars-one/p/14775451.html

本篇大约有3506个字,阅读预计需要4.38分钟

 

好久之前实现的邮件发送功能,一直没整理出来,考虑到之后有个项目需要,先整理一波

提示: 本文代码例子是使用Kotlin语言编写

基本使用 1.授权申请

第一步,首先得去邮箱开通对应的服务,这里建议使用QQ邮箱,网易的163邮箱测试很容易被官方拦截,官方认为你的邮件是垃圾邮件,不给你发,心烦,相比之下,QQ邮箱比较友好,不过给163邮箱,邮件会被当做垃圾邮件(服了)

授权去QQ邮箱设置里开启(设置->个人账户菜单)即可,如下面截图,要先把上方的几个服务开启之后,在申请授权码即可

2.依赖引入 com.sun.mail javax.mail 1.6.2 3.发送邮件 //1.设置自己邮箱和授权码以及发送人 val pwd = "你的授权码" val fromPerson = "你的邮箱地址" //发送人邮箱地址 val toAddress = "" //2.初始化邮箱的配置 val props = Properties() //开启调试模式,会打印日志 props.setProperty("mail.debug", "true") // 发送服务器需要身份验证 props.setProperty("mail.smtp.auth", "true") // 设置邮件服务器主机名 props.setProperty("mail.host", "smtp.qq.com") // 发送邮件协议名称 props.setProperty("mail.transport.protocol", "smtp") val sf = MailSSLSocketFactory() sf.isTrustAllHosts = true props["mail.smtp.ssl.enable"] = "true" props["mail.smtp.ssl.socketFactory"] = sf //3.创建邮件内容(邮件标题,邮件内容,收件人) val session = Session.getInstance(props) val msg = MimeMessage(session) val multipart = MimeMultipart() val mainContent = MimeBodyPart() mainContent.setContent("你好,这是一封测试邮件", "text/html;charset=gb2312") multipart.addBodyPart(mainContent) msg.subject = "测试标题" msg.setContent(multipart) /** * 设置收件人地址(可以增加多个收件人、抄送、密送),即下面这一行代码书写多行(即群发) * PS:将收件人的地址改为自己即可实现给自己发送邮件 * MimeMessage.RecipientType.TO:发送 * MimeMessage.RecipientType.CC:抄送 * MimeMessage.RecipientType.BCC:密送 */ msg.addRecipient(MimeMessage.RecipientType.TO, InternetAddress(toAddress)) msg.setFrom(InternetAddress(fromPerson)) msg.saveChanges() //4.登录并发送邮件 val transport = session.transport //登录 transport.connect("smtp.qq.com", fromPerson, pwd) transport.sendMessage(msg, msg.allRecipients) //这个是要接受邮件的邮箱 transport.close()

PS:邮件可以群发,不过一般邮箱都是有限制,比如说QQ邮箱限制每次邮件发送邮件不能超过50个人(但不清楚是否包含抄送人和密送人的数量在内,有条件可以自己尝试)

效果图:

当然,邮件还可以发送网页内容、图片和附件,这里就没有过多深入研究,详情可以看末尾参考的文章

封装工具类

根据上面的基本的方法,我自己封装了一套邮件发送的简单工具类,各位可以参考

class MailUtil { companion object { //你的邮箱地址 private val fromPerson = "" //这里看你用的邮箱改,如果是QQ邮箱,就是smtp.qq.com private val mailHost = "smtp.qq.com" //这里改成你的邮箱授权码 val pwd = "" private val props = Properties() /** * 给指定邮箱发送邮件 * * @param toAddress 指定邮箱地址 * @param title 邮件主题 * @param content 邮件内容(内容如果是网页也是可以的) */ fun sendEmail(toAddress: String, title: String, content: String) { println("-----test---- sendEmail开始---") val session = Session.getInstance(props) val msg = MimeMessage(session) val multipart = MimeMultipart() val mainContent = MimeBodyPart() mainContent.setContent(content, "text/html;charset=gb2312") multipart.addBodyPart(mainContent) msg.subject = title msg.setContent(multipart) /** * 设置收件人地址(可以增加多个收件人、抄送、密送),即下面这一行代码书写多行 * MimeMessage.RecipientType.TO:发送 * MimeMessage.RecipientType.CC:抄送 * MimeMessage.RecipientType.BCC:密送 */ msg.addRecipient(MimeMessage.RecipientType.TO, InternetAddress(toAddress)) msg.setFrom(InternetAddress(fromPerson)) msg.saveChanges() val transport = session.transport //登录 transport.connect(mailHost, fromPerson, pwd) transport.sendMessage(msg, msg.allRecipients) //这个是要接受邮件的邮箱 transport.close() } } init { //开启调试模式,会打印日志 props.setProperty("mail.debug", "true") // 发送服务器需要身份验证 props.setProperty("mail.smtp.auth", "true") // 设置邮件服务器主机名 props.setProperty("mail.host", mailHost) // 发送邮件协议名称 props.setProperty("mail.transport.protocol", "smtp") val sf = MailSSLSocketFactory() sf.isTrustAllHosts = true props["mail.smtp.ssl.enable"] = "true" props["mail.smtp.ssl.socketFactory"] = sf } }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

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