2021年5月17日星期一

JavaXMail发送邮件功能实现

原文:JavaXMail发送邮件功能实现 | Stars-One的杂货小窝

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

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

基本使用

1.授权申请

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

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

2.依赖引入

<dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.6.2</version></dependency>

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 = trueprops["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 }}

参考

  • JavaWeb学习总结(五十二)——使用JavaMail创建邮件和发送邮件 - 孤傲苍狼 - 博客园








原文转载:http://www.shaoqun.com/a/747780.html

跨境电商:https://www.ikjzd.com/

cares:https://www.ikjzd.com/w/1302

美菜网:https://www.ikjzd.com/w/1874


原文:JavaXMail发送邮件功能实现|Stars-One的杂货小窝好久之前实现的邮件发送功能,一直没整理出来,考虑到之后有个项目需要,先整理一波提示:本文代码例子是使用Kotlin语言编写基本使用1.授权申请第一步,首先得去邮箱开通对应的服务,这里建议使用QQ邮箱,网易的163邮箱测试很容易被官方拦截,官方认为你的邮件是垃圾邮件,不给你发,心烦,相比之下,QQ邮箱比较友好,不过给163邮箱,邮
万国邮政联盟:https://www.ikjzd.com/w/861
白色清关:https://www.ikjzd.com/w/1410
派代:https://www.ikjzd.com/w/2197
NOON:这将是迄今为止最大的黄色星期五:https://www.ikjzd.com/home/134793
我好心帮忙没想到闺蜜老公是色狼:http://lady.shaoqun.com/a/270310.html
亚马逊禁止卖家使用联邦快递,违者可能封号!:https://www.ikjzd.com/home/112737

没有评论:

发表评论