广告位联系
返回顶部
分享到

java web实现邮箱发送功能

java 来源:互联网搜集 作者:秩名 发布时间:2019-05-31 11:09:08 人浏览
摘要

本篇文章介绍java web实现邮箱发送功能。 1.邮箱协议 电子邮件的在网络中传输和网页一样需要遵从特定的协议,常用的电子邮件协议包括 SMTP,POP3,IMAP。其中邮件的创建和发送只需要用到 SMTP协议,所有本文也只会涉及到SMTP协议。SMTP 是 Simple Mail Trans

本篇文章介绍java web实现邮箱发送功能。

1.邮箱协议

电子邮件的在网络中传输和网页一样需要遵从特定的协议,常用的电子邮件协议包括 SMTP,POP3,IMAP。其中邮件的创建和发送只需要用到 SMTP协议,所有本文也只会涉及到SMTP协议。SMTP 是 Simple Mail Transfer Protocol 的简称,即简单邮件传输协议。

2.需要使用的jar包

下载地址-[-/a>

3.代码实现

package com.bhkj.ShoppingMall.util;
  
import java.util.Date;
import java.util.Properties;
import java.util.Timer;
import java.util.TimerTask;
  
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.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
  
public class MailUtils {
  
   public static void sendMail(String email, String emailMsg)
    throws Exception {
   // 发件人的 邮箱 和 密码(替换为自己的邮箱和密码)
     // PS: 某些邮箱服务器为了增加邮箱本身密码的安全性,给 SMTP 客户端设置了独立密码(有的邮箱称为“授权码”), 
     //   对于开启了独立密码的邮箱, 这里的邮箱密码必需使用这个独立密码(授权码)。
    String myEmailAccount = "13739242969@139.com";
    String myEmailPassword = "379454574a";
  
     // 发件人邮箱的 SMTP 服务器地址, 必须准确, 不同邮件服务器地址不同, 一般(只是一般, 绝非绝对)格式为: smtp.xxx.com
     // 网易163邮箱的 SMTP 服务器地址为: smtp.163.com
    String myEmailSMTPHost = "smtp.139.com";
  
     // 收件人邮箱(替换为自己知道的有效邮箱)
    String receiveMailAccount = email;
    // 1. 创建参数配置, 用于连接邮件服务器的参数配置
     Properties props = new Properties();          // 参数配置
     props.setProperty("mail.transport.protocol", "smtp");  // 使用的协议(JavaMail规范要求)
     props.setProperty("mail.smtp.host", myEmailSMTPHost);  // 发件人的邮箱的 SMTP 服务器地址
     props.setProperty("mail.smtp.auth", "true");      // 需要请求认证
  
     // 2. 根据配置创建会话对象, 用于和邮件服务器交互
     Session session = Session.getDefaultInstance(props);
     session.setDebug(true);                 // 设置为debug模式, 可以查看详细的发送 log
  
     // 3. 创建一封邮件
     MimeMessage message = createMimeMessage(session, myEmailAccount, receiveMailAccount);
  
     // 4. 根据 Session 获取邮件传输对象
     Transport transport = session.getTransport();
  
     // 5. 使用 邮箱账号 和 密码 连接邮件服务器, 这里认证的邮箱必须与 message 中的发件人邮箱一致, 否则报错
     // 
     //  PS_01: 成败的判断关键在此一句, 如果连接服务器失败, 都会在控制台输出相应失败原因的 log,
     //      仔细查看失败原因, 有些邮箱服务器会返回错误码或查看错误类型的链接, 根据给出的错误
     //      类型到对应邮件服务器的帮助网站上查看具体失败原因。
     //
     //  PS_02: 连接失败的原因通常为以下几点, 仔细检查代码:
     //      (1) 邮箱没有开启 SMTP 服务;
     //      (2) 邮箱密码错误, 例如某些邮箱开启了独立密码;
     //      (3) 邮箱服务器要求必须要使用 SSL 安全连接;
     //      (4) 请求过于频繁或其他原因, 被邮件服务器拒绝服务;
     //      (5) 如果以上几点都确定无误, 到邮件服务器网站查找帮助。
     //
     //  PS_03: 仔细看log, 认真看log, 看懂log, 错误原因都在log已说明。
     transport.connect(myEmailAccount, myEmailPassword);
  
     // 6. 发送邮件, 发到所有的收件地址, message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人
     transport.sendMessage(message, message.getAllRecipients());
  
     // 7. 关闭连接
     transport.close();
 }
   /**
   * 创建一封只包含文本的简单邮件
   *
   * @param session 和服务器交互的会话
   * @param sendMail 发件人邮箱
   * @param receiveMail 收件人邮箱
   * @return
   * @throws Exception
   */
   public static MimeMessage createMimeMessage(Session session, String sendMail, String receiveMail) throws Exception {
     // 1. 创建一封邮件
     MimeMessage message = new MimeMessage(session);
  
     // 2. From: 发件人
     message.setFrom(new InternetAddress(sendMail, "宝徽易购", "UTF-8"));
  
     // 3. To: 收件人(可以增加多个收件人、抄送、密送)
     message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMail, "XX用户", "UTF-8"));
  
     // 4. Subject: 邮件主题
     message.setSubject("宝徽易购发送的激活邮件", "UTF-8");
  
     // 5. Content: 邮件正文(可以使用html标签)
     message.setContent("恭喜您激活成功", "text/html;charset=UTF-8");
  
     // 6. 设置发件时间
     message.setSentDate(new Date());
  
     // 7. 保存设置
     message.saveChanges();
  
     return message;
   }
}



