javamail发送邮件
1. jar包:
mail.jar
2. java 类
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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | package com.yoplore.apollo.wanwei; import java.util.*; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; 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 com.sun.mail.util.MailSSLSocketFactory; public class SendEmail{ public void sendEmail(String senderQQ,String senderQQAuthorizationCode,String recipientQQMail,String ccListQQMail,String mailTitle,String station_name,String station_code ) throws Exception{ //拼接发件人QQ邮箱地址 String senderQQEmail = senderQQ + "@qq.com" ; Properties prop = new Properties(); // 开启debug调试,以便在控制台查看 prop.setProperty( "mail.debug" , "false" ); // 设置邮件服务器主机名 prop.setProperty( "mail.host" , "smtp.qq.com" ); // 发送服务器需要身份验证 prop.setProperty( "mail.smtp.auth" , "true" ); // 发送邮件协议名称 prop.setProperty( "mail.transport.protocol" , "smtp" ); //使用SSL,企业邮箱必需! //开启安全协议 // 开启SSL加密,否则会失败 MailSSLSocketFactory sf = null ; try { sf = new MailSSLSocketFactory(); sf.setTrustAllHosts( true ); } catch (Exception e1) { e1.printStackTrace(); } prop.put( "mail.smtp.ssl.enable" , "true" ); prop.put( "mail.smtp.ssl.socketFactory" , sf); // // //获取Session对象 // Session s = Session.getDefaultInstance(prop,new Authenticator() { // //此访求返回用户和密码的对象 // @Override // protected PasswordAuthentication getPasswordAuthentication() { // PasswordAuthentication pa = new PasswordAuthentication("wygm@daee.cn", "Ok1234"); // return pa; // } // }); // //设置session的调试模式,发布时取消 // s.setDebug(true); // 创建session Session session = Session.getInstance(prop); // 通过session得到transport对象 Transport ts; try { ts = session.getTransport(); // 连接邮件服务器:邮箱类型,帐号,授权码 // qq邮箱授权码获取:登录QQ邮箱 → 设置 → 账户 → 找到IMAP/SMTP服务,点击开启 ,开启后会获取一个授权码 // 创建邮件 Message message = new MimeMessage(session); // 指明邮件的发件人 message.setFrom( new InternetAddress(senderQQEmail)); // 指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发 // Message.RecipientType.TO 收件人 // Message.RecipientType.CC 抄送人 // Message.RecipientType.BCC 暗送人 message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipientQQMail)); message.setRecipient(Message.RecipientType.CC, new InternetAddress(ccListQQMail)); // 邮件的标题 message.setSubject(mailTitle); MimeBodyPart text = new MimeBodyPart(); text.setContent( "<p>王工,你好~<br/></p>我是远索科技有限公司的工程师<br/>我们新引入了一个电站数据,电站数据如下:<br/>" + " ① 电站名称:" +station_name+ ",电站编码:" +station_code, "text/html;charset=UTF-8" ); // // 准备图片数据 // MimeBodyPart image = new MimeBodyPart(); // DataHandler dh = new DataHandler(new FileDataSource("E:\\1.png")); // image.setDataHandler(dh); // image.setContentID("xxx.jpg"); // 附件部分 // MimeBodyPart messageBodyPart = new MimeBodyPart(); // String filename = "E:\\1.png"; // DataSource source = new FileDataSource(filename); // messageBodyPart.setDataHandler(new DataHandler(source)); // messageBodyPart.setFileName(filename); // 描述数据关系 MimeMultipart mm = new MimeMultipart(); mm.addBodyPart(text); // mm.addBodyPart(image); // mm.addBodyPart(messageBodyPart); mm.setSubType( "related" ); message.setContent(mm); message.saveChanges(); // 发送邮件 ts.sendMessage(message, message.getAllRecipients()); ts.close(); } catch (Exception e) { // TODO Auto-generated catch block // e.printStackTrace(); throw e; } } } |
3. 调用java 类
1 2 3 4 5 6 7 8 9 10 | try { //添加成功,发送邮件通知 SendEmail email = new SendEmail(); email.sendEmail(Configs.senderQQ, Configs.senderQQAuthorizationCode, Configs.recipientQQMail, Configs.CcListQQMail, Configs.mailTitle,station_name,station_code); cmdRes = ConstantUtil.CMD_RES_SUCCESS; resFailReason = newMap.get( "failreason" ).toString(); } catch (Exception e) { cmdRes = ConstantUtil.CMD_RES_FAIL; resFailReason = "添加成功,邮件通知失败,请联系相关人员,手动发送邮件通知第三方!" ; } |
4. 配置变量
1 2 3 4 5 | public static final String senderQQ = "******" ; //发件人的QQ号 public static final String senderQQAuthorizationCode = "**********" ; //发件人的QQ授权码, public static final String recipientQQMail = "*****@yeah.net" ; //收件人的QQ邮箱 public static final String CcListQQMail = "******@qq.com" ; //抄送人的QQ邮箱 public static final String mailTitle = "关于 引、泄水流量数据接入" ; //发送邮件主题 |
5. 关于发件人的QQ授权码获取步骤
qq邮箱授权码获取:登录QQ邮箱 → 设置 → 账户 → 找到IMAP/SMTP服务,点击开启 ,开启后会获取一个授权码
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 2025成都.NET开发者Connect圆满结束
· Ollama本地部署大模型总结
· langchain0.3教程:从0到1打造一个智能聊天机器人
· 在 VS Code 中,一键安装 MCP Server!
· 用一种新的分类方法梳理设计模式的脉络