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

Javaweb實(shí)現(xiàn)郵件發(fā)送

 更新時(shí)間:2022年06月23日 17:23:43   作者:凌晨的路燈  
這篇文章主要為大家詳細(xì)介紹了Javaweb實(shí)現(xiàn)郵件發(fā)送,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Javaweb實(shí)現(xiàn)郵件發(fā)送的具體代碼,供大家參考,具體內(nèi)容如下

發(fā)送郵件使用的是SMTP協(xié)議:一般是smtp.xxx.com ,比如smtp.qq.com

接收郵件:POP3協(xié)議

附件:MIME

使用Java發(fā)送郵件需要準(zhǔn)備JavaMail API 和 Java Activation Framework

得到兩個(gè)jar包

mail.jar

activation.jar

import com.sun.mail.util.MailSSLSocketFactory;
?
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.security.GeneralSecurityException;
import java.util.Properties;
?
public class Email {
? ? public static void main(String[] args) throws GeneralSecurityException, MessagingException {
? ? ? ? Properties prop = new Properties();
? ? ? ? //設(shè)置qq郵件服務(wù)器
? ? ? ? prop.setProperty("mail.host", "smtp.qq.com");
? ? ? ? //郵件發(fā)送協(xié)議
? ? ? ? prop.setProperty("mail.transport.protocol", "smtp");
? ? ? ? //需要驗(yàn)證用戶名和密碼
? ? ? ? prop.setProperty("mail.smtp.auth", "true");
?
? ? ? ? //關(guān)于QQ郵箱,還要設(shè)置SSL加密,加上以下代碼即可
? ? ? ? MailSSLSocketFactory sf = new MailSSLSocketFactory();
? ? ? ? sf.setTrustAllHosts(true);
? ? ? ? prop.put("mail.smtp.ssl.enable", "true");
? ? ? ? prop.put("mail.smtp.ssl.socketFactory", sf);
?
? ? ? ? //使用JavaMail發(fā)送郵件的5個(gè)步驟
? ? ? ? //1,創(chuàng)建定義整個(gè)應(yīng)用程序所需的環(huán)境信息的Session對(duì)象
?
? ? ? ? //qq才有,其他郵箱就不用
? ? ? ? Session session = Session.getDefaultInstance(prop, new Authenticator() {
? ? ? ? ? ? public PasswordAuthentication getPasswordAuthentication() {
? ? ? ? ? ? ? ? return new PasswordAuthentication("920367321@qq.com", "hnjwzkfilnnnbbig");
? ? ? ? ? ? }
? ? ? ? });
? ? ? ? //開(kāi)啟session的debug模式,可以看到程序發(fā)送Email的運(yùn)行狀態(tài)
? ? ? ? /*session.setDebug(true);*/
?
? ? ? ? //2,通過(guò)session得到transport對(duì)象
? ? ? ? Transport ts = session.getTransport();
? ? ? ? //3,使用郵箱的用戶名和授權(quán)碼連接上郵件服務(wù)器
? ? ? ? ts.connect("smtp.qq.com", "920367321@qq.com", "hnjwzkfilnnnbbig");
? ? ? ? //4,創(chuàng)建郵件
? ? ? ? MimeMessage message = new MimeMessage(session);
? ? ? ? //指明郵件的發(fā)件人
? ? ? ? message.setFrom(new InternetAddress("920367321@qq.com"));
? ? ? ? //指明郵件的收件人,現(xiàn)在發(fā)件人和收件人是一樣的,就是自己給自己發(fā)
? ? ? ? message.setRecipient(Message.RecipientType.TO, new InternetAddress("920367321@qq.com"));
? ? ? ? //郵件的標(biāo)題
? ? ? ? message.setSubject("只包含文本的簡(jiǎn)單郵件");
? ? ? ? //郵件的文本內(nèi)容
? ? ? ? message.setContent("你好啊","text/html;charset=UTF-8");
? ? ? ? //5,發(fā)送郵件
? ? ? ? ts.sendMessage(message,message.getAllRecipients());
? ? ? ? //6,關(guān)閉連接
? ? ? ? ts.close();
? ? }
}

關(guān)于在郵件中添加附件 MIME(多用途互聯(lián)網(wǎng)郵件擴(kuò)展類型)

MimeBodyPart類

