springboot动态切换邮箱服务器发送邮件


集成mail

创建springboot项目

使用idea创建springboot项目,这里不再赘述。

引入依赖

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
</dependecy>

数据库mail_info

 

测试数据:

 

 

MailController.java

import com.tk.mybatis.demo.service.MailSenderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * @author lipeiguang
 * @description: 邮件测试类
 * @date 2020/10/2 15:31
 **/
@RestController
public class MailController {
    @Autowired
    private MailSenderService mailSenderService;
    @GetMapping("send")
    public String sendMsg(int id){
        JavaMailSenderImpl mailSender = mailSenderService.getMailSender(id);
        SimpleMailMessage mailMessage = new SimpleMailMessage();
        mailMessage.setTo("lipeiguang@yunzhangfang.com");
        mailMessage.setFrom(mailSender.getUsername());
        mailMessage.setSubject("这是测试邮件2");
        mailMessage.setText("这是内容2");
        mailSender.send(mailMessage);
        return "send mail success";
    }
}

MailSenderService.java

import org.springframework.mail.javamail.JavaMailSenderImpl;

public interface MailSenderService {
    JavaMailSenderImpl getMailSender(Integer id);
}

MailSenderServiceImpl.java

import com.tk.mybatis.demo.entity.MailInfo;
import com.tk.mybatis.demo.service.MailSenderService;
import com.tk.mybatis.demo.service.MailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.stereotype.Service;

import java.util.Properties;

@Service
public class MailSenderServiceImpl implements MailSenderService {
    @Autowired
    private MailService mailService;
    @Override
    public JavaMailSenderImpl getMailSender(Integer id) {
        MailInfo curMailInfo = mailService.getById(id);
        JavaMailSenderImpl sender = new JavaMailSenderImpl();
        sender.setHost(curMailInfo.getHost());
        sender.setDefaultEncoding(curMailInfo.getEncoding());
        sender.setUsername(curMailInfo.getUserName());
        sender.setPassword(curMailInfo.getPassword());
        Properties p = new Properties();
        p.setProperty("mail.smtp.auth", "true");
        sender.setJavaMailProperties(p);
        return sender;
    }
}

MailService.java

public interface MailService {
    MailInfo getCurMailInfo();

    MailInfo getById(Integer id);
}

MailServiceImpl.java

import com.tk.mybatis.demo.entity.MailInfo;
import com.tk.mybatis.demo.mapper.MailMapper;
import com.tk.mybatis.demo.service.MailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;

@Service
public class MailServiceImpl implements MailService {
    @Autowired
    private MailMapper mailMapper;
    @Override
    public MailInfo getCurMailInfo() {
        return mailMapper.selectAll().get(0);
    }

    @Override
    public MailInfo getById(Integer id) {
        Example example = new Example(MailInfo.class);
        example.createCriteria().andEqualTo("id",id);
        return mailMapper.selectOneByExample(example);
    }
}

启动服务测试

使用不同的邮件服务器发送成功,如下图:

 

 

关于开启smtp

这里以QQ邮箱为例。登录QQ邮箱之后,点击设置,点击账户。如下图:

点击开启IMAP/SMTP服务。

记下QQ邮箱提示的授权码:

这个授权码,就是发送邮件时需要的密码。

以上步骤完成之后,就可以开始开发了。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM