集成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郵箱提示的授權碼:
這個授權碼,就是發送郵件時需要的密碼。
以上步驟完成之后,就可以開始開發了。