集成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邮箱提示的授权码:
这个授权码,就是发送邮件时需要的密码。
以上步骤完成之后,就可以开始开发了。