使用Java实现qq邮箱发送邮件

作者:缺德的伯爵 时间:2023-10-14 18:24:36 

本文实例为大家分享了Java操作qq邮箱发送邮件的具体代码,供大家参考,具体内容如下

今天尝试了使用QQ邮箱的POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务来进行发送邮件!(这些个服务就是些协议,只有开启了之后就可以做一些操作)

步骤

1、登录QQ邮箱> 设置 > 账户

使用Java实现qq邮箱发送邮件

2、找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
开启 POP3/SMTP 服务 > 拿到授权码

使用Java实现qq邮箱发送邮件

3、创建maven项目

4、在pom.xml导入依赖包


<!-- java发送邮件jar包 -->
  <dependency>
   <groupId>javax.mail</groupId>
   <artifactId>mail</artifactId>
   <version>1.4.7</version>
</dependency>

5、创建java类 类名取为:SendEmailManger(注意包别导错了)


package com.xdl.util;

import com.sun.mail.util.MailSSLSocketFactory;

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
/**
* 邮件发送
*     QQ邮箱--->别的邮箱
* @author shiyunpeng
*/
public class SendEmailManger extends Thread {
 private String mailAdr;//邮箱
 private String content;//邮件的内容
 private String subject;//邮件的题目
 public SendEmailManger(String mailAdr, String subject, String content) {
   super();
   this.mailAdr = mailAdr;
   this.subject = subject;
   this.content = content;
 }
 @Override
 public void run() {
   super.run();
   try {
     sendMail(mailAdr, subject, content);
   } catch (Exception e) {
     e.printStackTrace();
   }
 }
 private void sendMail(String mailAdr, String subject, String content) throws Exception {
   //加密的邮件套接字协议工厂
   MailSSLSocketFactory sf = new MailSSLSocketFactory();
   sf.setTrustAllHosts(true);
   final Properties props = new Properties();
   // 表示SMTP发送邮件,需要进行身份验证
   props.put("mail.transport.protocol", "smtp");
   props.put("mail.smtp.auth", "true");
   props.put("mail.smtp.host", "smtp.qq.com");
   // smtp登陆的账号、密码 ;需开启smtp登陆
   props.setProperty("mail.debug", "true");
   props.put("mail.user", "发送者邮箱");
   props.put("mail.password", "授权码");
   // 特别需要注意,要将ssl协议设置为true,否则会报530错误
   props.put("mail.smtp.ssl.enable", "true");
   props.put("mail.smtp.ssl.socketFactory", sf);
   Authenticator authenticator = new Authenticator() {
     protected PasswordAuthentication getPasswordAuthentication() {
       // 用户名、密码
       String userName = props.getProperty("mail.user");
       String password = props.getProperty("mail.password");
       return new PasswordAuthentication(userName, password);
     }
   };
   // 使用环境属性和授权信息,创建邮件会话
   Session mailSession = Session.getInstance(props, authenticator);
   // 创建邮件消息
   MimeMessage message = new MimeMessage(mailSession);
   // 设置发件人
   try {
     InternetAddress form = new InternetAddress(props.getProperty("mail.user"));
     message.setFrom(form);
     // 设置收件人
     InternetAddress to = new InternetAddress(mailAdr);
     message.setRecipient(Message.RecipientType.TO, to);
     // 设置抄送
     // InternetAddress cc = new InternetAddress("591566764@qq.com");
     // message.setRecipient(RecipientType.CC, cc);
     // 设置密送,其他的收件人不能看到密送的邮件地址
     // InternetAddress bcc = new InternetAddress("mashen@163.com");
     // message.setRecipient(RecipientType.CC, bcc);
     // 设置邮件标题
     message.setSubject(subject);
     // 设置邮件的内容体
     message.setContent(content, "text/html;charset=UTF-8");
     // 发送邮件
     Transport.send(message);
   } catch (MessagingException e) {
     e.printStackTrace();
   }
 }
 public static void main(String[] args) {
   SendEmailManger d = new SendEmailManger("接收邮件的邮箱", "syp:", "我呵呵,啊打: <br/><br/>加油哦!!!!....");
   d.start();
 }
}
标签:java,发送邮件
0
投稿

猜你喜欢

  • c# socket编程udp客户端实现代码分享

    2023-06-16 05:03:31
  • Java编程计算兔子生兔子的问题

    2023-08-01 15:24:37
  • Android API开发之SMS短信服务处理和获取联系人的方法

    2021-10-23 03:22:15
  • java-for循环问题

    2022-01-22 12:46:53
  • 基于android studio的layout的xml文件的创建方式

    2022-10-31 10:52:06
  • Android自定义Adapter的ListView的思路及代码

    2023-10-21 17:56:16
  • C#中把任意类型的泛型集合转换成SQLXML数据格式的实例

    2022-12-24 08:16:21
  • SpringBoot在Controller层接收参数的n种姿势(超详细)

    2023-01-28 00:54:39
  • Java调用shell命令涉及管道、重定向时不生效问题及解决

    2021-07-18 17:02:25
  • Java中数组在内存中存放原理的讲解

    2022-12-10 03:48:35
  • C#中如何使用Chart图表问题

    2023-04-02 16:35:06
  • 详解SpringCloud的负载均衡

    2022-03-14 03:42:28
  • Flutter Android应用启动白屏的解决方案

    2022-10-02 04:08:04
  • C#异步下载文件

    2021-10-05 03:23:40
  • Android应用创建多个快捷方式

    2022-10-08 11:26:00
  • C#浏览器提示跨域问题解决方案

    2023-08-30 17:37:28
  • SpringBoot之导入静态资源详解

    2021-06-22 05:01:30
  • Java 集合概览(小结)

    2023-11-08 02:50:37
  • Spring Data Jpa框架最佳实践示例

    2021-11-25 00:43:01
  • 详解SpringBoot注册Windows服务和启动报错的原因

    2022-12-28 17:10:09
  • asp之家 软件编程 m.aspxhome.com