一.获取授权码
在此以qq邮箱为例

开启IMAP/SMTP服务

根据操作用手机号发送短信,获取授权码

在项目中引入依赖:pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
在配置文件中填写参数:application.properties
username为邮箱账号,这里的password密码是指授权码
spring.mail.host=smtp.qq.com
spring.mail.username=xxxx@qq.com
spring.mail.password=授权码
spring.mail.protocol=smtp
spring.mail.default-encoding=UTF-8
或者
在application.yml中配置
mail:
host: smtp.qq.com
username: xxxx@qq.com
password: 授权码
properties:
mail:
smtp:
auth: true
starttls:
enable: true
required: true
default-encoding: UTF-8
以上操作参考如下:报空指针
操作参考1
修改如下:
public class testSendEmail{
public JavaMailSenderImpl JavaMailSender() {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost("smtp.qq.com");
mailSender.setUsername("xxxx@qq.com");
mailSender.setPassword("授权码");
return mailSender;
}
//一个简单的邮件,只有text信息
/**
* @Description:
* @Param: [subject:标题, text:内容, email:接收人的邮件地址]
* @return: void
* @Author: 你自己
* @Date: 2020/2/27
*/
public void SendSimpleEmail(String subject, String text, String email) {
JavaMailSenderImpl javaMailSender = JavaMailSender();
SimpleMailMessage mailMessage = new SimpleMailMessage();
mailMessage.setSubject(subject); //邮件的主题
mailMessage.setText(text);
mailMessage.setTo(email); //发送给谁
mailMessage.setFrom(Objects.requireNonNull(javaMailSender.getUsername())); //谁发送的
javaMailSender.send(mailMessage);
}
/**
* @Description:
* @Param: [subject:标题, text:内容, html,Boolean html:是否进行html解析
* email:接收人的邮件地址, attachmentMap:附件的名称和文件路径]
* @return: void
* @Author: 你自己
* @Date: 2020/2/27
*/
public void SendMimeEmail(String subject, String text, Boolean html,
String email, Map<String, String> attachmentMap) throws MessagingException {
JavaMailSenderImpl javaMailSender = JavaMailSender();
//一个复杂的邮件`
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
//进行组装
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, html);
helper.setSubject(subject);
helper.setText(text, html);
//附件
if (attachmentMap != null) {
Iterator<Map.Entry<String, String>> iterator = attachmentMap.entrySet().iterator();
//map.entrySet()得到的是set集合,可以使用迭代器遍历
while (iterator.hasNext()) {
Map.Entry<String, String> entry = iterator.next();
helper.addAttachment(entry.getKey(),
//附件名称,要写好文件的后缀,不要少写和写错
new File(entry.getValue()));
//附件的文件地址,可以写绝对路径,若是相对路径,如./1.png,代表的是resources下的1.png
}
}
helper.setTo(email); //发送给谁
helper.setFrom(Objects.requireNonNull(javaMailSender.getUsername())); //谁发送的
javaMailSender.send(mimeMessage);
}
}
编写测试方法:
public class testEmail {
@Autowired
private JavaMailSender javaMailSender;
@Test
public void testSend() throws MessagingException{
testSendEmail sendEmail=new testSendEmail();
sendEmail.SendSimpleEmail("测试邮件是否能发送成功","test成功!你真棒!哈哈哈哈哈,猜猜我是谁??","aaaa@163.com");//第一个方法
}

发送文件:
@Test
public void Test1() throws MessagingException {
testSendEmail e=new testSendEmail();
// e.SendSimpleEmail("又是崭新的一天","天气真好,要开心要快乐","aaaa@163.com");
HashMap<String, String> map = new HashMap<>(); //定义附件
// map.put("1.png","./1.png"); //相对路径,相对于resources目录下
map.put("2.png","H:\\Desktop\\testInfo\\testImage\\timg (1).jpg"); //绝对路径
e.SendMimeEmail("test标题","testContent",true,"aaaa@163.com",
map);
}

网友评论