JAVA实现发送QQ邮件

1.使用jar包

  • mail-1.4.jar
  • activation-1.1.1.jar 

2.QQ邮箱需获取相应的权限

  QQ邮箱–>邮箱设置–>账户–>POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 开启POP3/SMTP服务,然后获取16位授权码(注意不要将授权码泄露,一个账户可以拥有多个授权码)

  

3.实现发送简单的纯文本信息

//1.创建Properties配置服务器基本信息
Properties pro=new Properties();
pro.setProperty("mail.smtp.host","邮件服务器地址");
//设置传输协议
pro.setProperty("mail.transport.protocol","smtp");
//设置用户的认证方式
pro.setProperty("mail.smtp.auth","true");
//QQ设置SSL加密
MailSSLSocketFactory sf=new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
pro.setProperty("mail.smtp.ssl.enable","true");
pro.put("mail.smtp.ssl.socketFactory",sf);

//2.创建Session对象
Session session=Session.getInstance(pro);
//开启debug模式
session.setDebug(true);

//3.创建Transport对象
Transport transport=session.getTransport();
//连接邮件服务器
transport.connect("邮件服务器地址","发送人邮件地址","登录密码");

//4.创建MimeMessage对象
MimeMessage message=new MimeMessage(session);
//设置发件人地址
message.setFrom(new InternetAddress(sendAddress));
//设置收件人地址
message.setRecipient(MimeMessage.RecipientType.TO,new InternetAddress(getAddress));
//设置邮件主题
message.setSubject(subject,"UTF-8");
//设置邮件正文
message.setText(content, "text/html;charset=UTF-8");
//设置邮件的发送时间,默认立即发送
message.setSentDate(new Date());
//发送邮件,并发送到所有收件人地址,message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人
transport.sendMessage(message,message.getAllRecipients());
//关闭连接
transport.close();

 4.发送带图片的QQ邮件(其他不变修改message.setText(content, "text/html;charset=UTF-8");为以下代码即可)

MimeBodyPart image=new MimeBodyPart();
//加载图片封装为DataHandler对象
DataHandler handler=new DataHandler(new FileDataSource(图片存放的位置));
image.setDataHandler(handler);
//设置图片id
image.setContentID(唯一的ID字符串);
//准备文本
MimeBodyPart text=new MimeBodyPart();
text.setContent("这是一个图片<img src='cid:唯一的ID字符串'>","text/html;charset=utf-8");
//拼接邮件
MimeMultipart content=new MimeMultipart();
content.addBodyPart(image);
content.addBodyPart(text);
content.setSubType("related"); 

5.发送带附件的QQ邮件(其他不变修改message.setText(content, "text/html;charset=UTF-8");为以下代码即可)

MimeBodyPart image=new MimeBodyPart();
//加载图片封装为DataHandler对象
DataHandler handler=new DataHandler(new FileDataSource(图片存放的位置));
image.setDataHandler(handler);
//设置文件名
image.setFileName("唯一文件名");
//拼接邮件
MimeMultipart content=new MimeMultipart();
content.addBodyPart(image);
content.setSubType("mixed");
posted @ 2022-01-11 18:10  稚终KINO  阅读(339)  评论(0)    收藏  举报