java实现发送邮件的示例代码
作者:布诺 发布时间:2023-07-04 17:00:54
标签:JAVA,发送,邮件
代码
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;
import javax.mail.Session;
import javax.mail.MessagingException;
import javax.mail.Transport;
/**
* @author BuNuo
*/
public class SendHtmlMail {
/**
* @param to 邮件接收者
* @param subject 邮件主题
* @param messageText 邮件内容,可以是html代码
* @throws MessagingException
* @throws java.io.UnsupportedEncodingException
*/
public static void sendMessage(String to, String subject, String messageText)
throws MessagingException, java.io.UnsupportedEncodingException {
// Step 1: Configure the mail session
String from = "******"; //发送邮件的账号
String password = "******"; //Password
String smtpHost = "smtp.163.com"; //SMTP服务器
java.util.Properties props = new java.util.Properties();
props.setProperty("mail.smtp.auth", "true");// 指定是否需要SMTP验证
props.setProperty("mail.smtp.host", smtpHost);// 指定SMTP服务器
props.put("mail.transport.protocol", "smtp");
Session mailSession = Session.getDefaultInstance(props);
mailSession.setDebug(false);// 是否在控制台显示debug信息
// Step 2: Construct the message
System.out.println("Constructing message - from=" + from + " to=" + to);
InternetAddress fromAddress = new InternetAddress(from);
InternetAddress toAddress = new InternetAddress(to);
MimeMessage testMessage = new MimeMessage(mailSession);
testMessage.setFrom(fromAddress);
testMessage.addRecipient(javax.mail.Message.RecipientType.TO, toAddress);
testMessage.setSentDate(new java.util.Date());
testMessage.setSubject(MimeUtility.encodeText(subject, "gb2312", "B"));
testMessage.setContent(messageText, "text/html;charset=gb2312");
System.out.println("Message constructed");
// Step 3: Now send the message
Transport transport = mailSession.getTransport("smtp");
transport.connect(smtpHost, from, password);
transport.sendMessage(testMessage, testMessage.getAllRecipients());
transport.close();
System.out.println("Message sent!");
}
}
测试代码
String to = "173××××0190@163.com";
System.out.println("to=:"+to);
String subject = "邮件测试"; // subject javamail自动转码
StringBuffer message = new StringBuffer();
message.append("<table style='margin: 25px auto;' border='0' cellspacing='0' cellpadding='0' width='648' align='center'>");
message.append("<tbody>");
message.append("<tr><td style='color:#40AA53;'><h1 style='margin-bottom:10px;'>bjcodes</h1></td></tr>");
message.append("<tr>");
message.append("<td style='border-left: 1px solid #D1FFD1; padding: 20px 20px 0px; background: none repeat scroll 0% 0% #ffffff; border-top: 5px solid #40AA53; border-right: 1px solid #D1FFD1;'>");
message.append("<p>HelloWorld, 你好 </p>");
message.append("</td>");
message.append("</tr>");
message.append("<tr>");
message.append("<td style='border-left: 1px solid #D1FFD1; padding: 10px 20px; background: none repeat scroll 0% 0% #ffffff; border-right: 1px solid #D1FFD1;'>");
message.append("<p>您已经成功为<strong>bjcodes</strong>会员!</p>");
message.append("<p style='font-weight:bold'>请点击以下链接:<br>");
message.append("<a href='http://www.bjcodes.com'>http://www.bjcodes.com</a></p>");
message.append("</td>");
message.append("</tr>");
message.append("<tr>");
message.append("<td style='border-bottom: 1px solid #D1FFD1; border-left: 1px solid #D1FFD1; padding: 0px 20px 20px; background: none repeat scroll 0% 0% #ffffff; border-right: 1px solid #D1FFD1;'>");
message.append("<p><img title='微信二维码' src='http://bjcodes.com/images/code.jpg' alt=''></p>");
message.append("<p style='color:#060;font-size:9pt;'>扫一扫,关注 bjcodes 微信公共号,更方便获知每日精彩推荐</p>");
message.append("<p style='color:#060;font-size:9pt;'>想了解更多信息,请访问 <a href='http://www.bjcodes.com' target='_blank'>http://www.bjcodes.com</a></p>");
message.append("</td>");
message.append("</tr>");
message.append("</tbody>");
message.append("</table>");
message.append("<style type='text/css'>");
message.append("body{font-size:14px;font-family:arial,verdana,sans-serif;line-height:1.666;padding:0;margin:0;overflow:auto;white-space:normal;word-wrap:break-word;min-height:100px}");
message.append("td, input, button, select, body{font-family:Helvetica, 'Microsoft Yahei', verdana}");
message.append("pre {white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;width:95%}");
message.append("th,td{font-family:arial,verdana,sans-serif;line-height:1.666}");
message.append("img{ border:0}");
message.append("header,footer,section,aside,article,nav,hgroup,figure,figcaption{display:block}");
message.append("</style>");
message.append("<style id='ntes_link_color' type='text/css'>a,td a{color:#064977}</style>");
try {
SendHtmlMail.sendMessage(to, subject,message.toString());
} catch (javax.mail.MessagingException exc) {
exc.printStackTrace();
} catch (java.io.UnsupportedEncodingException exc) {
exc.printStackTrace();
}
测试结果
来源:https://www.cnblogs.com/bunuo/p/6306110.html


