SpringMvc使用JavaMail发送邮件,并使用465端口开启ssl加密传输,保证邮件安全
代码在本地发邮件没任何问题。但部署到服务器,发送邮件显示连接异常。一开始非常懵逼,之后telnet smtp.163.com 25不通,发现是云服务器出于安全考虑,关闭了服务器的25端口,而25端口是smtp的默认端口。之后telnet smtp.163.com 465能通(邮件服务商的加密的465端口)。
1、POM文件配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version> 4.1 . 6 .RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version> 4.1 . 6 .RELEASE</version> </dependency> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version> 1.4 . 7 </version> </dependency> </dependencies> |
2、spring 配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <! - - 邮箱配置 - - > <bean id = "mailSender" class = "org.springframework.mail.javamail.JavaMailSenderImpl" > < property name = "host" value = "smtp.163.com" / > < property name = "username" value = "********" / > < property name = "password" value = "********" / > < property name = "port" value = "465" / > < property name = "javaMailProperties" > <props> <prop key = "mail.smtp.auth" >true< / prop> <prop key = "mail.smtp.timeout" > 50000 < / prop> <prop key = "mail.smtp.starttls.enable" >true< / prop> <! - - <prop key = "mail.debug" >true< / prop> - - > <prop key = "mail.smtp.socketFactory.port" > 465 < / prop> <prop key = "mail.smtp.socketFactory.class" >javax.net.ssl.SSLSocketFactory< / prop> <prop key = "mail.smtp.socketFactory.fallback" >false< / prop> < / props> < / property > < / bean> |
3、代码实例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | /** * 组织邮件信息并发送邮件 * * @param toAddress * @param fromAddress * @param subject * @param htmlBody * @throws MessagingException */ public void sendHtmlEmail(String toAddress, String fromAddress, String subject, String htmlBody) throws MessagingException { MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, "UTF-8" ); helper.setTo(toAddress); helper.setFrom(fromAddress); helper.setText(htmlBody, true ); helper.setSubject(subject); mailSender.send(message); } this .sendHtmlEmail( "18753377533@163.com" , "sender@163.com" , "找回您的账户密码" , emailContent); |
https://www.cnblogs.com/dixinyunpan/p/6041278.html
https://blog.csdn.net/yuruixin_china/article/details/73276390
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2018-05-30 Hyperledger Fabric CA的命令行用法