https://blog.csdn.net/xubin1623875795/article/details/78967141html
http://www.cnblogs.com/jmcui/p/9758442.htmljava
首先建立一個郵箱帳號,建議@126.com,@163.com,@qq.com 均可以web
開啓smtp,如下是使用圖解:spring
建立maven項目在pom.xml引入依賴:app
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 支持發送郵件 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> </dependencies>
package cn.et; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Test { public static void main(String[] args) { SpringApplication.run(Test.class, args); } }
有了 javaMailSender,那麼郵件發送就是一件再簡單不過的事情了。咱們只須要將 javaMailSender 的 Bean 注入到咱們本身的實現類中,而後使用 JavaMail API 來發送 Email。maven
package cn.et; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class MailController { @Autowired JavaMailSender jms; @GetMapping("/send") public String send(){ //創建郵件消息 SimpleMailMessage mainMessage = new SimpleMailMessage(); //發送者 mainMessage.setFrom("xxxxx@126.com"); //接收者 mainMessage.setTo("xxxx@qq.com"); //發送的標題 mainMessage.setSubject("嗨嘍"); //發送的內容 mainMessage.setText("hello world"); jms.send(mainMessage); return "1"; } }
或者如下方式spring-boot
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class MailController { @Autowired JavaMailSender jms;
@Value("${spring.mail.from}") //發送人的郵箱 好比155156641XX@163.com private String from;
@GetMapping("/send") public String send(){ //創建郵件消息 SimpleMailMessage mainMessage = new SimpleMailMessage(); //發送者 mainMessage.setFrom(from); //接收者 mainMessage.setTo("838089327@qq.com"); //發送的標題 mainMessage.setSubject("嗨嘍"); //發送的內容 mainMessage.setText("hello world"); jms.send(mainMessage); return "1"; } }
Spring 的 Email 功能並不侷限於純文本的 Email。咱們還能夠添加附件。若是要發送帶有附件的 Email,關鍵技巧是建立 multipart 類型的消息 ———— Email由多個部分組成,其中一部分是 Email 體,其餘部分是附件。爲了發送 multipart 類型的 Email,你須要建立一個MIME(Multipurpose Internet Mail Extensions)的消息。ui
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; 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; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import java.io.File; @RestController public class MimeEmailController { @Autowired JavaMailSender javaMailSender; @Value("${spring.mail.from}") String from; @GetMapping("/sendMime") public void send() throws MessagingException { // MimeMessage 自己的 API 有些笨重,咱們可使用 MimeMessageHelper MimeMessage mimeMessage = javaMailSender.createMimeMessage(); // 第二個參數是 true ,代表這個消息是 multipart類型的/ MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true); mimeMessageHelper.setFrom(from); mimeMessageHelper.setTo("838089327@qq.com"); mimeMessageHelper.setSubject("附件郵件主題"); mimeMessageHelper.setText("附件郵件內容"); //添加附件,第一個參數表示添加到 Email 中附件的名稱,第二個參數是圖片資源 mimeMessageHelper.addAttachment("boot.png", new File("C:\\Users\\admin\\Pictures\\1.png")); javaMailSender.send(mimeMessage); } }
Spring 的 Email 功能除了能夠添加附件外,甚至可使用 HTML 來美化消息體的內容。發送富文本的 Email 與發送簡單文本的 Email 並無太大區別,關鍵是將setText() 方法的消息文本設置爲 HTML,並將第二個參數設置爲 true,表示這是 HTML 的富文本。spa
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
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;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
@RestController
public class MimeEmailController { @Autowired JavaMailSender javaMailSender; @Value("${spring.mail.from}") String from;
//富文本發送郵件 @GetMapping("/htmlSend") public String sendHtml() throws MessagingException { MimeMessage mimeMessage = javaMailSender.createMimeMessage(); MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true); mimeMessageHelper.setFrom(from); mimeMessageHelper.setTo("838089327@qq.com"); mimeMessageHelper.setSubject("富文本郵件主題"); String html = "<html><body><h4>Hello,SpringBoot</h4><img src='cid:boot' /></body></html>"; mimeMessageHelper.setText(html, true); // 設置內嵌元素 cid,第一個參數表示內聯圖片的標識符,第二個參數標識資源引用 mimeMessageHelper.addInline("boot", new File("C:\\Users\\admin\\Pictures\\1.png")); javaMailSender.send(mimeMessage); return "1"; }