色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于SpringBoot實(shí)現(xiàn)郵件發(fā)送

汽車電子技術(shù) ? 來(lái)源:Java爛筆頭 ? 作者:小週 ? 2023-02-28 14:58 ? 次閱讀

應(yīng)用場(chǎng)景

發(fā)送郵件驗(yàn)證碼等,定時(shí)發(fā)送、同時(shí)發(fā)送多封郵件等。

功能簡(jiǎn)介

本項(xiàng)目通過(guò)Springboot發(fā)送email郵件,包括普通文本郵件 、HTML內(nèi)容板式郵件 、包含靜態(tài)資源郵件以及帶附件郵件等。

一封郵件同時(shí)發(fā)送多人、異步多線程發(fā)送郵件、定時(shí)發(fā)送郵件等場(chǎng)景功能。

項(xiàng)目說(shuō)明

核心Maven依賴

org.springframework.boot

spring-boot-starter-mail

核心配置

如果是服務(wù)郵箱配置類似

#QQ郵箱服務(wù)主機(jī)地址
spring.mail.host=smtp.qq.com 

#郵箱賬號(hào) 
spring.mail.username=2389323369@qq.com

 #郵箱授權(quán)碼 
spring.mail.password=qtglycyclomqgci

#右鍵默認(rèn)編碼 
spring.mail.default-encoding=UTF-8

spring.mail.username=2289523269@qq.com

----需要修改成自己的郵箱賬號(hào)(發(fā)送方郵箱) #郵箱授權(quán)碼

spring.mail.password=qtglycyclomqgci

----需要修改成自己的郵箱授權(quán)碼(下面會(huì)介紹如何獲取)

QQ郵箱授權(quán)碼獲取

如果授權(quán)碼不正確會(huì)報(bào)錯(cuò)誤

org.springframework.mail.MailAuthenticationException: Authentication failed; nested exception is javax.mail.AuthenticationFailedException: 535 Login Fail. Please enter your authorization code to login. More information in http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256

at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:439)

at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:322)

at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:311)

at com.example.demo.service.impl.MailServiceImpl.sendSimpleMail(MailServiceImpl.java:38)

1、什么是授權(quán)碼?

授權(quán)碼是QQ郵箱推出的,用于登錄第三方客戶端的專用密碼。適用于登錄以下服務(wù):POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務(wù)。溫馨提醒:為了你的帳戶安全,更改QQ密碼以及獨(dú)立密碼會(huì)觸發(fā)授權(quán)碼過(guò)期,需要重新獲取新的授權(quán)碼登錄。

2、怎么獲取授權(quán)碼?

進(jìn)入QQ郵箱主頁(yè)-->設(shè)置-->帳戶-->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務(wù):

pYYBAGP9peiAafy9AAFvFeQIL9s479.png

點(diǎn)擊“開啟”-->驗(yàn)證密保-->獲取授權(quán)碼:

poYBAGP9pe-ADc0dAAETZCPr79A963.png

核心代碼

@Service
public class MailServiceImpl implements MailService {

    /**
     * 日志
     */
  private static final org.slf4j.Logger logger = LoggerFactory.getLogger(MailServiceImpl.class);

  @Value("${spring.mail.username}")
    private String from;

    //用于發(fā)送文件
    @Autowired
    private JavaMailSender mailSender;

    @Override
    public void checkMail(EmailModel emailModel) {
        Assert.notNull(emailModel,"郵件模板不能為空");
        Assert.notNull(emailModel.getEmail(), "郵件收件人不能為空");
        Assert.notNull(emailModel.getSubject(), "郵件主題不能為空");
        Assert.notNull(emailModel.getContent(), "郵件內(nèi)容不能為空");
    }

    @Async("EmailAsync")
    @Override
    public Boolean sendSimpleMail(EmailModel emailModel) {
      try {
          SimpleMailMessage message = new SimpleMailMessage();
            message.setFrom(from);//發(fā)信人
            message.setTo(emailModel.getEmail().split(";"));//郵件收件人 1或多個(gè) 以";"隔開
          message.setSubject(emailModel.getSubject());//主題
          message.setText(emailModel.getContent());//內(nèi)容

          mailSender.send(message);

            logger.info("發(fā)送文本郵件成功");
      } catch (Exception e) {
        e.printStackTrace();
        logger.error("發(fā)送文本郵件失敗");
        return false;
      }
      return true;
    }

