spring boot使用常规发送邮件
spring boot使用常规发送邮件
1.pom.xml文件依赖:
<!-- javax.mail begin--> <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.6.0</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.3.8.RELEASE</version> </dependency> <!-- javax.mail end-->
2.配置文件:
#email,非springBoot mail.smtp.auth=true mail.transport.protocol=smtp mail.send.charset=UTF-8 mail.smtp.port=465 mail.is.ssl=true mail.host=smtp.163.com mail.auth.name=xxxxxxxxxxx@163.com #密码是邮箱的授权码,并不是邮箱的密码。 mail.auth.password=*********** mail.smtp.timeout=5000
3.发送邮件类:
import com.sun.mail.util.MailSSLSocketFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import javax.mail.internet.MimeMessage; import java.io.File; import java.security.GeneralSecurityException; import java.util.List; import java.util.Map; import java.util.Properties; /** * @author zh * @ClassName cn.aduu.utils.EmailUtils * @Description: https://blog.csdn.net/saytime/article/details/78963201 */ @Component public class EmailUtils { private static final Logger logger = LoggerFactory.getLogger(EmailUtils.class); @Autowired private Environment env; private static String auth; private static String host; private static String protocol; private static int port; private static String authName; private static String password; private static boolean isSSL; private static String charset ; private static String timeout; @PostConstruct public void initParam () { auth = env.getProperty("mail.smtp.auth"); host = env.getProperty("mail.host"); protocol = env.getProperty("mail.transport.protocol"); port = env.getProperty("mail.smtp.port", Integer.class); authName = env.getProperty("mail.auth.name"); password = env.getProperty("mail.auth.password"); charset = env.getProperty("mail.send.charset"); isSSL = env.getProperty("mail.is.ssl", Boolean.class); timeout = env.getProperty("mail.smtp.timeout"); } /** * 发送邮件 * @param subject 主题 * @param toUsers 收件人 * @param ccUsers 抄送 * @param content 邮件内容 * @param attachfiles 附件列表 List<Map<String, String>> key: name && file */ public static boolean sendEmail(String subject, String[] toUsers, String[] ccUsers, String content, List<Map<String, String>> attachfiles) { boolean flag = true; try { JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl(); javaMailSender.setHost(host); javaMailSender.setUsername(authName); javaMailSender.setPassword(password); javaMailSender.setDefaultEncoding(charset); javaMailSender.setProtocol(protocol); javaMailSender.setPort(port); Properties properties = new Properties(); properties.setProperty("mail.smtp.auth", auth); properties.setProperty("mail.smtp.timeout", timeout); if(isSSL){ MailSSLSocketFactory sf = null; try { sf = new MailSSLSocketFactory(); sf.setTrustAllHosts(true); properties.put("mail.smtp.ssl.enable", "true"); properties.put("mail.smtp.ssl.socketFactory", sf); } catch (GeneralSecurityException e) { e.printStackTrace(); } } javaMailSender.setJavaMailProperties(properties); MimeMessage mailMessage = javaMailSender.createMimeMessage(); MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, true); messageHelper.setTo(toUsers); if (ccUsers != null && ccUsers.length > 0) { messageHelper.setCc(ccUsers); } messageHelper.setFrom(authName); messageHelper.setSubject(subject); messageHelper.setText(content, true); if (attachfiles != null && attachfiles.size() > 0) { for (Map<String, String> attachfile : attachfiles) { String attachfileName = attachfile.get("name"); File file = new File(attachfile.get("file")); messageHelper.addAttachment(attachfileName, file); } } javaMailSender.send(mailMessage); } catch (Exception e) { logger.error("发送邮件失败!", e); flag = false; } return flag; } }
4.controller:
import com.fasterxml.jackson.core.JsonProcessingException;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import spring.boot.com.email.EmailUtils; import spring.boot.com.entity.User; /** * @author: * @date: 2018/8/8 * @description: */ @RestController public class UserController { @RequestMapping("sendEmail") public String sendEmail() throws JsonProcessingException { boolean isSend = EmailUtils.sendEmail("这是一封测试邮件", new String[]{"********@qq.com"}, null, "<h3><a href='http://www.baidu.com'>百度一下,你就知道</a></h3>", null); return "发送邮件:" + isSend; } }
程序员的眼里,不止有代码和bug,还有诗与远方和妹子!!!