javax.mail.internet.MimeBodyPart類表示的是一個(gè)MIME消息,它和MimeMesssage類一樣都是從Part接口結(jié)成過(guò)來(lái)

MimeMultipart類

javax.mail.internet.MimeMultipart是抽象類Multipart的實(shí)現(xiàn)子類,它用來(lái)組合多個(gè)MIME消息,一個(gè)MimeMultipart對(duì)象可以包含多個(gè)代表MIME消息的MimeBodyPart對(duì)象

帶圖片的郵件,其他的代碼與上面一樣,只需要更改郵件的內(nèi)容即可

//郵件的標(biāo)題
message.setSubject("只包含圖片的簡(jiǎn)單郵件");
?//準(zhǔn)備郵件數(shù)據(jù)
?
//準(zhǔn)備圖片數(shù)據(jù)
MimeBodyPart image = new MimeBodyPart();
//圖片需要數(shù)據(jù)處理,DataHandler就是這樣的一個(gè)類
DataHandler dh = new DataHandler(new FileDataSource("src/main/resources/01.png"));
image.setDataHandler(dh);//在我們的body中放入這個(gè)處理的圖片數(shù)據(jù)
image.setContentID("01.png");
?
//準(zhǔn)備正文數(shù)據(jù)
MimeBodyPart text = new MimeBodyPart();
text.setContent("這是一封帶圖片<img src='cid:01.png/>'的郵件", "text/html;charset=UTF-8");
//描述數(shù)據(jù)關(guān)系
MimeMultipart mm = new MimeMultipart();
mm.addBodyPart(text);
mm.addBodyPart(image);
mm.setSubType("related");
?
//設(shè)置到消息中,保存修改
message.setContent(mm);//把最后編輯好的郵件放到消息當(dāng)中
message.saveChanges();//保存修改
//5,發(fā)送郵件
ts.sendMessage(message,message.getAllRecipients());

帶附件的郵件,操作基本沒(méi)差,只需要?jiǎng)?chuàng)建一個(gè)附件的MimeBodyPart再添加到消息中即可

//準(zhǔn)備圖片數(shù)據(jù)
MimeBodyPart image = new MimeBodyPart();
//圖片需要數(shù)據(jù)處理,DataHandler就是這樣的一個(gè)類
DataHandler dh = new DataHandler(new FileDataSource("src/main/resources/01.png"));
image.setDataHandler(dh);//在我們的body中放入這個(gè)處理的圖片數(shù)據(jù)
? ? ? ? image.setContentID("01.png");
?
//附件
MimeBodyPart accessory = new MimeBodyPart();
accessory.setDataHandler(new DataHandler(new FileDataSource("src/main/resources/hello.txt")));
accessory.setFileName("hello.txt");//設(shè)置附件的名字
//準(zhǔn)備正文數(shù)據(jù)
MimeBodyPart text = new MimeBodyPart();
text.setContent("這是一封帶圖片<img src='cid:01.png'/>的郵件", "text/html;charset=UTF-8");
//描述數(shù)據(jù)關(guān)系
MimeMultipart mm = new MimeMultipart();
mm.addBodyPart(text);
mm.addBodyPart(image);
mm.setSubType("related");
?
//將圖片和文本封裝為一個(gè)MimeMultipart
MimeBodyPart contentText = new MimeBodyPart();
contentText.setContent(mm);
?
//拼接附件
MimeMultipart allFile = new MimeMultipart();
allFile.addBodyPart(accessory);//附件
allFile.addBodyPart(contentText);
allFile.setSubType("mixed");//正文和附件都存在郵件中,所有類型設(shè)置為mixed
?
//設(shè)置到消息中,保存修改
message.setContent(allFile);//把最后編輯好的郵件放到消息當(dāng)中
message.saveChanges();//保存修改
//5,發(fā)送郵件
ts.sendMessage(message,message.getAllRecipients());

注意點(diǎn):

