Java通过邮箱服务器自动发送邮件,实现发送注册验证码,获得密码保护,发送生成的随机密码等功能。
添加依赖
<dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> </dependency>
邮件信息的封装类
包括发送方的邮件信息和接收方的邮件信息,以及发送的邮件内容
发送方的邮箱地址 邮件服务商的服务器地址 端口等信息,不同的邮件服务商提供的邮件服务器和端口有差异
接收方的邮箱地址
邮件的标题,内容等信息
package com.wanmait.demo.pojo; public class EmailMessage { private String sendEmailServerHost;//发送邮件的服务器地址 不同的邮箱服务商 服务器地址不同 private Integer sendEmailServerport;//发送邮件服务器的端口 不同的邮箱服务商 服务器端口不同 private String fromEmail;//发送邮件的邮箱地址 private String authorizationCode;//发送邮件的邮箱的授权码 发送邮件的服务器提供 private String receiveEmail;//接收邮件的邮箱 private String message;//邮件内容 可以有HTML标签 private String title;//邮件标题 }
发送邮件
发送邮件分成3个部分
1 创建session会话
这个session是javax.email.Session,在会话中,设置邮件服务器的地址,设置邮件传输协议smtp协议
2 创建MimeMessage
MimeMessage中间会设置邮件的主体
包括发件人信息,收件人信息,以及邮件内容
3 发送邮件
创建Transport对象,链接发送服务器,发送邮件
package com.wanmait.demo.service; import com.wanmait.demo.pojo.EmailMessage; import javax.mail.*; import javax.mail.internet.*; import java.io.UnsupportedEncodingException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Properties; public class SendMailServiceImpl { public void sendEmail(EmailMessage emailMessage) { //本例题以网易邮箱为例 Properties props = new Properties(); props.setProperty(emailMessage.getSendEmailServerHost(), "smtp"); //使用smpt的邮件传输协议 props.setProperty("mail.smtp.host", emailMessage.getSendEmailServerHost());//主机地址 props.setProperty("mail.smtp.auth", "true"); //授权通过 //smtp.163.com是网易邮箱发送邮件的服务器地址 javax.mail.Session session = Session.getInstance(props); //创建会话 Session不是JavaEE的web程序的session try { MimeMessage mimeMessage = new MimeMessage(session); mimeMessage.setFrom(new InternetAddress(emailMessage.getFromEmail())); //设置发件人 mimeMessage.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(emailMessage.getReceiveEmail(), emailMessage.getReceiveEmail(), "utf-8")); //设置收件人 mimeMessage.setSubject(emailMessage.getTitle(), "utf-8"); //设置邮件标题 mimeMessage.setSentDate(new Date()); Multipart mul = new MimeMultipart(); BodyPart mdp = new MimeBodyPart(); //创建BodyPart 用来存放邮件内容 mdp.setContent(emailMessage.getMessage(), "text/html;charset=utf-8"); //设置发送邮件内容 内容支持HTML标签 mul.addBodyPart(mdp); //将含有信件内容的BodyPart加入到MimeMultipart对象中 mimeMessage.setContent(mul); //把mul作为消息内容 mimeMessage.saveChanges(); //创建一个支持邮件传输协议的传输对象 Transport transport = session.getTransport("smtp"); //建立与服务器的链接 SSL传输 transport.connect(emailMessage.getSendEmailServerHost(), emailMessage.getSendEmailServerport(), emailMessage.getFromEmail(), emailMessage.getAuthorizationCode()); //发送邮件 transport.sendMessage(mimeMessage, mimeMessage.getAllRecipients()); //关闭邮件传输 transport.close(); } catch (AddressException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } } }
0条评论
点击登录参与评论