springboot集成mail实现邮件服务

1,新建mailconfig类,对邮件服务固定配置进行实体封装:

import java.util.Properties;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.mail.javamail.JavaMailSenderImpl;
@Configuration
public class MailConfig
{
    @Value("${spring.mail.username}")
    private String emailFrom;

    public String getEmailFrom() {
        return emailFrom;
    }

    public void setEmailFrom(String emailFrom) {
        this.emailFrom = emailFrom;
    }


    @Value("${spring.mail.host}")
    private String mailHost;
    @Value("${spring.mail.username}")
    private String mailUsername;
    @Value("${spring.mail.password}")
    private String mailPassword;
    @Value("${spring.mail.mailTemplate}")
    private String mailTemplate;
    @Value("${spring.mail.to}")
    private String to;
    @Value("${spring.mail.subject}")
    private String subject;
    @Value("${spring.mail.default-encoding}")
    private String encoding;
    @Value("${spring.mail.ccList}")
    private String ccList;

    public void setCcList(String ccList)
    {
        this.ccList = ccList;
    }

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

    public void setTo(String to)
    {
        this.to = to;
    }

    public void setMailTemplate(String mailTemplate)
    {
        this.mailTemplate = mailTemplate;
    }

    public void setMailPassword(String mailPassword)
    {
        this.mailPassword = mailPassword;
    }

    public void setMailUsername(String mailUsername)
    {
        this.mailUsername = mailUsername;
    }

    public void setMailHost(String mailHost)
    {
        this.mailHost = mailHost;
    }

    public void setEncoding(String encoding)
    {
        this.encoding = encoding;
    }

    public String getMailHost()
    {
        return this.mailHost;
    }

    public String getMailUsername()
    {
        return this.mailUsername;
    }

    public String getMailPassword()
    {
        return this.mailPassword;
    }

    public String getMailTemplate()
    {
        return this.mailTemplate;
    }

    public String getTo()
    {
        return this.to;
    }

    public String getSubject()
    {
        return this.subject;
    }

    public String getEncoding()
    {
        return this.encoding;
    }

    public String getCcList()
    {
        return this.ccList;
    }

    @Bean
    public JavaMailSenderImpl mailSender()
    {
        JavaMailSenderImpl sender = new JavaMailSenderImpl();
        Properties javaMailProperties = new Properties();


        sender.setJavaMailProperties(javaMailProperties);
        sender.setDefaultEncoding(this.encoding);
        sender.setHost(this.mailHost);

        sender.setUsername(this.mailUsername);
        sender.setPassword(this.mailPassword);
        return sender;
    }
}

2,在resources下的系统文件application.yml中添加如下配置:

spring:
    mail:
      host: smtp.qq.com
      username:  发件人@qq.com
      password: 授权码
      default-encoding: UTF-8
      to: 收件人@qq.com
      subject: 邮件主题
      mailTemplate: template.ftl(模板文件)
      ccList:  抄送人@qq.com

3,新建Mail类,对调用信息进行实体封装:

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class Mail implements Serializable {
    private static final long serialVersionUID = 1L;
    //必填参数
    private String to;//接收方邮箱
    private String subject;//主题
    private String ccList;//抄送人list//选填
    private String template;//模板
    private HashMap<String, String> kvMap;// 自定义model参数
}

 

4,定义MailService接口:

public interface MailService {
    public void sendFreemarker(Mail mail);

}

 

5,MailServiceImpl业务实现:

@Service
public class MailServiceImpl implements MailService {
    private static final Logger log = LoggerFactory.getLogger(MailServiceImpl.class);
    @Autowired
    private JavaMailSender mailSender;
    @Autowired
    private MailConfig mailConfig;
    @Autowired
    private FreeMarkerConfigurer configurer;

    @Override
    public void sendFreemarker(Mail mail)
    {
        try
        {
            MimeMessage mimeMessage = this.mailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "utf-8");
            helper.setFrom(this.mailConfig.getMailUsername());
            helper.setTo(mail.getTo());
            helper.setSubject(mail.getSubject());
            helper.setCc(mail.getCcList());
            File file = ResourceUtils.getFile("classpath:templates/report.ftl");//附件文件在resource下的相对路径
            helper.addAttachment("report.html", file);//添加附件文件

            Map<String, Object> model = new HashMap();
            model.put("ReportData", mail);//reportData为模板文件中需要渲染的数据,根据自己需要添加,此处暂时用mail代替
            try
            {
                Template template = this.configurer.getConfiguration().getTemplate(mail.getTemplate());//模板文件请自定义,内为邮件内容模板  ps:邮箱只能解析简单的html和css样式,复杂样式可能会乱码
                

                try
                {
                    String text = FreeMarkerTemplateUtils.processTemplateIntoString(template, model);//获取模板文件和model数据
                    helper.setText(text, true);//添加ftl文件到邮件内容
                    this.mailSender.send(mimeMessage);//发送邮件
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
        }
        catch (MessagingException e)
        {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

}

6,邮件服务单元测试:

@Listeners({AutoTestListener.class, RetryListener.class})
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
@Import(TestApplication.class)
public class mailtest {

    @Test
    public void mailsendtest() {

        Mail mail=new Mail();
        mail.setTo("收件人@qq.com");
        mail.setSubject("接口自动化定时任务_测试报告");
        mail.setCcList("抄送人@qq.com");
        mail.setTemplate("report.ftl");//模板文件
        mailService.sendFreemarker(mail);
    }


}  

7,效果图如下:

 

以上就是对springboot集成mail实现邮件发送,后续使用都可以通过service注入然后进行使用或者封装啦~

 

 

转载于:https://www.cnblogs.com/chengbai/p/10149945.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot可以通过配置SMTP服务器来实现与Gmail集成。以下是集成Gmail的步骤: 1. 在`application.properties`文件中添加以下配置: ```properties spring.mail.host=smtp.gmail.com spring.mail.port=587 spring.mail.username=your-email@gmail.com spring.mail.password=your-password spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true ``` 请将`your-email@gmail.com`和`your-password`替换为您自己的Gmail帐户的电子邮件地址和密码。 2. 在您的Spring Boot应用程序中创建一个邮件服务类,例如`EmailService`,并注入`JavaMailSender`: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.stereotype.Service; @Service public class EmailService { @Autowired private JavaMailSender javaMailSender; public void sendEmail(String to, String subject, String text) { SimpleMailMessage message = new SimpleMailMessage(); message.setTo(to); message.setSubject(subject); message.setText(text); javaMailSender.send(message); } } ``` 3. 在您的应用程序中使用`EmailService`发送电子邮件: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class EmailController { @Autowired private EmailService emailService; @GetMapping("/send-email") public String sendEmail() { emailService.sendEmail("recipient@example.com", "Test Email", "This is a test email."); return "Email sent successfully."; } } ``` 以上步骤将使您的Spring Boot应用程序能够通过Gmail SMTP服务器发送电子邮件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值