程序入口:
Test_Email_N.java
import java.io.IOException; import java.util.Date; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; public class Test_Email_N { public static void main(String args[]){ try { send_email(); }catch (Exception e) { e.printStackTrace(); } } public static void send_email() throws IOException, AddressException, MessagingException{ String to = "[email protected]"; String subject = "subject"; String content = "content"; Properties properties = new Properties(); properties.put("mail.smtp.host", "smtp.qq.com"); properties.put("mail.smtp.port", "25"); properties.put("mail.smtp.auth", "true"); Authenticator authenticator = new Email_Authenticator("[email protected]", "password"); javax.mail.Session sendMailSession = javax.mail.Session.getDefaultInstance(properties, authenticator); MimeMessage mailMessage = new MimeMessage(sendMailSession); mailMessage.setFrom(new InternetAddress("[email protected]")); // Message.RecipientType.TO属性表示接收者的类型为TO mailMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(to)); mailMessage.setSubject(subject, "UTF-8"); mailMessage.setSentDate(new Date()); // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象 Multipart mainPart = new MimeMultipart(); // 创建一个包含HTML内容的MimeBodyPart BodyPart html = new MimeBodyPart(); html.setContent(content.trim(), "text/html; charset=utf-8"); mainPart.addBodyPart(html); mailMessage.setContent(mainPart); Transport.send(mailMessage); } }
其中依赖的jar包为javax.mail,我这里是maven管理的,直接用maven去下载jar包,也可以到https://java.net/projects/javamail/pages/Home直接下载jar包.
<dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.5.0-b01</version> </dependency>
Email_Authenticator.java,这里继承了Authenticator 类,用来封装name,和password的:
package com.infomorrow.webtest.JuxinliTest.restdetect; import javax.mail.Authenticator; import javax.mail.PasswordAuthentication; public class Email_Authenticator extends Authenticator { String userName = null; String password = null; public Email_Authenticator() { } public Email_Authenticator(String username, String password) { this.userName = username; this.password = password; } protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(userName, password); } }
配置就这么多,把邮箱密码改成自己的就可以了,否则会报错。程序到这就可以运行了!
/*****************************************************************/
下面介绍的是配置properties文件来管理账号密码:
如下图,新建一个email.propertis文件。
email.propertis:
mail.smtp.host=smtp.qq.com mail.smtp.port=25 username=1215186706@qq.com password=password
Test_Email.java 代码改为如下:
package com.infomorrow.webtest.JuxinliTest.restdetect; import java.io.IOException; import java.io.InputStream; import java.util.Date; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; public class Test_Email {
public static void main(String args[]){
try {
send_email();
}catch (Exception e) { e.printStackTrace(); } } public static void send_email() throws IOException, AddressException, MessagingException{ String to = "[email protected]"; String subject = "subject";//邮件主题 String content = "content";//邮件内容 Properties properties = new Properties(); InputStream resourceAsStream = null; try { resourceAsStream = Object.class.getResourceAsStream("/email.properties"); properties.load(resourceAsStream); } finally{ if (resourceAsStream!=null) { resourceAsStream.close(); } } System.err.println("properties:"+properties); properties.put("mail.smtp.host", properties.get("mail.smtp.host")); properties.put("mail.smtp.port", properties.get("mail.smtp.port")); properties.put("mail.smtp.auth", "true"); Authenticator authenticator = new Email_Authenticator(properties.get("username").toString(), properties.get("password").toString()); javax.mail.Session sendMailSession = javax.mail.Session.getDefaultInstance(properties, authenticator); MimeMessage mailMessage = new MimeMessage(sendMailSession); mailMessage.setFrom(new InternetAddress(properties.get("username").toString())); // Message.RecipientType.TO属性表示接收者的类型为TO mailMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(to)); mailMessage.setSubject(subject, "UTF-8"); mailMessage.setSentDate(new Date()); // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象 Multipart mainPart = new MimeMultipart(); // 创建一个包含HTML内容的MimeBodyPart BodyPart html = new MimeBodyPart(); html.setContent(content.trim(), "text/html; charset=utf-8"); mainPart.addBodyPart(html); mailMessage.setContent(mainPart); Transport.send(mailMessage); } }
ok,到此为止。