java 实现简单的邮件发送
来源:互联网 发布:根据网络安全法的规定 编辑:程序博客网 时间:2024/06/05 11:26
1. 首先构建一个继承自javax.mail.Authenticator的具体类,重写里面的getPasswordAuthentication()方法。
/** * 邮箱认证信息 * @author Leon * */public class MyAuthenticator extends Authenticator {private String userName;private String password;public MyAuthenticator(){}public MyAuthenticator(String userName, String password) {this.userName = userName;this.password = password;}@Overrideprotected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(userName, password);}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}
2. 构建一个邮件pojo,注:提供get()/set()和toString()方法
/** * 邮件类 * @author Leon * */public class SimpleMail implements Serializable{/** 单发收件人邮箱 */private String recipient;/** 一大波收件人邮箱(若该属性有值,则采用群发) */private List<String> recipientList;/** 邮件主题 */private String subject;/** 邮件内容 */ private Object content;}
3.构建一个properties文件,该文件中存放SMTP服务器地址等参数。以及构造邮件内容等......mail.username=111111111@qq.commail.pwd=ffjwfvknqwmail.host=smtp.qq.commail.ssl=true#email templateemail.subject = Retrieve account password.email.header = <div>Hi, Dear user\:</div> <div> we have already received your password request for password retrieve\: </div>email.footer = <div>Your Login password is %s.</div>
4. 接下来是怎样加载配置文件了,这里我是用的是Spring来加载
<bean class="com.xuexi.utils.Config"><property name="ignoreUnresolvablePlaceholders" value="true"/><property name="locations"><list><value>classpath:/retrievePassword/*.properties</value></list></property></bean><bean id="simpleMail" class="com.xuexi.utils.mail.SimpleMailSender"><constructor-arg index="0" value="${mail.username}"/><constructor-arg index="1" value="${mail.pwd}"/><constructor-arg index="2" value="${mail.host}"/><constructor-arg index="3" value="${mail.ssl}"/></bean>5.构建好了邮件内容,并指定发送人,收信人,主题,内容等等。使用javax.mail.Transport工具类发送邮件。
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;/** * 邮件发送类 * @author Leon * */public class SimpleMailSender {private Properties props;private MyAuthenticator auth;private Session session;/** * 发送邮件,若mail参数设置了recipientList属性,则采用群发,否则单发 * @param mail * @throws AddressException * @throws MessagingException */public void send(SimpleMail mail) throws AddressException, MessagingException{List<String> recipients = mail.getRecipientList();if(recipients != null && recipients.size() > 0){send(recipients, mail.getSubject(), mail.getContent());} else {send(mail.getRecipient(), mail.getSubject(), mail.getContent());}}public SimpleMailSender(){}/** * * @param userName登录用户名 * @param password登录密码 * @param hostName邮箱服务名 */public SimpleMailSender(String userName, String password, String hostName){init(userName, password, hostName);}public SimpleMailSender(String userName, String password){// test@163.com -> hostName=smtp.163.comString hostName = "smtp." + userName.split("@")[1];init(userName, password, hostName);}private void init(String userName, String password, String hostName){auth = new MyAuthenticator(userName, password);props = new Properties();props.put("mail.smtp.auth", "true");props.put("mail.smtp.host", hostName);session = Session.getInstance(props, auth);}public Properties getProps() {return props;}public void setProps(Properties props) {this.props = props;}public MyAuthenticator getAuth() {return auth;}public void setAuth(MyAuthenticator auth) {this.auth = auth;}public Session getSession() {return session;}public void setSession(Session session) {this.session = session;}/** * 单发 * @param recipient 收件人邮箱 * @param subject 主题 * @param content 内容 * @throws MessagingException * @throws AddressException */private void send(String recipient, String subject, Object content) throws AddressException, MessagingException{// 基于该session创建一封Mime邮件MimeMessage msg = new MimeMessage(session);// 设置发件人信息msg.setFrom(new InternetAddress(auth.getUserName()));// 设置收件人信息msg.setRecipient(RecipientType.TO, new InternetAddress(recipient));// 设置主题msg.setSubject(subject);// 设置内容及编码方式msg.setContent(content.toString(), "text/html;charset=utf-8");// 发送Transport.send(msg);}/** * 群发 * @param recipients 一大波收件人 * @param subject 邮件主题 * @param content 邮件内容 * @throws AddressException * @throws MessagingException */private void send(List<String> recipients, String subject, Object content) throws AddressException, MessagingException{MimeMessage msg = new MimeMessage(session);msg.setFrom(new InternetAddress(auth.getUserName()));// 一大波收件人的地址InternetAddress[] addrs = new InternetAddress[recipients.size()];for (int i = 0; i < addrs.length; i++) {addrs[i].setAddress(recipients.get(i));}// 设置收件人信息msg.setRecipients(RecipientType.TO, addrs);msg.setSubject(subject);msg.setContent(content.toString(), "text/html;charset=utf-8");Transport.send(msg);}}
6.测试结果 0 0
- JAVA邮件发送的简单实现
- Java 实现简单的邮件发送
- java邮件发送的简单实现
- JAVA邮件发送的简单实现
- JAVA邮件发送的简单实现
- JAVA邮件发送的简单实现
- JAVA邮件发送的简单实现
- JAVA邮件发送的简单实现
- JAVA邮件发送的简单实现
- Java发送邮件的简单实现
- JAVA邮件发送的简单实现
- Java邮件发送的简单实现
- JAVA邮件发送的简单实现
- java实现简单的邮件发送
- JAVA邮件发送的简单实现
- JAVA邮件发送的简单实现
- JAVA邮件发送的简单实现
- JAVA邮件发送的简单实现
- 总结目前所学1
- FishC笔记—12 讲 列表:一个打了激素的数组3
- 上传图片、文件
- java service
- nGrinder 的 Groovy 脚本使用指南(HTTP 请求详解)
- java 实现简单的邮件发送
- git add *的时候遇到warning: LF will be replaced by CRLF in folder/ 举报本内容
- zTree学习
- linux 命令总结
- boosting算法
- Java HashMap 遍历并删除匹配项
- UNIX IPC
- 动态合并单元格
- 一篇文章看懂NB-IOT