java实现简单发送邮件功能
新建一个Java工程,这里是基于maven的工程
1、maven依赖
<dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> </dependency>
2、配置文件
新建一个名为mailConfig.properties的文件放置到项目的resources目录下,配置文件内容如下: #服务器 mailHost=smtp.163.com #端口号 mailPort=25 #邮箱账号 mailUsername=xx@163.com #邮箱授权码 mailPassword=xxx #时间延迟 mailTimeout=25000 #发送人 mailFrom=xx@163.com
备注:1、邮箱账号与发送人需保持一致,均是发送邮件的服务器端地址
2、具体如何获取授权码可自行度娘搜索,这里提供
基于163邮箱开通授权码操作地址参考:https://jingyan.baidu.com/article/adc815139f60c2f723bf7385.html
扣扣邮箱获取授权码参考:https://jingyan.baidu.com/article/c275f6ba61c583e33d756735.html
3、加载配置信息类
package com.soyunn.device.util; import java.io.IOException; import java.io.InputStream; import java.util.Properties; /** * @Author: AaronNg * @Title: MailConfig * @Package: com.soyunn.device.util * @Description: 邮件初始化数据 * @Date 2019/8/12 23:39 * @Version 1.0 **/ public class MailConfig { private static final String PROPERTIES_DEFAULT = "mailConfig.properties"; public static String host; public static Integer port; public static String userName; public static String passWord; public static String emailForm; public static String timeout; public static String personal; public static Properties properties; static{ init(); } /** * 初始化 */ private static void init() { properties = new Properties(); try{ InputStream inputStream = MailConfig.class.getClassLoader().getResourceAsStream(PROPERTIES_DEFAULT); properties.load(inputStream); inputStream.close(); host = properties.getProperty("mailHost"); port = Integer.parseInt(properties.getProperty("mailPort")); userName = properties.getProperty("mailUsername"); passWord = properties.getProperty("mailPassword"); emailForm = properties.getProperty("mailFrom"); timeout = properties.getProperty("mailTimeout"); personal = "数原科技"; } catch(IOException e){ e.printStackTrace(); } } }
4、发送邮件工具类
package com.soyunn.device.util; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import java.io.UnsupportedEncodingException; import java.util.Properties; /** * @Author: AaronNg * @Title: MailUtil * @Package: com.soyunn.device.util * @Description: 邮件发送工具类 * @Date 2019/8/12 23:41 * @Version 1.0 **/ public class MailUtil { private static final String HOST = MailConfig.host; private static final Integer PORT = MailConfig.port; private static final String USERNAME = MailConfig.userName; private static final String PASSWORD = MailConfig.passWord; private static final String emailForm = MailConfig.emailForm; private static final String timeout = MailConfig.timeout; private static final String personal = MailConfig.personal; private static JavaMailSenderImpl mailSender = createMailSender(); /** * 邮件发送器 * * @return 配置好的工具 */ private static JavaMailSenderImpl createMailSender() { JavaMailSenderImpl sender = new JavaMailSenderImpl(); sender.setHost(HOST); sender.setPort(PORT); sender.setUsername(USERNAME); sender.setPassword(PASSWORD); sender.setDefaultEncoding("Utf-8"); Properties p = new Properties(); p.setProperty("mail.smtp.timeout", timeout); p.setProperty("mail.smtp.auth", "false"); sender.setJavaMailProperties(p); return sender; } /** * 发送邮件 * * @param to 接受人 * @param subject 主题 * @param html 发送内容 * @throws MessagingException 异常 * @throws UnsupportedEncodingException 异常 */ public static void sendMail(String[] to, String subject, String html) throws UnsupportedEncodingException, MessagingException { MimeMessage mimeMessage = mailSender.createMimeMessage(); // 设置utf-8或GBK编码,否则邮件会有乱码 MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8"); messageHelper.setFrom(emailForm, personal); messageHelper.setTo(to); messageHelper.setSubject(subject); messageHelper.setText(html, true); mailSender.send(mimeMessage); } public static void main(String[] args) throws UnsupportedEncodingException, MessagingException { sendMail(new String[]{"89***16@qq.com","85***597@qq.com"}, "test-测试", "测试发送"); } }
一切准备完毕,可发送邮件自行测试下