猜你喜欢
- 什么是自旋锁说道自旋锁就要从多线程下的锁机制说起,由于在多处理器系统环境中有些资源因为其有限性,有时需要互斥访问(mutual exclus
- 用 Android studio软件写的一个 * 小游戏先上MainActivity.java 的代码。这里我用得定时器,本想用j
- 本文实例为大家分享了java实现打砖块小游戏的具体代码,供大家参考,具体内容如下源码共包含两个文件文件1:play_zhuankuai.ja
- C++ 实现求最大公约数和最小公倍数最大公约数辗转相除法:int maxDivisor(int a, int b) { int
- 一般项目做到后期,在测试的时候,需要在测试版本和正式版本之间进行频繁的切换,怎么办呢?土豪的话可以考虑使用两台机器,同时测试,然而为了方便测
- 本文为大家分享的java算法计算阶乘,在学习Java课程时经常会遇到求阶乘问题,今天接跟大家一起探讨一下代码如下:package com.x
- 本章讲述:FileStream类的基本功能,以及简单示例;1、引用命名空间:using System.IO;2、注意:使用IO操作文件时,要
- using System.Xml;//初始化一个xml实例XmlDocument xml=new XmlDocument();//导入指定x
- WebView2简介概述WebView2 全称 Microsoft Edge WebView2 控件,此控件的作用是在本机桌面应用中嵌入we
- MVC中,一般的情况下,使用IDE工具帮我们生成的代码,在路由注册的时候:public static void RegisterRoutes
- mysql有个字段是bit,只存储1和0,是二进制存储,那么在java的dao层如何映射成boolean呢@Column(name=&quo
- eclipse配置tomcattomcat资源下载如果打开没有servers请查看这篇文章:eclipse创建项目没有dynamic web
- 一、问题Spring2.1.5集成activiti7.1.24时访问要输入用户名和密码。 @Autowired private
- 发现坑最近在配置项目主题的时候报了如下错误:This Activity already has an action bar supplied
- 本文实例为大家分享了java使用字符画一个海绵宝宝的具体代码,供大家参考,具体内容如下用字符画一个海绵宝宝用" &ldqu
- 有这样一道面试题:如何将SQLite数据库(dictionary.db文件)与apk文件一起发布? 答: 把这个文件
- Comparable 简介Comparable 是排序接口。若一个类实现了Comparable接口,就意味着“该类支持排序”。
- 扩展阅读c#基础系列1---深入理解 值类型和引用类型c#基础系列2---深入理解 String引言在上篇文章深入理解值类型和引用类型的时候
- 一、前言spring cloud大行其道的当下,如果不了解基本原理那么是很纠结的(看见的都是 约定大于配置 ,但是原理呢?为什么要这么做?)
- 本文实例讲述了C#中数组段用法。分享给大家供大家参考。具体分析如下:1.数组段说明① 结构ArraySegment<T>表示数组