SpringMVC 使用 JavaMail发送邮件

本文档详细介绍了如何使用SpringMVC框架结合JavaMail服务来发送邮件,包括在pom.xml中添加相关依赖,配置邮件发送设置,以及提供发送邮件的代码示例。

前言

首先你的邮箱要开启post3服务

1. 在pom.xml中添加依赖

        <!-- email -->
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.7</version>
        </dependency>

2. 邮件发送配置

@Configuration
public class EmailConfig {
    @Bean
    public MailSender mailSender() throws GeneralSecurityException {
        return buildJavaMailSender("*****", "******");
    }
    private static JavaMailSender buildJavaMailSender(String userName,String passWord) throws GeneralSecurityException {
        JavaMailSenderImpl sender = new JavaMailSenderImpl();
//        sender.setHost("smtp.office365.com");
        sender.setHost("smtp.qq.com");
        //发件邮箱
        sender.setUsername(userName);
        //邮箱的里开启post3服务的密码
        sender.setPassword(passWord);
        Properties properties = sender.getJavaMailProperties();
        properties.put("mail.smtp.auth", true);
        properties.put("mail.smtp.timeout", "25000");
        properties.put("mail.smtp.starttls.enable", "true");
        properties.setProperty("mail.smtp.port", "587");
        properties.put("mail.smtp.ssl.protocols", "TLSv1.2");
        return sender;
    }
}

3. 发送邮件方法

	public void sendSimpleEmail(String content,String []toEmails){
		/*
		//普通文字邮件
		SimpleMailMessage message = new SimpleMailMessage();//消息构造器
		message.setFrom("2319098944@qq.com");//发件人
		message.setTo(userEmail);//收件人
		message.setSubject("出库单");//主题
		message.setText(content);//正文
		mailSender.send(message);*/
		//创建消息对象,支持HTML格式的邮箱
		MimeMessage mimeMessage = mailSender.createMimeMessage();
		try {
			MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true,"utf-8");
			//设置邮件发送人
			helper.setFrom("*****");
			//设置接收人
			helper.setTo(toEmails);
			//邮件标题
			helper.setSubject("标题");
			//content是组装的html页面
			helper.setText(content,true);
			//发送邮件
			mailSender.send(mimeMessage);
		} catch (MessagingException e) {
			e.printStackTrace();
		}
	}
我这里只是发送一个表格所以偷懒了直接把html贴到了代码中,其实可以用模板文件来代替比较好 。下面是我的部分模板代码...
public String templeteHtml(String dataHtml){
		String htmlTable ="<!DOCTYPE html>" +
				"<html lang=\"zh-CN\">" +
				"<head>" +
				"<meta charset=\"utf-8\" />" +
				"<style>" +
				"table {" +
				"width: 100%;" +
				"}" +
				"table," +
				"td," +
				"th {" +
				"border: 1px solid #000;" +
				"}" +
				"" +
				"table td {" +
				"word-break: keep-all;" +
				"white-space: nowrap;" +
				"}" 
				}
				...

#最后附上使用模板文件发送邮件的代码

    /**
     *
     * @param templateId 模板文件 "/index.ftl"
     * @throws MessagingException
     * @throws IOException
     * @throws TemplateException
     */
    private MimeMessage getMimeMessage(String templateId, EmailMessage m) throws MessagingException, IOException, TemplateException {
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
        //标题
        helper.setSubject(m.getTitle());
        //发送人
        helper.setFrom("******");
        String[] tos = new String[m.getTo().size()];
        //接收人
        helper.setTo(m.getTo().toArray(tos));
        helper.setSentDate(new Date());
        //freemark模板配置
        Configuration cfg = new Configuration(Configuration.VERSION_2_3_23);
        //设置模板文件路径 我的模板文件放在项目resource目录中的templates目录下
        cfg.setClassForTemplateLoading(this.getClass(), "/templates");
        Template template = cfg.getTemplate(templateId);
        String process = FreeMarkerTemplateUtils.processTemplateIntoString(template, m.getData());
        helper.setText(process, true);
        return mimeMessage;
    }


然后调用

 MimeMessage mimeMessage = getMimeMessage("/index.ftl", m);
 mailSender.send(mimeMessage);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值