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

java.mail实现发送邮件方法

java 来源:互联网搜集 作者:秩名 发布时间:2020-02-11 19:53:15 人浏览
摘要

前提条件: 需要对邮箱做出设置,开启 :POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV等服务 一方面是接收这些代理服务器发送的邮件 另一方面就是让邮箱接受这些邮件协议的代理 在登录的时候,就是用户名和授权码,进行登录,获取授权码的过程:直接百度搜索就有

前提条件:

需要对邮箱做出设置,开启 :POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV等服务

一方面是接收这些代理服务器发送的邮件
另一方面就是让邮箱接受这些邮件协议的代理

在登录的时候,就是用户名和授权码,进行登录,获取授权码的过程:直接百度搜索就有结果,这里不再赘述

demo

这里需要引入javax.mail jar包
 

package test; 
///** 
// * 
// * @author jingxl0327 
// * @Description 邮件发送测试 
// */ 
public class sendMailTest { 
 public static void main(String[] args) throws Exception { 
  // 配置信息 
  Properties pro = new Properties(); 
  pro.put("mail.smtp.host", "smtp.163.com");
  pro.put("mail.smtp.auth", "true");
  // SSL加密 
  MailSSLSocketFactory sf = null; 
  sf = new MailSSLSocketFactory(); 
  // 设置信任所有的主机 
  sf.setTrustAllHosts(true); 
  pro.put("mail.smtp.ssl.enable", "true");
  pro.put("mail.smtp.ssl.socketFactory", sf);
  // 根据邮件的会话属性构造一个发送邮件的Session,这里需要注意的是用户名那里不能加后缀,否则便不是用户名了 
  //还需要注意的是,这里的密码不是正常使用邮箱的登陆密码,而是客户端生成的另一个专门的授权码 
  MailAuthenticator authenticator = new MailAuthenticator("jingxl0327", 
    "jing0327"); 
  Session session = Session.getInstance(pro, authenticator); 
  // 根据Session 构建邮件信息 
  Message message = new MimeMessage(session); 
  // 创建邮件发送者地址 
  Address from = new InternetAddress("jingxl0327@163.com"); 
  // 设置邮件消息的发送者 
  message.setFrom(from); 
  // 验证收件人邮箱地址 
  List<String> toAddressList = new ArrayList<>(); 
  toAddressList.add("1157496573@qq.com"); 
  StringBuffer buffer = new StringBuffer(); 
  if (!toAddressList.isEmpty()) { 
   String regEx = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$"; 
   Pattern p = Pattern.compile(regEx); 
   for (int i = 0; i < toAddressList.size(); i++) { 
    Matcher match = p.matcher(toAddressList.get(i)); 
    if (match.matches()) { 
     buffer.append(toAddressList.get(i)); 
     if (i < toAddressList.size() - 1) { 
      buffer.append(","); 
     } 
    } 
   } 
  } 
  String toAddress = buffer.toString(); 
  if (!toAddress.isEmpty()) { 
   // 创建邮件的接收者地址 
   Address[] to = InternetAddress.parse(toAddress); 
   // 设置邮件接收人地址 
   message.setRecipients(Message.RecipientType.TO, to); 
   // 邮件主题 
   message.setSubject("这个是主题"); 
   // 邮件容器 
   MimeMultipart mimeMultiPart = new MimeMultipart(); 
   // 设置HTML 
   BodyPart bodyPart = new MimeBodyPart(); 
   // 邮件内容 
   String htmlText = "这个是内容";
   bodyPart.setContent(htmlText, "text/html;charset=utf-8"); 
   mimeMultiPart.addBodyPart(bodyPart); 
   // 添加附件 
   List<String> fileAddressList = new ArrayList<String>(); 
   fileAddressList 
     .add("C:\\Users\\tuzongxun123\\Desktop\\新建 Microsoft Office Word 文档.docx"); 
   if (fileAddressList != null) { 
    BodyPart attchPart = null; 
    for (int i = 0; i < fileAddressList.size(); i++) { 
     if (!fileAddressList.get(i).isEmpty()) { 
      attchPart = new MimeBodyPart(); 
      // 附件数据源 
      DataSource source = new FileDataSource( 
        fileAddressList.get(i)); 
      // 将附件数据源添加到邮件体 
      attchPart.setDataHandler(new DataHandler(source)); 
      // 设置附件名称为原文件名 
      attchPart.setFileName(MimeUtility.encodeText(source 
        .getName())); 
      mimeMultiPart.addBodyPart(attchPart); 
     } 
    } 
   } 
   message.setContent(mimeMultiPart); 
   message.setSentDate(new Date()); 
   // 保存邮件 
   message.saveChanges(); 
   // 发送邮件 
   Transport.send(message); 
  } 
 } 
} 
 
class MailAuthenticator extends Authenticator { 
 
 /** 
  * 用户名 
  */
 private String username; 
 /** 
  * 密码 
  */
 private String password; 
 
 /** 
  * 创建一个新的实例 MailAuthenticator. 
  * 
  * @param username 
  * @param password 
  */
 public MailAuthenticator(String username, String password) { 
  this.username = username; 
  this.password = password; 
 } 
 
 public String getPassword() { 
  return password; 
 } 
 
 @Override
 protected PasswordAuthentication getPasswordAuthentication() { 
  return new PasswordAuthentication(username, password); 
 } 
 
 public String getUsername() { 
  return username; 
 } 
 
 public void setPassword(String password) { 
  this.password = password; 
 } 
 
 public void setUsername(String username) { 
  this.username = username; 
 } 
 
}


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