java发送邮件
来源:互联网 发布:网眼空间绑定域名教程 编辑:程序博客网 时间:2024/06/17 16:31
需要依赖的jar
<!-- https://mvnrepository.com/artifact/javax.mail/mail -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
基本信息类需要 继承 javax.mail.Authenticator
package data.test.my.email;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
public class AuthEmail extends Authenticator {
private String passWord;
private String userName;
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public AuthEmail(String passWord, String userName) {
this.passWord = passWord;
this.userName = userName;
}
// 该方法必须
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(this.userName, this.passWord);
}
}
实际发送类
package data.test.my.email;
import java.util.List;
import java.util.Properties;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class SimpleMailSender {
/**
* 发送邮件的props文件
*/
private final transient Properties props = System.getProperties();
/**
* 邮件服务器登录验证
*/
private transient AuthEmail authenticator;
/**
* 邮箱session
*/
private transient Session session;
/**
* 初始化邮件发送器
*
* @param smtpHostName SMTP邮件服务器地址
* @param username 发送邮件的用户名(地址)
* @param password 发送邮件的密码
*/
public SimpleMailSender(final String smtpHostName, final String username,
final String password) {
init(username, password, smtpHostName);
}
/**
* 初始化邮件发送器
*
* @param username 发送邮件的用户名(地址),并以此解析SMTP服务器地址
* @param password 发送邮件的密码
*/
public SimpleMailSender(final String username, final String password) {
// 通过邮箱地址解析出smtp服务器,对大多数邮箱都管用
final String smtpHostName = "smtp." + username.split("@")[1];
init(username, password, smtpHostName);
}
/**
* 初始化
*
* @param username 发送邮件的用户名(地址)
* @param password 密码
* @param smtpHostName SMTP主机地址
*/
private void init(String username, String password, String smtpHostName) {
// 初始化props
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.host", smtpHostName);
// 验证
authenticator = new AuthEmail(username, password);
// 创建session
session = Session.getInstance(props, authenticator);
}
/**
* 发送邮件
*
* @param recipient 收件人邮箱地址
* @param subject 邮件主题
* @param content 邮件内容
* @throws AddressException
* @throws MessagingException
*/
public void send(String recipient, String subject, Object content)
throws AddressException, MessagingException {
// 创建mime类型邮件
final MimeMessage message = new MimeMessage(session);
// 设置发信人
message.setFrom(new InternetAddress(authenticator.getUserName()));
// 设置收件人
message.setRecipient(RecipientType.TO, new InternetAddress(recipient));
// 设置主题
message.setSubject(subject);
// 设置邮件内容
message.setContent(content.toString(), "text/html;charset=utf-8");
// 发送
Transport.send(message);
}
/**
* 群发邮件
*
* @param recipients 收件人们
* @param subject 主题
* @param content 内容
* @throws AddressException
* @throws MessagingException
*/
public void send(List<String> recipients, String subject, Object content)
throws AddressException, MessagingException {
// 创建mime类型邮件
final MimeMessage message = new MimeMessage(session);
// 设置发信人
message.setFrom(new InternetAddress(authenticator.getUserName()));
// 设置收件人们
final int num = recipients.size();
InternetAddress[] addresses = new InternetAddress[num];
for (int i = 0; i < num; i++) {
addresses[i] = new InternetAddress(recipients.get(i));
}
message.setRecipients(RecipientType.TO, addresses);
// 设置主题
message.setSubject(subject);
// 设置邮件内容
message.setContent(content.toString(), "text/html;charset=utf-8");
// 发送
Transport.send(message);
}
/**
* 发送邮件
*
* @param recipient 收件人邮箱地址
* @param mail 邮件对象
* @throws AddressException
* @throws MessagingException
*/
public void send(String recipient, SimpleMail mail)
throws AddressException, MessagingException {
send(recipient, mail.getSubject(), mail.getContent());
}
/**
* 群发邮件
*
* @param recipients 收件人们
* @param mail 邮件对象
* @throws AddressException
* @throws MessagingException
*/
public void send(List<String> recipients, SimpleMail mail)
throws AddressException, MessagingException {
send(recipients, mail.getSubject(), mail.getContent());
}
}
发送类的工厂 该工厂可以没有 但相关代码需要更改
package data.test.my.email;
public class MailSendFactory {
/**
* 服务邮箱
*/
private static SimpleMailSender serviceSms = null;
/**
* 获取邮箱
*
* @param type 邮箱类型
* @return 符合类型的邮箱
*/
public static SimpleMailSender getSender(String type) {
if (type.equals("my")) {
if (serviceSms == null) {
serviceSms = new SimpleMailSender("douniwan@166.com", "578945612");
}
return serviceSms;
}
return null;
}
}
主方法测试使用
package data.test.my.email;
import java.util.ArrayList;
import java.util.List;
import javax.mail.MessagingException;
import javax.mail.internet.AddressException;
public class MailEmail {
public static void main(String[] args) {
// 发送邮件
SimpleMailSender sms = MailSendFactory.getSender("my");
List<String> recipients = new ArrayList<String>();
recipients.add("douniwan@qq.com");
recipients.add("douniwan@gmail.com");
try {
for (String recipient : recipients) {
sms.send(recipient, "价格变动", "您关注的物品" + " 六神花露水 降价了,由" + "12.3 元降到 13.2 元,降幅达"
+ " -10 元人民币。赶快购物吧。");
}
} catch (AddressException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
- [java]Java发送邮件
- java 邮件发送 --- 简单的邮件发送
- JAVA发送邮件及springboot发送邮件
- 用java发送邮件
- 用Java发送邮件
- java发送邮件源码
- java发送邮件
- Java发送邮件
- Java发送邮件程序
- java发送Email邮件
- 怎样用java发送邮件
- 利用java发送邮件
- java 邮件发送
- java邮件发送
- java邮件发送
- java定时发送邮件
- java发送邮件代码
- Java Mail 发送邮件
- 获取元素方式
- 常用正则表达式大全
- 自我突破
- Vue, App与我(八)
- 多态和类型转化(instanceof)
- java发送邮件
- UVa-133 The Dole Queue(约瑟夫环)
- 一键产生非交互的密钥对
- 【python】excel操作
- 正规表示法和Linux三剑客
- Java堆、栈、方法区、常量池(转载)
- this指针详解
- linux 路由表设置 之 route 指令详解
- spring boot(四):thymeleaf使用详解