欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

附件:MIME

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

得到兩個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();
? ? ? ? //設置qq郵件服務器
? ? ? ? prop.setProperty("mail.host", "smtp.qq.com");
? ? ? ? //郵件發(fā)送協(xié)議
? ? ? ? prop.setProperty("mail.transport.protocol", "smtp");
? ? ? ? //需要驗證用戶名和密碼
? ? ? ? prop.setProperty("mail.smtp.auth", "true");
?
? ? ? ? //關于QQ郵箱,還要設置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個步驟
? ? ? ? //1,創(chuàng)建定義整個應用程序所需的環(huán)境信息的Session對象
?
? ? ? ? //qq才有,其他郵箱就不用
? ? ? ? Session session = Session.getDefaultInstance(prop, new Authenticator() {
? ? ? ? ? ? public PasswordAuthentication getPasswordAuthentication() {
? ? ? ? ? ? ? ? return new PasswordAuthentication("920367321@qq.com", "hnjwzkfilnnnbbig");
? ? ? ? ? ? }
? ? ? ? });
? ? ? ? //開啟session的debug模式,可以看到程序發(fā)送Email的運行狀態(tài)
? ? ? ? /*session.setDebug(true);*/
?
? ? ? ? //2,通過session得到transport對象
? ? ? ? Transport ts = session.getTransport();
? ? ? ? //3,使用郵箱的用戶名和授權碼連接上郵件服務器
? ? ? ? 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"));
? ? ? ? //郵件的標題
? ? ? ? message.setSubject("只包含文本的簡單郵件");
? ? ? ? //郵件的文本內(nèi)容
? ? ? ? message.setContent("你好啊","text/html;charset=UTF-8");
? ? ? ? //5,發(fā)送郵件
? ? ? ? ts.sendMessage(message,message.getAllRecipients());
? ? ? ? //6,關閉連接
? ? ? ? ts.close();
? ? }
}

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

MimeBodyPart類

javax.mail.internet.MimeBodyPart類表示的是一個MIME消息,它和MimeMesssage類一樣都是從Part接口結成過來

MimeMultipart類

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

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

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

帶附件的郵件,操作基本沒差,只需要創(chuàng)建一個附件的MimeBodyPart再添加到消息中即可

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

注意點:

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Java之IO流面試題案例講解

    Java之IO流面試題案例講解

    這篇文章主要介紹了Java之IO流案例講解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 簡單了解JAVA public class與class區(qū)別

    簡單了解JAVA public class與class區(qū)別

    這篇文章主要介紹了簡單了解JAVA public class與class區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • Java定義畫板類的方法

    Java定義畫板類的方法

    這篇文章主要為大家詳細介紹了Java定義畫板類的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • spring boot動態(tài)加載Echart餅狀圖

    spring boot動態(tài)加載Echart餅狀圖

    這篇文章主要為大家詳細介紹了spring boot動態(tài)加載Echart餅狀圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • Mybatisplus創(chuàng)建Spring?Boot工程打包錯誤的解決方式

    Mybatisplus創(chuàng)建Spring?Boot工程打包錯誤的解決方式

    最近在實戰(zhàn)springboot遇到了一些坑,記錄一下,下面這篇文章主要給大家介紹了關于Mybatisplus創(chuàng)建Spring?Boot工程打包錯誤的解決方式,文中通過圖文介紹的介紹的非常詳細,需要的朋友可以參考下
    2023-03-03
  • 解決IDEA克隆代碼后在右下角沒有git分支的問題

    解決IDEA克隆代碼后在右下角沒有git分支的問題

    這篇文章主要介紹了解決IDEA克隆代碼后在右下角沒有git分支的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • 深入Ajax代理的Java Servlet的實現(xiàn)詳解

    深入Ajax代理的Java Servlet的實現(xiàn)詳解

    本篇文章是對Ajax代理的Java Servlet的實現(xiàn)方法進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • 如何使用Idea搭建全注解式開發(fā)的SpringMVC項目

    如何使用Idea搭建全注解式開發(fā)的SpringMVC項目

    這篇文章主要介紹了如何使用Idea搭建全注解式開發(fā)的SpringMVC項目,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • Java獲取隨機數(shù)的n種方法

    Java獲取隨機數(shù)的n種方法

    項目中,我們常常會用到隨機數(shù),本文主要介紹了Java獲取隨機數(shù)的n種方法,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • Java中冒泡排序的原生實現(xiàn)方法(正序與逆序)

    Java中冒泡排序的原生實現(xiàn)方法(正序與逆序)

    這篇文章主要給大家介紹了關于Java中冒泡排序的原生實現(xiàn)方法(正序與逆序)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11

最新評論