Java邮件收发,以及获取收件箱和发件箱 自测可用
Java发送邮件 使用javaMail 1.5.6发送邮件 协议smtp
smtp地址 smtp.域名 端口SSL 465/994 非SSL25
实体类
**
* 邮件消息体
* @author lyp
* @date 2020年3月11日 上午10:53:13
* @see [相关类/方法]
*/
public class MessageBody {
public enum MessageType
{
MAIL, SMS
}
/** 邮件主题 */
private String subject;
/** 邮件发件人 */
private String fromUser;
// 短信则为手机号码,邮件则为邮箱
private List<String> receiveUsers;
/** 邮件抄送人 */
private List<String> copyToUsers;
/** 邮件密送人 */
private List<String> bccUsers;
// 邮件短信内容
private String content;
// 定时发送用
private DateTime dateTime;
// 消息类型, 默认为邮箱
private MessageType messageType = MessageType.MAIL;
// 公司名称
private String companyName;
// 附件
private Map<String, File> attachments;
private Map<String, MultipartFile> multipartFileMap;
public List<Integer> getSendIds() {
return sendIds;
}
public void setSendIds(List<Integer> sendIds) {
this.sendIds = sendIds;
}
private List<Integer> sendIds;
public Map<String, MultipartFile> getMultipartFileMap() {
return multipartFileMap;
}
public void setMultipartFileMap(Map<String, MultipartFile> multipartFileMap) {
this.multipartFileMap = multipartFileMap;
}
public List<String> getReceiveUsers() {
return receiveUsers;
}
public void setReceiveUsers(List<String> receiveUsers) {
this.receiveUsers = receiveUsers;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public DateTime getDateTime() {
return dateTime;
}
public void setDateTime(DateTime dateTime) {
this.dateTime = dateTime;
}
public MessageType getMessageType() {
return messageType;
}
public void setMessageType(MessageType messageType) {
this.messageType = messageType;
}
public String getCompanyName() {
return companyName;
}
public void setCompanyName(String companyName) {
this.companyName = companyName;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getFromUser() {
return fromUser;
}
public void setFromUser(String fromUser) {
this.fromUser = fromUser;
}
public List<String> getCopyToUsers() {
return copyToUsers;
}
public void setCopyToUsers(List<String> copyToUsers) {
this.copyToUsers = copyToUsers;
}
public List<String> getBccUsers() {
return bccUsers;
}
public void setBccUsers(List<String> bccUsers) {
this.bccUsers = bccUsers;
}
public Map<String, File> getAttachments() {
return attachments;
}
public void setAttachments(Map<String, File> attachments) {
this.attachments = attachments;
}
}
JavaMailSenderImpl sender = new JavaMailSenderImpl();
sender.setHost(emailPO.getSmtp()); //设置smtp地址
sender.setPassword(emailPO.getPassword()); //邮箱授权密码
sender.setPort(emailPO.getSmtpPort()); //smtp端口 465/994
sender.setUsername(emailPO.getEmail()); //邮箱
Properties properties = new Properties();
properties.put("mail.smtp.auth", true); //开启授权认证
MailSSLSocketFactory sf = null; //开启ssl加密方式链接
try {
sf = new MailSSLSocketFactory();
} catch (GeneralSecurityException e) {
LOGGER.error("failed to init MailSSLSocketFactory,err:{}", e);
throw new IllegalArgumentException(e);
}
sf.setTrustAllHosts(true);
properties.put("mail.smtp.ssl.enable", "true");
properties.put("mail.smtp.ssl.socketFactory", sf);
sender.setJavaMailProperties(properties);
LOGGER.info("mail message:{}", message);
mailSenderService.run(sender,message);
public class MailSender {
/** 邮件发送器 */
private JavaMailSender mailSender;
/** 邮件消息 */
private MessageBody mailMessage;
/** 日志记录器 */
private static final Logger LOGGER = LoggerFactory.getLogger(MailSender.class);
public MailSender(JavaMailSenderImpl mailSender, MessageBody mailMessage)
{
this.mailSender = mailSender;
this.mailMessage = mailMessage;
}
@Override
public void run(JavaMailSenderImpl mailSender, MessageBody mailMessage) {
if (null != mailMessage) {
LOGGER.info("mailSender:{}", mailSender);
MimeMessage mimeMsg = mailSender.createMimeMessage();
try {
// 设置true,表示支持附件
MimeMessageHelper msgHelper = new MimeMessageHelper(mimeMsg, true, "UTF-8");
msgHelper.setValidateAddresses(true);
msgHelper.setFrom(mailMessage.getFromUser(), mailMessage.getCompanyName());
msgHelper.setSubject(mailMessage.getSubject());
String[] receiveUsers = new String[mailMessage.getReceiveUsers().size()];
//设置收件人
msgHelper.setTo(mailMessage.getReceiveUsers().toArray(receiveUsers));
//设置内容 ,第二个参数支持html格式
msgHelper.setText(mailMessage.getContent(), true);
// 设置邮件抄送人
if (CollectionUtils.isNotEmpty(mailMessage.getCopyToUsers())) {
String[] copyToUsers = new String[mailMessage.getCopyToUsers().size()];
msgHelper.setCc(mailMessage.getCopyToUsers().toArray(copyToUsers));
}