最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Springboot發(fā)送郵件功能的實(shí)現(xiàn)詳解

 更新時間:2022年09月21日 14:14:30   作者:天海奈奈  
電子郵件是—種用電子手段提供信息交換的通信方式,是互聯(lián)網(wǎng)應(yīng)用最廣的服務(wù)。本文詳細(xì)為大家介紹了SpringBoot實(shí)現(xiàn)發(fā)送電子郵件功能的示例代碼,需要的可以參考一下

前言

大多數(shù)小伙伴在練習(xí)與學(xué)習(xí)的過程中在驗(yàn)證時大都使用或驗(yàn)證碼,但是驗(yàn)證碼相對而言自己的參與只停留在自己的自己寫的點(diǎn)擊刷新方法上,那有沒有什么方法能讓我們的互動不止限于網(wǎng)頁呢,那就來學(xué)一下如何給自己發(fā)送一封郵件吧,這個功能我預(yù)想是跟用戶綁定的所以設(shè)計時會與用戶有一定的聯(lián)系。

成果展示

表設(shè)計

這里只是為了讓我們成功發(fā)送郵件所以并不用設(shè)計的多么復(fù)雜,只需要在用戶表中添加兩個字段username ,email_address 實(shí)體類中是String 表中是varchar.

引入依賴

<!--        郵件-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
            <version>2.3.4.RELEASE</version>
        </dependency>
    </dependencies>

郵箱工具類

/**
 * 描述 工具 檢驗(yàn)地址是否合法
 */
public class EmailUtil {
    public static boolean isValidEmailAddress(String email) throws AddressException {
        boolean result = true;
        InternetAddress internetAddress = new InternetAddress(email);
        try {
            internetAddress.validate();
        } catch (AddressException e) {
            e.printStackTrace();
            result = false;
        }
        return  result;
    }
}

這里并不需要自己去寫校驗(yàn)方法,直接調(diào)用InternetAddress 的validate方法就行。

mapper

用來通過郵箱查詢用戶,看是否已被占用

User selectOneByEmailAddress(String emailAddress);

Xml

  <select id="selectOneByEmailAddress" parameterType="java.lang.String" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List"/>
    from xatu_mall_user
    where email_address = #{email_address,jdbcType=VARCHAR}
    limit 1
  </select>

Service

userService

boolean checkEmailRegistered(String emailAddress);

impl

 @Override
    public boolean checkEmailRegistered(String emailAddress) {
        User user = userMapper.selectOneByEmailAddress(emailAddress);
        if (user != null) {
            return false;
        }
        return true;
    }

EmailService

public interface EmailService {
    void sendSimpleMessage(String to, String subject, String text);
}

Impl

/**
 * 描述:     EmailService實(shí)現(xiàn)類
 */
@Service
public class EmailServiceImpl implements EmailService {
    @Autowired
    private JavaMailSender mailSender;
    @Override
    public void sendSimpleMessage(String to, String subject, String text) {
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setFrom(Constant.EMAIL_FROM);
        simpleMailMessage.setTo(to);
        simpleMailMessage.setSubject(subject);
        simpleMailMessage.setText(text);
        mailSender.send(simpleMailMessage);
    }
}

我把常用值寫在Constant里了,這里直接填用來發(fā)送的郵箱就行,要確保能自己能登陸這個郵箱,后面要去獲取一個碼。

Controller

 @PostMapping("/sendEmail")
    @ResponseBody
    public ApiRestResponse sendEmail(@RequestParam("emailAddress") String emailAddress)
            throws XatuMallException, AddressException {
        //檢查郵件地址是否有效,檢查是否已注冊
        boolean validEmailAddress = EmailUtil.isValidEmailAddress(emailAddress);
        if(validEmailAddress) {
            boolean emailPased = userService.checkEmailRegistered(emailAddress);
            if (!emailPased) {
                return ApiRestResponse.error(100018, "郵箱已注冊");
            } else{
                //發(fā)送郵件
                emailService.sendSimpleMessage(emailAddress,"主題是測試","Helllo this is a E-mail");
                return ApiRestResponse.success();
            }
        }else{
            return ApiRestResponse.error(100020,"非法郵箱");
        }
    }

寫完后要去進(jìn)行配置

application.properties

spring.mail.host=smtp.qq.com
spring.mail.port=587
spring.mail.username=1228625399@qq.com
spring.mail.password=*****************
spring.mail.default-encoding=utf-8
spring.mail.properties.mail.smtp.auth=true

這里我使用的是qq郵箱,但是聽說他這個垃圾郵件判定等級自己不好改有的是用阿里云郵箱

只用注意兩個點(diǎn) username 寫自己的郵箱地址

獲取授權(quán)碼

下一個password不是郵箱密碼哈,下面說怎么獲取這個授權(quán)碼

進(jìn)去登錄好了以后點(diǎn)擊賬戶,找到下面這個區(qū)域

注意我們打開前兩個 然后掃碼獲取那個授權(quán)碼,把它復(fù)制下來添加到配置文件的password欄。

總結(jié)

這個技術(shù)是很簡單的,但是用好它相比于普通的在網(wǎng)頁上加驗(yàn)證碼我們先聲明一個數(shù)組,調(diào)用函數(shù)去把數(shù)組打亂去去每次獲取驗(yàn)證碼,把驗(yàn)證碼存起來作為text發(fā)送到用戶郵箱用來注冊,這個方法相比點(diǎn)擊驗(yàn)證碼就更加有趣了。當(dāng)然也能用于其他更多的方面~

到此這篇關(guān)于Springboot發(fā)送郵件功能的實(shí)現(xiàn)詳解的文章就介紹到這了,更多相關(guān)Springboot發(fā)送郵件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MyBatis mapping類基本用法

    MyBatis mapping類基本用法

    這篇文章主要為大家介紹了MyBatis mapping類基本用法示例詳解,
    有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • 解析Spring框架中的XmlBeanDefinitionStoreException異常情況

    解析Spring框架中的XmlBeanDefinitionStoreException異常情況

    這篇文章主要介紹了解析Spring框架中的XmlBeanDefinitionStoreException異常情況,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • 基于JDBC封裝的BaseDao(實(shí)例代碼)

    基于JDBC封裝的BaseDao(實(shí)例代碼)

    下面小編就為大家?guī)硪黄贘DBC封裝的BaseDao(實(shí)例代碼)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • Java并發(fā)編程示例(一):線程的創(chuàng)建和執(zhí)行

    Java并發(fā)編程示例(一):線程的創(chuàng)建和執(zhí)行

    這篇文章主要介紹了Java并發(fā)編程示例(一):線程的創(chuàng)建和執(zhí)行,本文是系列文章的第一篇,需要的朋友可以參考下
    2014-12-12
  • 利用Java截取String字符串的幾種常用方法

    利用Java截取String字符串的幾種常用方法

    在開發(fā)應(yīng)用中經(jīng)常會使用到j(luò)ava string,這篇文章主要給大家介紹了關(guān)于利用Java截取String字符串的幾種常用方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • Java常用時間工具類總結(jié)(珍藏版)

    Java常用時間工具類總結(jié)(珍藏版)

    這篇文章主要為大家詳細(xì)介紹了Java中一些常用時間工具類的使用示例代碼,文中的代碼簡潔易懂,對我們學(xué)習(xí)Java有一定幫助,需要的可以參考一下
    2022-07-07
  • java如何在應(yīng)用代碼里捕獲線程堆棧

    java如何在應(yīng)用代碼里捕獲線程堆棧

    這篇文章主要為大家介紹了java如何在應(yīng)用代碼里捕獲線程堆棧實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • java8中@Contended注解的使用

    java8中@Contended注解的使用

    本文主要介紹了java8中@Contended注解的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 通過實(shí)例了解Java 8創(chuàng)建Stream流的5種方法

    通過實(shí)例了解Java 8創(chuàng)建Stream流的5種方法

    這篇文章主要介紹了通過實(shí)例了解Java 8創(chuàng)建Stream流的5種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • SpringBoot的@Value給靜態(tài)變量注入application.properties屬性值

    SpringBoot的@Value給靜態(tài)變量注入application.properties屬性值

    這篇文章主要介紹了SpringBoot的@Value給靜態(tài)變量注入application.properties屬性值,Spring是一個開源的框架,主要是用來簡化開發(fā)流程,通過IOC,依賴注入(DI)和面向接口實(shí)現(xiàn)松耦合,需要的朋友可以參考下
    2023-05-05

最新評論

晋城| 通州市| 进贤县| 惠安县| 故城县| 镇宁| 汕尾市| 北票市| 白玉县| 缙云县| 定结县| 库伦旗| 上林县| 鲜城| 余干县| 泸西县| 新闻| 宣城市| 布拖县| 城固县| 乌恰县| 抚宁县| 大洼县| 淮安市| 崇仁县| 修武县| 隆昌县| 阿拉尔市| 临清市| 治县。| 彭州市| 都匀市| 拉萨市| 台中县| 高雄县| 祥云县| 阳春市| 万安县| 德化县| 舒兰市| 都安|