在一個(gè)web項(xiàng)目中:例如實(shí)現(xiàn)一個(gè)用戶注冊(cè)就給用戶發(fā)一封郵件的功能,但通過(guò)之前的代碼我們可以發(fā)現(xiàn),發(fā)送一封郵件是需要時(shí)間的,這個(gè)時(shí)候考慮到用戶體驗(yàn)我們不應(yīng)該讓用戶等待,所以可以考慮使用多線程,為郵件發(fā)送單獨(dú)設(shè)置為一條線程,而不影響主線程的操作!

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java中年月日的加減法使用示例

    java中年月日的加減法使用示例

    這篇文章主要介紹了java中年月日的加減法使用示例的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • 解決SpringBoot整合Mybatis掃描不到Mapper的問(wèn)題

    解決SpringBoot整合Mybatis掃描不到Mapper的問(wèn)題

    這篇文章主要介紹了解決SpringBoot整合Mybatis掃描不到Mapper的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • 詳解使用Spring Boot開(kāi)發(fā)Web項(xiàng)目

    詳解使用Spring Boot開(kāi)發(fā)Web項(xiàng)目

    這篇文章主要介紹了詳解使用Spring Boot開(kāi)發(fā)Web項(xiàng)目,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • springboot跨域問(wèn)題解決方案

    springboot跨域問(wèn)題解決方案

    這篇文章主要介紹了springboot跨域問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Spring Boot整合Web項(xiàng)目常用功能詳解

    Spring Boot整合Web項(xiàng)目常用功能詳解

    這篇文章主要介紹了Spring Boot整合Web項(xiàng)目常用功能詳解,在Web應(yīng)用開(kāi)發(fā)過(guò)程中,可以通過(guò)Spring Boot的Starter來(lái)將這些常用功能進(jìn)行整合與集中維護(hù),以達(dá)到開(kāi)箱即用的目的。,需要的朋友可以參考下
    2019-06-06
  • Spring?Boot?Admin?添加報(bào)警提醒和登錄驗(yàn)證功能的具體實(shí)現(xiàn)

    Spring?Boot?Admin?添加報(bào)警提醒和登錄驗(yàn)證功能的具體實(shí)現(xiàn)

    報(bào)警提醒功能是基于郵箱實(shí)現(xiàn)的,當(dāng)然也可以使用其他的提醒功能,如釘釘或飛書(shū)機(jī)器人提醒也是可以的,但郵箱報(bào)警功能的實(shí)現(xiàn)成本最低,所以本文我們就來(lái)看郵箱的報(bào)警提醒功能的具體實(shí)現(xiàn)
    2022-01-01
  • Spring MVC項(xiàng)目中l(wèi)og4J和AOP使用詳解

    Spring MVC項(xiàng)目中l(wèi)og4J和AOP使用詳解

    項(xiàng)目日志記錄是項(xiàng)目開(kāi)發(fā)、運(yùn)營(yíng)必不可少的內(nèi)容,有了它可以對(duì)系統(tǒng)有整體的把控,出現(xiàn)任何問(wèn)題都有蹤跡可尋。下面這篇文章主要給大家介紹了關(guān)于Spring MVC項(xiàng)目中l(wèi)og4J和AOP使用的相關(guān)資料,需要的朋友可以參考下。
    2017-12-12
  • java 獲取mac地址的兩種方法(推薦)

    java 獲取mac地址的兩種方法(推薦)

    下面小編就為大家?guī)?lái)一篇java 獲取mac地址的兩種方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-10-10
  • java初學(xué)者必須理解這幾個(gè)問(wèn)題

    java初學(xué)者必須理解這幾個(gè)問(wèn)題

    這篇文章主要介紹了java初學(xué)者必須理解這幾個(gè)問(wèn)題,需要的朋友可以參考下
    2014-10-10
  • Java 獲取上一個(gè)月的月份的正確寫(xiě)法

    Java 獲取上一個(gè)月的月份的正確寫(xiě)法

    這篇文章主要介紹了java獲取上一個(gè)月月份,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09

最新評(píng)論

永靖县| 舟曲县| 韶山市| 亳州市| 永州市| 子长县| 弥渡县| 泊头市| 安丘市| 广饶县| 石台县| 陆丰市| 白河县| 襄汾县| 新巴尔虎左旗| 江陵县| 柏乡县| 金昌市| 成安县| 巫溪县| 高阳县| 公安县| 松原市| 南岸区| 西贡区| 河南省| 桐梓县| 嵊泗县| 平江县| 临潭县| 武安市| 东至县| 涪陵区| 寻乌县| 河东区| 高阳县| 准格尔旗| 农安县| 普定县| 佛坪县| 石渠县|