1. 程式人生 > >SpringBoot傳送郵件(帶附件以及不帶附件)

SpringBoot傳送郵件(帶附件以及不帶附件)

1.QQ郵箱

首先登入QQ郵箱>>>登入成功後找到設定>>>然後找到郵箱設定>>>點選賬戶>>>找到POP3|SMTP服務>>>點選開啟(開啟需要驗證,驗證成功後會有一串授權碼用於傳送郵件使用)>>>驗證成功 看圖操作 在這裡插入圖片描述 在這裡插入圖片描述 在這裡插入圖片描述 授權碼一定記得複製出來

**0.引入包**
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
**1.填寫配置檔案此處使用yml檔案配置,使用yml配置記得注意格式哦,以免出錯。**
spring:
 mail:
  default-encoding: UTF-8
  host: smtp.qq.com
  protocol: smtp
  username: 郵箱賬號
  password: 服務授權碼(不是QQ密碼而是剛剛開啟的POP3/SMTP服務 的授權碼)
 smtp: 
  auth: true
  starttls: 
   enable: true
   required: true
**2.新建類實現傳送郵件**


import java.io.File;

import javax.mail.internet.MimeMessage;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/** 
 * @author ADMIN
 * @date 2018年10月9日 下午3:59:59
 * @version 1.0 
 */

@RestController
public class MailController {
	
	
	@Autowired
	JavaMailSender jms;
	//傳送文字訊息,不帶附件
	@GetMapping("/send")	
	public String send(){		
		//建立郵件訊息		
		SimpleMailMessage mainMessage = new SimpleMailMessage();		
		//傳送者		
		mainMessage.setFrom("傳送者郵箱(需要在配置檔案中一致)");		
		//接收者		
		mainMessage.setTo("接收者郵箱");		
		//傳送的標題		
		mainMessage.setSubject("傳送的標題");		
		//傳送的內容		
		mainMessage.setText("傳送的內容");		
		jms.send(mainMessage);		
		return "true";	
		
	}
	
	/**
	 * 帶附件傳送,可多個附件 圖片,doc都可以傳送。
	 * ADMIN
	 * 2018年10月13日 下午12:31:13
	 */
	@GetMapping("/sendFile")
	public void sendAttachmentsMail() {
		
		String [] fileArray={"C:\\Users\\Administrator\\Desktop\\圖片\\0.jpg","C:\\Users\\Administrator\\Desktop\\圖片\\aa.zip"};
		
		MimeMessage message=jms.createMimeMessage();
        try {
        	MimeMessageHelper helper=new MimeMessageHelper(message,true);
            helper.setFrom("傳送者郵箱(需要在配置檔案中一致)");
            helper.setTo("接收者郵箱");
            helper.setSubject("傳送標題");
            helper.setText("傳送內容");
            //驗證檔案資料是否為空
            if(null != fileArray){
            	FileSystemResource file=null;
            	for (int i = 0; i < fileArray.length; i++) {
            		//新增附件
            		file=new FileSystemResource(fileArray[i]);
            		helper.addAttachment(fileArray[i].substring(fileArray[i].lastIndexOf(File.separator)), file);
            	}
            }
            jms.send(message);
            System.out.println("帶附件的郵件傳送成功");
        }catch (Exception e){
            e.printStackTrace();
            System.out.println("傳送帶附件的郵件失敗");
        }
    }
}


PS:網易郵箱傳送和QQ郵箱是一樣的,只需要修改配置檔案的host,username,password三個引數。將host改成:smtp.163.com,使用者名稱和密碼改成網易郵箱對應的就行