600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 【Java】使用JavaMail发送qq邮件

【Java】使用JavaMail发送qq邮件

时间:2024-07-11 01:48:29

相关推荐

【Java】使用JavaMail发送qq邮件

因为需求,尝试了一下使用java向指定用户发送邮件,亲测有效,源码奉上!

准备工作:

下载JavaMail的jar包:/artifact/javax.mail/mail/1.4.7

开启邮件发送方IMAP/SMTP服务

开启后会获得授权码

什么是授权码?

授权码是QQ邮箱推出的,用于登录第三方客户端的专用密码。

适用于登录以下服务:POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务。

温馨提醒:为了你的帐户安全,更改QQ密码以及独立密码会触发授权码过期,需要重新获取新的授权码登录。

怎么获取授权码?

先进入设置-》帐户页面找到入口,按照以下流程操作。

(1)点击“开启”

(2)验证密保

(3)获取授权码

代码测试:

import java.util.Properties;import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.Address;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;import com.sun.mail.util.MailSSLSocketFactory;public class MailTest {public static void main(String[] args) throws Exception {Properties props = new Properties();// 开启debug调试props.setProperty("mail.debug", "true");// 发送服务器需要身份验证props.setProperty("mail.smtp.auth", "true");// 设置邮件服务器主机名props.setProperty("mail.host", "");// 发送邮件协议名称props.setProperty("mail.transport.protocol", "smtp");MailSSLSocketFactory sf = new MailSSLSocketFactory();sf.setTrustAllHosts(true);props.put("mail.smtp.ssl.enable", "true");props.put("mail.smtp.ssl.socketFactory", sf);// 根据propertise创建会话Session session = Session.getInstance(props);// 根据会话创建邮件信息Message msg = new MimeMessage(session);// 邮件主题msg.setSubject("JavaMail Test");//创建图片节点MimeBodyPart image = new MimeBodyPart();//读取本地文件DataHandler dataHandler = new DataHandler(new FileDataSource("src/lib/love.jpg"));//将图片添加至结点image.setDataHandler(dataHandler);//为"节点"设置一个唯一编号image.setContentID("pic");// 创建文本"节点"MimeBodyPart text = new MimeBodyPart();// 这里添加图片的方式是将整个图片包含到邮件内容中text.setContent("<br/><h2>我爱你<h2>"+ "<a href='/weixin_41978722'>网址链接测试</a>"+ "<img src='cid:pic'/>", "text/html;charset=UTF-8");// 创建附件结点(源代码)MimeBodyPart attachment = new MimeBodyPart();// 读取本地文件DataHandler dataHandler1 = new DataHandler(new FileDataSource("src/com/funyoo/mail/test/MailTest.java"));// 将文件添加至结点attachment.setDataHandler(dataHandler1);// 设置附件的文件名(需要编码)attachment.setFileName(MimeUtility.encodeText(dataHandler1.getName())); // 创建附件结点(mail.jar包)MimeBodyPart jar = new MimeBodyPart();// 读取本地文件DataHandler dataHandler2 = new DataHandler(new FileDataSource("src/lib/mail-1.4.7.jar"));// 将文件添加至结点jar.setDataHandler(dataHandler2);// 设置附件的文件名(需要编码)jar.setFileName(MimeUtility.encodeText(dataHandler2.getName())); // 创建混合节点 将图片节点 文件结点 附件结点 加入MimeMultipart multipart = new MimeMultipart();multipart.addBodyPart(image);multipart.addBodyPart(text);multipart.addBodyPart(attachment);multipart.addBodyPart(jar);// 将混合节点加入邮件中msg.setContent(multipart);// 设置邮件发送方msg.setFrom(new InternetAddress("发送方邮箱地址"));// 开始会话传输Transport transport = session.getTransport();// 连接邮箱 加入自己(发送方)授权码transport.connect("", "发送方邮箱地址", "授权码");// 给目标邮箱发送邮件transport.sendMessage(msg, new Address[] { new InternetAddress("收件方邮箱") });transport.close();}}

结果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。