java实现发送邮件

邮件的配置类:

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "mail")
public class MailProperties {
private String from;
private String pwd;
private String host;
private String subject;
private String port;
public String getFrom() {
return from;
}

public void setFrom(String from) {
this.from = from;
}

public String getPwd() {
return pwd;
}

public void setPwd(String pwd) {
this.pwd = pwd;
}

public String getHost() {
return host;
}

public void setHost(String host) {
this.host = host;
}

public String getSubject() {
return subject;
}

public void setSubject(String subject) {
this.subject = subject;
}

public String getPort() {
return port;
}

public void setPort(String port) {
this.port = port;
}

}

配置参数:

spring.mail.password=
spring.mail.host=101.91.21.234
spring.mail.username=administrator@XXXX.com
spring.mail.port=35
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
mail.from=${spring.mail.username}
mail.pwd=${spring.mail.password}
mail.host=${spring.mail.host}
mail.port=${spring.mail.port}
mail.subject=【XXX系统邮件通知】
mail.onOff = false


service代码:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.stereotype.Service;

import javax.mail.*;
import javax.mail.Message.RecipientType;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;

/**
* 邮件服务接口实现类 Uinfor 
*
* @author 
*/
@Service
public class MailServiceImpl implements MailService {

@Autowired
private MailProperties mailProperties;
private static Logger logger = LoggerFactory.getLogger(MailServiceImpl.class);

@Value("${mail.onOff}")
private boolean onOff;

@Override
public void SendSimpleMail(String to, String subject, String text) {
if (!onOff) {return ;}
try {
SimpleMailMessage mailMessage = new SimpleMailMessage();
mailMessage.setFrom(mailProperties.getFrom());
mailMessage.setTo(to);
mailMessage.setSubject(subject);
mailMessage.setText(text);

JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
senderImpl.setUsername(mailProperties.getFrom());
senderImpl.setPassword(mailProperties.getPwd());
senderImpl.setHost(mailProperties.getHost());
senderImpl.setPort(Integer.valueOf(mailProperties.getPort()));
senderImpl.send(mailMessage);

if (mailProperties.getPwd() == null || mailProperties.getPwd().length() == 0) {
sendEmail(mailProperties.getSubject() + subject, to.split(";"), null, text, null, true);
} else {
sendEmail(mailProperties.getSubject() + subject, to.split(";"), null, text, null, false);
}
} catch (Exception e) {
logger.error("SendSimpleMail error: {}", e.getMessage());
}
}

@Override
public void SendTcMail() {

}

@Override
public void sendHtmlMail(String to, String[] ccs, String subject, String html) {
logger.info("sendMail to := " + to + "-->subject := " + subject);
logger.info("sendMail to := " + to + "-->html := " + html);
if (mailProperties.getPwd() == null || mailProperties.getPwd().length() == 0) {
sendEmail(mailProperties.getSubject() + subject, to.split(";"), ccs, html, null, true);
} else {
sendEmail(mailProperties.getSubject() + subject, to.split(";"), ccs, html, null, false);
}
}

public void sendEmail(String subject, String[] tos, String[] ccs, String content, File[] attachments,
boolean isAnonymousEmail) {
if (subject == null || subject.length() == 0) {
subject = "Auto-generated subject";
}
if (tos == null || tos.length == 0) {
throw new IllegalArgumentException("At lease 1 receive address is required.");
}
if (content == null && (attachments == null || attachments.length == 0)) {
throw new IllegalArgumentException("Content and attachments cannot be empty at the same time");
}
logger.info("sendMail to := " + tos[0] + "-->subject := " + subject);
logger.info("sendMail to := " + tos[0] + "-->content := " + content);
if (attachments != null && attachments.length > 0) {
List<File> invalidAttachments = new ArrayList<>();
for (File attachment : attachments) {
if (!attachment.exists() || attachment.isDirectory() || !attachment.canRead()) {
invalidAttachments.add(attachment);
}
}
if (invalidAttachments.size() > 0) {
String msg = "";
for (File attachment : invalidAttachments) {
msg += "\n\t" + attachment.getAbsolutePath();
}
logger.error("sendMail error message := ", msg);
//throw new IllegalArgumentException("The following attachments are invalid:" + msg);
}
}
Session session;
Properties props = new Properties();
props.put("mail.transport.protocol", "smtp");

if (isAnonymousEmail) {
// only anonymous email needs param smtpHost
props.put("mail.smtp.host", mailProperties.getHost());
props.put("mail.smtp.port", mailProperties.getPort());
props.put("mail.smtp.auth", "false");
session = Session.getInstance(props, null);
} else {
// normal email does not need param smtpHost and
// uses the default host SMTPServer
props.put("mail.smtp.host", mailProperties.getHost());
props.put("mail.smtp.port", mailProperties.getPort());
props.put("mail.smtp.auth", "true");
session = Session.getInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(mailProperties.getFrom(), mailProperties.getPwd());
}
});
}
try {
MimeMessage message = new MimeMessage(session);
InternetAddress fromAddress = new InternetAddress(mailProperties.getFrom());
message.setFrom(fromAddress);
for (String to : tos) {
System.out.println("to := " + to);
if (to != null && to.length() > 0 && to.contains("@")) {
message.addRecipient(RecipientType.TO, new InternetAddress(to));
}
}
if (ccs != null) {
for (String cc : ccs) {
System.out.println("cc := " + cc);
if (cc != null && cc.length() > 0 && cc.contains("@")) {
message.addRecipient(RecipientType.CC, new InternetAddress(cc));
}
}
}
message.setSubject(subject);
message.setContent(content, "text/html;charset=gb2312");

message.setSentDate(new Date());

message.saveChanges();

Transport.send(message);

} catch (Exception e) {
e.printStackTrace();
logger.error("", e);
}
}
/**
* HTML 文本邮件
*
* @param to 接收者邮件
* @param cc 抄送
* @param subject 邮件主题
* @param contnet HTML内容
* @throws MessagingException
*/
// public void sendHtmlMail(String to, String[] cc, String subject, String contnet) {
// JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
// senderImpl.setUsername(mailProperties.getFrom());
// senderImpl.setPassword(mailProperties.getPwd());
// senderImpl.setHost(mailProperties.getHost());
// MimeMessage message = senderImpl.createMimeMessage();
// try {
// MimeMessageHelper helper = new MimeMessageHelper(message, true);
// helper.setTo(to);
// helper.setSubject("PLM集成提醒:" + subject);
// helper.setText(contnet, true);
// helper.setFrom(mailProperties.getFrom());
// if(cc != null && cc.length > 0) {
// helper.setCc(cc);
// }
// senderImpl.send(message);
// }catch(Exception e) {
// e.printStackTrace();
// }
//
//
 senderImpl.setPort(mailProperties.getPort());
//
// }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

seeyouwell

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值