1.创建一个用户类,来接收发送邮件的邮箱地址和授权密码(需要注意的是,这里的密码不是正常使用邮箱的登陆密码,而是客户端生成的另一个专门的授权码   ,这里需要开启相应的发送邮件的服务,这里开启的是pop3/smtp服务)

package appsoft.cd.applications.cd_gcxm.web;import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;class MailAuthenticator extends Authenticator {      /** 用户名    */private String username;/**  密码    */ private String 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;
}   } 

2.编写相应的测试方法(这里的发送邮件的方法是带有相应的附件的,只是做了本地测试,所有相应的邮箱地址都写在了代码里面,这里可以根据需要自己灵活封装读取做变动),具体代码如下:

package appsoft.cd.applications.cd_gcxm.web;import java.util.Properties;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;public class SendToEmils {   public static void main(String[] args) throws Exception {    // 配置信息  Properties properties = new Properties();  properties.put("mail.smtp.host", "smtp.163.com");properties.put("mail.smtp.auth", "true");// 根据邮件的会话属性构造一个发送邮件的Session,//这里需要注意的是用户名那里不能加后缀,否则便不是用户名了  //还需要注意的是,这里的密码不是正常使用邮箱的登陆密码,而是客户端生成的另一个专门的授权码   MailAuthenticator authenticator = new MailAuthenticator("邮箱地址",      "授权码"); Session session = Session.getInstance(properties, authenticator);  // 根据Session 构建邮件信息 Message message = new MimeMessage(session);// 创建邮件发送者地址  Address from = new InternetAddress("邮箱地址"); // 设置邮件消息的发送者   message.setFrom(from);// 验证收件人邮箱地址  List<String> toAddressList = new ArrayList<String>();toAddressList.add("发送的邮箱地址"); 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("E:\\Test\\附件文件名称"); if (fileAddressList != null) {  BodyPart attchPart = null; for (int i = 0; i < fileAddressList.size(); i++) { if (!fileAddressList.get(i).isEmpty()) {   attchPart = new MimeBodyPart();       // 附件数据源        FileDataSource 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);    }   }  }

测试邮件发送成功,这里我是用163邮箱给QQ邮箱做的测试,测试是成功通过的,可以使用自己的qq邮箱申请授权码进行测试

java 代码实现163邮箱发送邮件到QQ邮箱相关推荐

  1. java模拟网易邮箱登录_java实现163邮箱发送邮件到qq邮箱成功案例

    下载和上传附件.发送短信和发送邮件,都算是程序中很常用的功能,之前记录了文件的上传和下载还有发送短信,由于最近比较忙,邮件发送的功能就没有时间去弄,现在终于成功以163邮箱发送邮件到qq邮箱,以下是相 ...

  2. java 给qq邮箱发邮件_java实现163邮箱发送邮件到qq邮箱成功案例

    这篇文章主要为大家分享了java实现163邮箱发送邮件到qq邮箱成功案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 下载和上传附件.发送短信和发送邮件,都算是程序中 ...

  3. 163邮箱java通用下载_java_java实现163邮箱发送邮件到qq邮箱成功案例,下载和上传附件、发送短信和 - phpStudy...

    java实现163邮箱发送邮件到qq邮箱成功案例 下载和上传附件.发送短信和发送邮件,都算是程序中很常用的功能,之前记录了文件的上传和下载还有发送短信,由于最近比较忙,邮件发送的功能就没有时间去弄,现 ...

  4. nodejs完成从163邮箱发送邮件到qq邮箱

    /*发送邮件第三方模块nodemailer专门用于发送邮件1 下载 命令行下载:npm install nodemailer2 在需要使用的文件中导入下载的第三方模块+ let nodemailer ...

  5. 使用QQ邮箱发送邮件,QQ邮箱的smtp设置

    首先要开启QQ邮箱的smtp服务,默认是关闭的. 登录QQ邮箱,点"设置" - "帐户". 找到"POP3/SMTP服务"和"IM ...

  6. java 代码发送邮件添加附件_Java实现163邮箱发送邮件到QQ邮箱

    先创建一个maven的普通项目 添加依赖,附在文档末尾 其中几个注意的地方 主方法入口 有一个包下载不下来,手动导入下 准备一个配置文件和主方法类 针对配置文件编写一个类用来接收配置文件中的配置信息 ...

  7. java 163邮箱发邮件_Java实现163邮箱发送邮件到QQ邮箱

    先创建一个maven的普通项目 添加依赖,附在文档末尾 其中几个注意的地方 主方法入口 有一个包下载不下来,手动导入下 准备一个配置文件和主方法类 针对配置文件编写一个类用来接收配置文件中的配置信息 ...

  8. JavaMail发送邮件到qq邮箱的过程中遇到的问题及解决办法

    今天在使用javamail发送邮件到qq邮箱的过程中,遇到了一些问题 刚开始按网上的代码写 // 发送纯文本信息 Properties prop = new Properties(); prop.se ...

  9. golang如何发送邮件(qq邮箱)

    文章目录 golang发送邮件(qq邮箱) 前期准备 代码编写 效果展示 golang发送邮件(qq邮箱) 前期准备 golang发送邮件的功能,我们今天介绍golang发送qq邮件,相信大家都有qq ...

最新文章

  1. 世界知名XML专家力作 ——《重构HTML:改善Web应用的设计》
  2. 动态取得当前程序的版本号
  3. 计算机视觉与图像处理、模式识别、机器学习学科之间的关系
  4. 思科网络技术学院CCNA教程
  5. 【Java】类加载过程
  6. Android之使用MediaMetadataRetriever类获取视频第一帧
  7. 2022春节档新片预售总票房达1.08亿
  8. CPU中的Little Endian与Big Endian
  9. python openpyxl创建excel文件-python之openpyxl生成excel文件
  10. 基于单片机的人体心率脉搏检测系统
  11. [境内法规]中国人民银行关于印发《反洗钱现场检查管理办法(试行)》的通知—银发〔2007〕175号
  12. pandas填充空数组_Pandas 数据处理:空值清理、联级、合并、缺省空值填充
  13. “你打算怎么构建云安全资源池”
  14. 国密SM算法有哪些?
  15. python蜂鸣器_Python与硬件学习笔记:蜂鸣器(转)
  16. matlab求n阶行列式,发福利了,线性代数n阶行列式计算器!(需要的拿走吧)
  17. 现代制造业信息化建设的主要内容
  18. 计算机网络大学宿舍组网方案设计,学生公寓组网方案推荐 精品推荐
  19. 开源公告|腾讯代码安全指南开源,涉及C/C++、Go等六门编程语言
  20. UNI-APP_uni-app uni.getUserProfile微信授权,微信授权信息显示微信用户解决

热门文章

  1. kali更新源没有mysql_Kali更新源添加
  2. java单链表通讯录_[源码和文档分享]C++实现的基于链表的通讯录管理系统
  3. 黄海高程和海拔高程之间的转换
  4. linux资源共享方法
  5. CORD-19数据集以及相关分析代码介绍
  6. PNA肽核酸修饰多肽Pro-Phe-Arg-pNA (S-2302)|Dnp-Gly-X-L-Pro-Gly-pNA
  7. 从零开始上传开源项目到Maven中央仓库
  8. 2021年全球十大数据安全事件
  9. [转]用Hadoop,还是不用Hadoop?
  10. c语言用typedef定义结构体,C语言结构体定义 typedef struct