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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | //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");为以下代码即可)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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" );<em id= "__mceDel" style= "background-color: rgba(255, 255, 255, 1); font-family: "PingFang SC", "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px" > </em> |
5.发送带附件的QQ邮件(其他不变修改message.setText(content, "text/html;charset=UTF-8");为以下代码即可)
1 2 3 4 5 6 7 8 9 10 | 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" ); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人