    @Async("EmailAsync")
    @Override
    public Boolean sendHtmlMail(EmailModel emailModel) {
        String to = emailModel.getEmail();
        String subject = emailModel.getSubject();
        String content = emailModel.getContent();
        logger.info("發(fā)送HTML郵件開始:{},{},{}", to, subject, content);
        //使用MimeMessage,MIME協(xié)議
        MimeMessage message = mailSender.createMimeMessage();
        
        MimeMessageHelper helper;
        //MimeMessageHelper幫助我們?cè)O(shè)置更豐富的內(nèi)容
        try {
            helper = new MimeMessageHelper(message, true);
            helper.setFrom(from);
            helper.setTo(to.split(";"));
            helper.setSubject(subject);
            helper.setText(content, true);//true代表支持html
            mailSender.send(message);
            logger.info("發(fā)送HTML郵件成功");
        } catch (MessagingException e) {
            logger.error("發(fā)送HTML郵件失敗:", e);
            return false;
        }
        return true;
    }

    @Async("EmailAsync")
    @Override
    public Boolean sendAttachMentMail(EmailModel emailModel) {
        String to = emailModel.getEmail();
        String subject = emailModel.getSubject();
        String content = emailModel.getContent();
        String filePath = emailModel.getAttachFilePath();
        logger.info("發(fā)送附件郵件開始:{},{},{},{}", to, subject, content, filePath);
        MimeMessage message = mailSender.createMimeMessage();
    
        MimeMessageHelper helper;
        try {
            helper = new MimeMessageHelper(message, true);
            //true代表支持多組件,如附件,圖片等
            helper.setFrom(from);
            helper.setTo(to.split(";"));
            helper.setSubject(subject);
            helper.setText(content, true);
            FileSystemResource file = new FileSystemResource(new File(filePath));
            String fileName = file.getFilename();
            helper.addAttachment(fileName, file);//添加附件,可多次調(diào)用該方法添加多個(gè)附件
            mailSender.send(message);
            logger.info("發(fā)送附件郵件成功");
            } catch (MessagingException e) {
                logger.error("發(fā)送附件郵件失敗", e);
                return false;
        }
            return true;
    }

    @Async("EmailAsync")
    @Override
    public Boolean sendInlineResourceMail(EmailModel emailModel) {
        String to = emailModel.getEmail();
        String subject = emailModel.getSubject();
        String content = emailModel.getContent();
        String resourcePath = emailModel.getResourcePath();
        String resourceName = emailModel.getResourceName();
        logger.info("發(fā)送帶圖片郵件開始:{},{},{},{},{}", to, subject, content, resourcePath, resourceName);
        MimeMessage message = mailSender.createMimeMessage();
        
        MimeMessageHelper helper;
        try {
            helper = new MimeMessageHelper(message, true);
            helper.setFrom(from);
            helper.setTo(to.split(";"));
            helper.setSubject(subject);
            helper.setText(content, true);
            // 以絕對(duì)路徑的方式讀取文件
            FileSystemResource res = new FileSystemResource(new File(resourcePath));
            helper.addInline(resourceName, res);//重復(fù)使用添加多個(gè)圖片
            mailSender.send(message);
            logger.info("發(fā)送帶圖片郵件成功");
        } catch (MessagingException e) {
            logger.error("發(fā)送帶圖片郵件失敗", e);
            return false;
        }
        return true;
    }