版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://blog.csdn.net/m0_37983376/article/details/72818562
相关文章
  • SpringBoot自定义错误处理逻辑介绍

    SpringBoot自定义错误处理逻辑介绍
    1. 自定义错误页面 将自定义错误页面放在 templates 的 error 文件夹下,SpringBoot 精确匹配错误信息,使用 4xx.html 或者 5xx.html 页面可以打印错误
  • Java实现手写一个线程池的代码

    Java实现手写一个线程池的代码
    线程池技术想必大家都不陌生把,相信在平时的工作中没有少用,而且这也是面试频率非常高的一个知识点,那么大家知道它的实现原理和
  • Java实现断点续传功能的代码

    Java实现断点续传功能的代码
    题目实现:网络资源的断点续传功能。 二、解题思路 获取要下载的资源网址 显示网络资源的大小 上次读取到的字节位置以及未读取的字节
  • 你可知HashMap为什么是线程不安全的
    HashMap 的线程不安全 HashMap 的线程不安全主要体现在下面两个方面 在 jdk 1.7 中,当并发执行扩容操作时会造成环形链和数据丢失的情况 在
  • ArrayList的动态扩容机制的介绍

    ArrayList的动态扩容机制的介绍
    对于 ArrayList 的动态扩容机制想必大家都听说过,之前的文章中也谈到过,不过由于时间久远,早已忘却。 所以利用这篇文章做做笔记,加
  • JVM基础之字节码的增强技术介绍

    JVM基础之字节码的增强技术介绍
    字节码增强技术 在上文中,着重介绍了字节码的结构,这为我们了解字节码增强技术的实现打下了基础。字节码增强技术就是一类对现有字
  • Java中的字节码增强技术

    Java中的字节码增强技术
    1.字节码增强技术 字节码增强技术就是一类对现有字节码进行修改或者动态生成全新字节码文件的技术。 参考地址 2.常见技术 技术分类 类
  • Redis BloomFilter布隆过滤器原理与实现

    Redis BloomFilter布隆过滤器原理与实现
    Bloom Filter 概念 布隆过滤器(英语:Bloom Filter)是1970年由一个叫布隆的小伙子提出的。它实际上是一个很长的二进制向量和一系列随机映射
  • Java C++算法题解leetcode801使序列递增的最小交换次

    Java C++算法题解leetcode801使序列递增的最小交换次
    题目要求 思路:状态机DP 实现一:状态机 Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 class Solution { public int minSwap(int[] nums1, int[] nums2) { int n
  • Mybatis结果集映射与生命周期介绍

    Mybatis结果集映射与生命周期介绍
    一、ResultMap结果集映射 1、设计思想 对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了 2、resultMap的应用场
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计