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