    @Async("EmailAsync")
    @Override
    public Boolean sendHtmlImageMail(EmailModel emailModel) {
        String to = emailModel.getEmail();
        String subject = emailModel.getSubject();
        String content = emailModel.getContent();
        String resourcePath = emailModel.getResourcePath();
        logger.info("發(fā)送帶圖片郵件開始:{},{},{},{}", to, subject, content, resourcePath);
        MimeMessage message = mailSender.createMimeMessage();
    
        MimeMessageHelper helper;
        try {
            helper = new MimeMessageHelper(message, true);
            helper.setFrom(from);
            helper.setTo(to.split(";"));
            helper.setSubject(subject);
            helper.setText(content, true);
            // cid是固定寫法
            helper.setText(
                "

hello world!

" + "", true); FileSystemResource img = new FileSystemResource(new File(resourcePath)); helper.addInline("aaa", img); mailSender.send(message); logger.info("發(fā)送帶圖片郵件成功"); return true; } catch (MessagingException e) { logger.error("發(fā)送帶圖片郵件失敗", e); return false; } } }

源碼下載地址獲取

關(guān)注微信公眾號(hào)“Java爛筆頭”,回復(fù)“郵件

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 郵件
    +關(guān)注

    關(guān)注

    0

    文章

    32

    瀏覽量

    18924
  • HTML
    +關(guān)注

    關(guān)注

    0

    文章

    280

    瀏覽量

    41328
  • spring
    +關(guān)注

    關(guān)注

    0

    文章

    340

    瀏覽量

    14912
  • SpringBoot
    +關(guān)注

    關(guān)注

    0

    文章

    175

    瀏覽量

    330
收藏 0人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    在Java中如何使用API來(lái)完成郵件的接收與發(fā)送

    的接收與發(fā)送。 通過(guò)該篇文章我們可以有如下收獲: 了解基于Java的電子郵件客戶端的實(shí)現(xiàn)方式 了解常見的郵箱如何集成 認(rèn)識(shí)郵箱中的IMAP與POP協(xié)議 適用場(chǎng)景 郵件和短信很像,將信息
    的頭像 發(fā)表于 09-30 14:09 ?4009次閱讀
    在Java中如何使用API來(lái)完成<b class='flag-5'>郵件</b>的接收與<b class='flag-5'>發(fā)送</b>

    LV發(fā)送郵件

    求解:為什么LV發(fā)郵件的程序在 私人電腦可以實(shí)現(xiàn)發(fā)送,但是公司的電腦發(fā)送不了呢?且出現(xiàn)如下錯(cuò)誤
    發(fā)表于 08-15 08:23

    [ARM linux平臺(tái)] 如何實(shí)現(xiàn)發(fā)送郵件功能?

    如題,ARM已經(jīng)正常跑linux系統(tǒng)了,但是如何設(shè)計(jì)發(fā)送郵件功能?
    發(fā)表于 03-06 13:43

    基于SpringBoot mybatis方式的增刪改查實(shí)現(xiàn)

    SpringBoot mybatis方式實(shí)現(xiàn)增刪改查
    發(fā)表于 06-18 16:56

    用SpringMVC發(fā)送郵件

    1、SpringMVC實(shí)現(xiàn)發(fā)送郵件  今天來(lái)試著用SpringMVC發(fā)送郵件,主要需要依賴以下兩個(gè)包;  《!--spring
    發(fā)表于 10-21 14:47

    采用BCB實(shí)現(xiàn)具有身份認(rèn)證功能的郵件發(fā)送l程序

    本文介紹了如何增強(qiáng)BCB中發(fā)送電子郵件的NMSMTP控件的功能,實(shí)現(xiàn)具有身份認(rèn)證功能的郵件發(fā)送程序。  
    發(fā)表于 08-10 17:21 ?9次下載

    C#教程之調(diào)用Outlook發(fā)送郵件

    C#教程之調(diào)用Outlook發(fā)送郵件,很好的C#資料,快來(lái)學(xué)習(xí)吧。
    發(fā)表于 04-20 15:27 ?4次下載

    C#教程之調(diào)用SMTP發(fā)送有附件的郵件

    C#教程之調(diào)用SMTP發(fā)送有附件的郵件,很好的C#資料,快來(lái)學(xué)習(xí)吧。
    發(fā)表于 04-20 15:27 ?16次下載

    如何向您選擇的某人發(fā)送電子郵件

    您可以通過(guò)單擊左側(cè)的“發(fā)送”選項(xiàng)卡來(lái)確認(rèn)您的電子郵件是否已發(fā)送。它將顯示您發(fā)送的所有電子郵件。如果未顯示最近
    的頭像 發(fā)表于 12-13 16:35 ?5295次閱讀
    如何向您選擇的某人<b class='flag-5'>發(fā)送電子郵件</b>

    SpringBoot實(shí)現(xiàn)多線程

    SpringBoot實(shí)現(xiàn)多線程
    的頭像 發(fā)表于 01-12 16:59 ?2132次閱讀
    <b class='flag-5'>SpringBoot</b><b class='flag-5'>實(shí)現(xiàn)</b>多線程

    怎么用Python構(gòu)建一個(gè)自動(dòng)發(fā)送郵件的腳本

    自動(dòng)發(fā)送郵件能應(yīng)用于許多場(chǎng)景,比如我想要知道股票策略中的股票池是否有實(shí)時(shí)的更新,這時(shí)候如果再拉一遍數(shù)據(jù),跑一遍腳本,實(shí)在是太浪費(fèi)時(shí)間了。為什么不把這一套流程放到服務(wù)器上,然后到點(diǎn)自動(dòng)運(yùn)行并發(fā)送
    的頭像 發(fā)表于 10-21 14:47 ?956次閱讀
    怎么用Python構(gòu)建一個(gè)自動(dòng)<b class='flag-5'>發(fā)送</b><b class='flag-5'>郵件</b>的腳本

    怎么用Python構(gòu)建一個(gè)自動(dòng)發(fā)送郵件的腳本

    自動(dòng)發(fā)送郵件能應(yīng)用于許多場(chǎng)景中,比如我想要知道股票策略中的股票池是否有實(shí)時(shí)的更新,這時(shí)候如果再拉一遍數(shù)據(jù),跑一遍腳本,實(shí)在是太浪費(fèi)時(shí)間了。為什么不把這一套流程放到服務(wù)器上,然后到點(diǎn)自動(dòng)運(yùn)行并發(fā)送
    的頭像 發(fā)表于 10-31 16:36 ?751次閱讀
    怎么用Python構(gòu)建一個(gè)自動(dòng)<b class='flag-5'>發(fā)送</b><b class='flag-5'>郵件</b>的腳本

    如何用Python批量定制化發(fā)送郵件

    現(xiàn)實(shí)生活中,如果只是發(fā)郵件給自己,像上一篇文章那樣簡(jiǎn)陋的格式是可以接受的,但若要針對(duì)每個(gè)人進(jìn)行郵件的定制化,群發(fā)給公司客戶、內(nèi)部員工、親戚朋友,則需更加高級(jí)的郵件發(fā)送方式。 我們可以通
    的頭像 發(fā)表于 11-01 11:32 ?4545次閱讀

    利用Python發(fā)送郵件的 3 種方式

    1. 前言 郵件,作為最正式規(guī)范的溝通方式,在日常辦公過(guò)程中經(jīng)常被用到 我們都知道 Python內(nèi)置了對(duì) SMTP 的支持,可以發(fā)送純文本、富文本、HTML 等格式的郵件 本文將聊聊利用
    的頭像 發(fā)表于 11-02 11:37 ?1184次閱讀

    如何使用Python編寫腳本來(lái)自動(dòng)發(fā)送郵件

    Python是一種非常流行的編程語(yǔ)言,可以用于多種用途,包括自動(dòng)化任務(wù)。其中一個(gè)常見的自動(dòng)化任務(wù)是自動(dòng)發(fā)送郵件。在本文中,我們將介紹如何使用Python編寫腳本來(lái)自動(dòng)發(fā)送郵件。 要使用
    的頭像 發(fā)表于 12-07 11:36 ?1692次閱讀
    主站蜘蛛池模板: 在线免费观看日本 | 国产精品一区二区AV白丝在线 | 午夜影院一区二区三区 | 色综合色综合久久综合频道 | 亚洲爆乳少妇精品无码专区 | 耻辱の奴隷淑女中文字幕 | 2018高清国产一区二区三区 | 亚洲国产在线99视频 | 美女禁处受辱漫画 | 狠狠色综合久久丁香婷婷 | 最近的2019中文字幕HD | 老司机午夜影院味味 | 亚洲精品第一国产综合 | 乳巨揉みま痴汉电车中文字幕动漫 | 一二三四视频免费社区5 | 99久久婷婷国产综合精品青草 | 免费精品国产人妻国语麻豆 | 四虎国产精品永久一区高清 | 男插女高潮一区二区 | 国内精品久久久久影院男同志 | 青青草原影视 | 无码国产成人777爽死 | 91嫩草视频在线观看 | 羽月希被黑人吃奶dasd585 | 在线精品国精品国产不卡 | 亚洲欧美日韩综合影院 | 97午夜理论片影院在线播放 | 人体内射精一区二区三区 | 又粗又大又爽又黄的免费视频 | 亚洲XXX午休国产熟女屁 | 在线观看国产高清免费不卡 | 美女露100%全身无遮挡 | 日韩欧美一区二区三区在线 | 午夜伦理一yy4480影院 | 男女亲吻摸下面吃奶视频 | 青青草原在线免费 | 国产高清在线露脸一区 | 亚洲一区二区三区乱码在线欧洲 | 中文字幕一区在线观看视频 | 国产美女影院 | 热热久久这里只有精品 |

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品