(傲娇的白狐)邮件发送练习
邮件发送:
-
前言:
-
前端代码:
-
后端代码:
-
配置文件 .yml 或 .properties
-
获取授权码
-
所需jar包:
-
测试结果:
前言:
想要去学习一个新的案例,最好的方法就是复制一下,自己运行一遍。
注:此案例仅为练习使用;
前端代码:
<div>
<form action="@{/upload}" enctype="multipart/form-data" method="post">
附件名:<input type="text" name="filtname">
附件:<input type="file" name="file"/>
发件人:<input type="text" name="to">
收件人:<input type="text" name="form">
<input type="submit">
</form>
</div>
注意一定要在form中加入
enctype="multipart/form-data"
后端代码:
1.文件上传 注:后端获取用
@RequestParam("file") MultipartFile file
@RequestMapping("/upload")
public String fileUpload(
@RequestParam("file") MultipartFile file
,String to,
String form
,String filtname
) throws IOException, MessagingException {
System.out.println("to = " + to);
System.out.println("form = " + form);
System.out.println("filtname = " + filtname);
System.out.println("file = " + file);
//获取文件名 : file.getOriginalFilename();
String uploadFileName = file.getOriginalFilename();
System.out.println("uploadFileName =========》" + uploadFileName);
// 这个是自己写的方法 作用是获取前端文件名 而不是路径 可直接使用 uploadFilname 作为替换下面文件输出流那行代码的的 xiugai
String xiugai = this.xiugai.xiugai(uploadFileName);
String substring = uploadFileName.substring(uploadFileName.indexOf(".") + 1);
// 文件类型
System.out.println("substring = " + substring);
if (!(substring.equals("gif") || substring.equals("jpg") || substring.equals("png") || substring.equals("pptx") || substring.equals("rar") || substring.equals("mp4"))) {
System.out.println("格式错误");
System.out.println("只能是gif jpg png pptx rar格式");
return "emp/cuowu";
}
//如果文件名为空,直接回到首页!w
if ("".equals(uploadFileName)) {
return "index";
}
System.out.println("上传文件名 ===============: " + uploadFileName);
//上传路径保存设置
// String path = request.getServletContext().getRealPath("/upload");
String path = "D://xiazai//weizhi";
//如果路径不存在,创建一个
File realPath = new File(path);
if (!realPath.exists()) {
realPath.mkdir();
}
System.out.println("上传文件保存地址:==============" + realPath);
InputStream is = file.getInputStream(); //文件输入流
OutputStream os = new FileOutputStream(new File(realPath, xiugai)); //文件输出流
System.out.println("is = " + is);
//读取写出
int len = 0;
byte[] buffer = new byte[1024];
while ((len = is.read(buffer)) != -1) {
os.write(buffer, 0, len);
os.flush();
}
os.close();
is.close();
2.邮件发送
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper=new MimeMessageHelper(mimeMessage,true);//开启可以支持 多文档
helper.setSubject("测试邮件"); //标题
// 可以传 html 代码
helper.setText("测试上传发送邮件",true); //开启后可传html代码
例:
// helper.setText("<p style='color: red'>为什么我的mail 不能用 导不进去啊啊啊啊啊</p>",true);
// 附件
helper.addAttachment(filtname+"."+substring,
new File("D:\\xiazai\\weizhi\\"+xiugai));
System.out.println("附件路径====="+"D:\\xiazai\\weizhi\\"+xiugai);
System.out.println("xiugai = " + xiugai);
helper.setTo(to);//收件人
helper.setFrom(form);//发件人
mailSender.send(mimeMessage);
return "index";
配置文件 .yml 或 .properties
#目标邮箱 目前为自己给自己发送
spring.mail.username=2621824119@qq.com
# 目标邮箱授权码 获取步骤看下方 spring.mail.password=xxxxxxxxxxxxxxxxx
#协议 spring.mail.host=smtp.qq.com #开启加密认证 spring.mail.properties.mail.smtp.ssl.enable=true
获取授权码
首先打开自己的qq邮箱页面 点击设置-----账户
![]()
找到下方的协议 开启第一个 点击生成授权码 它会让你发送一串数字到指定号码
![]()
发送完毕即可;
所需jar包:
<!--linkmnpokltydhhi-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-support</artifactId>
<version>2.0.8</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
<!--servlet-api导入高版本的-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
<!--文件上传-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
测试结果:

本博客仅为个人记录,作为日记式博客。如有错误不足请指出,感谢。



浙公网安备 33010602011771号