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

JavaWeb實現(xiàn)郵件發(fā)送功能

 更新時間:2019年12月20日 14:41:45   作者:SS_Lionet  
這篇文章主要為大家詳細(xì)介紹了JavaWeb實現(xiàn)郵件發(fā)送功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

基于JavaWeb的郵件發(fā)送功能(多附件),供大家參考,具體內(nèi)容如下

本次學(xué)習(xí)主要目的是為了測試由QQ郵箱發(fā)送到任意一個有效郵箱的功能實現(xiàn),附帶多個附件。學(xué)習(xí)者可以借鑒其他郵箱的格式,梳理一下要寫的內(nèi)容。項目把文件內(nèi)容放到了MimeMessage 郵件對象里,其中包含了如發(fā)件人、收件人、抄送人、郵件主題、郵件內(nèi)容、郵件時間和郵件附件等一些內(nèi)容。

項目中遇到的問題:

1、在執(zhí)行到 File file = new File(“D:\Chat_Software\sky.JPG”);時出現(xiàn)錯誤,之前寫的時xlsx文件,測試期間可以對.xls,jpg,文本,.doc文件進(jìn)行發(fā)送。發(fā)送xlsx文件時出現(xiàn)報錯。
問題解決方案:
.xls文件擴展名對應(yīng)的是Microsoft Office EXCEL 2003及以前的版本。
.xlsx文件擴展名對應(yīng)的是Microsoft Office EXCEL 2007及后期的版本。
有可能時你下載的mai不是1.6以上版本的,建議下載1.6以上版本的mail

2、在執(zhí)行到 message.saveChanges(); 方法報錯無法進(jìn)行保存設(shè)置,也有可能時你的mail版本較低造成的。

在書寫 File file = new File(); 時注意修改正確的路徑,也可以寫在form表單里用file進(jìn)行傳值,主題和內(nèi)容也寫在了方法里因人而異如果其他需求可以需改參數(shù)進(jìn)行傳值。

本次用到的主要jar包如下:

  • javax.mail-1.6.0.jar
  • activation.jar

代碼如下:

EmailSendController.java

package com.yang.controller;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.yang.util.Email_Send_Util;

@Controller
@RequestMapping("/email")
public class EmailSendController {

 @RequestMapping(value = "/send.do")
 @ResponseBody
 public boolean impotr(HttpServletRequest request) {
 String toMail = request.getParameter("toMail");
 String myMail = request.getParameter("myMail");
 String userPwd = request.getParameter("userPwd");

 System.out.println( toMail+myMail+userPwd);
 boolean bool=Email_Send_Util.send( toMail,myMail, userPwd);
 return bool ;
 }

}

Authentication.java

package com.yang.util;

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

public class Authentication extends Authenticator {
 String username = null;
 String password = null;

 public Authentication() {
 }

 public Authentication(String username, String password) {
  this.username = username;
 this.password = password;
 }

 protected PasswordAuthentication getPasswordAuthentication(){
 PasswordAuthentication pa = new PasswordAuthentication(username, password);
 return pa;
 }
}

CreateMimeMessage.java

package com.yang.util;

import java.io.File;
import java.util.Date;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message.RecipientType;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;

/**
 * 創(chuàng)建一封復(fù)雜郵件(文本+圖片+附件)
 */
public class CreateMimeMessage {
 public static MimeMessage createMimeMessage(Session session, String myMail, String toMail) throws Exception {
 // 1. 創(chuàng)建郵件對象
 MimeMessage message = new MimeMessage(session);

 // 2. From: 發(fā)件人
 message.setFrom(new InternetAddress(myMail, "我的測試郵件_發(fā)件人昵稱", "UTF-8"));

 // 3. To: 收件人(可以增加多個收件人、抄送、密送)
 message.addRecipient(RecipientType.TO, new InternetAddress(toMail, "我的測試郵件_收件人昵稱", "UTF-8"));

 // 4. Subject: 郵件主題
 message.setSubject("TEST郵件主題(文本+圖片+附件)", "UTF-8");

 // 抄送人
 Address ccAddress = new InternetAddress("*********@qq.com", "我的測試郵件_抄送人昵稱", "UTF-8");
 message.addRecipient(Message.RecipientType.CC, ccAddress);

 /*
 * 下面是郵件內(nèi)容的創(chuàng)建:
 */

 // 5. 創(chuàng)建圖片“節(jié)點”
 MimeBodyPart image = new MimeBodyPart();
 File file = new File("D:\\Chat_Software\\sky.JPG");
 DataHandler dh = new DataHandler(new FileDataSource(file)); // 讀取本地文件
 image.setDataHandler(dh); // 將圖片數(shù)據(jù)添加到“節(jié)點”
 // image.setContentID("image_fairy_tail");// 為“節(jié)點”設(shè)置一個唯一編號(在文本“節(jié)點”將引用該ID)
 image.setFileName(MimeUtility.encodeText(file.getName()));
 
 // 6. 創(chuàng)建文本“節(jié)點”
 MimeBodyPart text = new MimeBodyPart();
 // text.setContent("這是一張圖片<br/>測試圖片<br/><img
 // src='cid:image_fairy_tail'/>", "text/html;charset=UTF-8");
 text.setContent("這是一張圖片<br/>測試圖片", "text/html;charset=UTF-8");

 // 7. (文本+圖片)設(shè)置 文本 和 圖片 “節(jié)點”的關(guān)系(將 文本 和 圖片 “節(jié)點”合成一個混合“節(jié)點”)
 MimeMultipart mm_text_image = new MimeMultipart();
 mm_text_image.addBodyPart(text);
 mm_text_image.addBodyPart(image);
 mm_text_image.setSubType("related"); // 關(guān)聯(lián)關(guān)系

 // 8. 將 文本+圖片 的混合“節(jié)點”封裝成一個普通“節(jié)點”
 // 最終添加到郵件的 Content 是由多個 BodyPart 組成的 Multipart, 所以我們需要的是 BodyPart,
 // 上面的 mm_text_image 并非 BodyPart, 所有要把 mm_text_image 封裝成一個 BodyPart
 MimeBodyPart text_image = new MimeBodyPart();
 text_image.setContent(mm_text_image);

 // 9. 創(chuàng)建附件“節(jié)點”
 MimeBodyPart attachment = new MimeBodyPart();
 File file2 = new File("E:\\boHaiBank\\Test\\test.xlsx");
 DataHandler dh2 = new DataHandler(new FileDataSource(file2)); // 讀取本地文件
 attachment.setDataHandler(dh2); // 將附件數(shù)據(jù)添加到“節(jié)點”
 attachment.setFileName(MimeUtility.encodeText(dh2.getName())); // 設(shè)置附件的文件名

 // 10. 設(shè)置(文本+圖片)和 附件 的關(guān)系(合成一個大的混合“節(jié)點” / Multipart )
 MimeMultipart mm = new MimeMultipart();
 mm.addBodyPart(text_image);
 mm.addBodyPart(attachment); // 如果有多個附件,可以創(chuàng)建多個多次添加
 mm.setSubType("mixed"); // 混合關(guān)系

 // 11. 設(shè)置整個郵件的關(guān)系(將最終的混合“節(jié)點”作為郵件的內(nèi)容添加到郵件對象)
 message.setContent(mm);

 // 12. 設(shè)置發(fā)件時間
 message.setSentDate(new Date());

 // 13. 保存上面的所有設(shè)置
 message.saveChanges();

 return message;
 }

}

Email_Send_Util.java

package com.yang.util;

import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.MimeMessage;

public class Email_Send_Util {

 public static boolean send(String toMail,String myMail, String userPwd) {
 // QQ郵箱發(fā)件的服務(wù)器和端口
 Properties props = new Properties();

 props.put("mail.transport.protocol", "SMTP");// 設(shè)置發(fā)送郵件使用的協(xié)議
 props.put("mail.smtp.host", "smtp.qq.com");// 指定郵件發(fā)送服務(wù)器服務(wù)器 "smtp.qq.com"
 props.put("mail.smtp.port", "25");
 props.put("mail.smtp.auth", "true"); // 設(shè)置需要身份驗證(不驗證會不通過)

 Authenticator authentication = new Authentication(myMail, "你的郵箱授權(quán)碼");
 Session session = Session.getDefaultInstance(props, authentication);

 MimeMessage message;
 try {
 message = CreateMimeMessage.createMimeMessage(session, myMail, toMail);
 // 獲取發(fā)送方對象
 Transport transport = session.getTransport("smtp");
 // 連接郵件服務(wù)器,鏈接您的QQ郵箱,用戶名(可以不用帶后綴)、密碼
 transport.connect(myMail, userPwd);
 // 發(fā)送郵件
 // 第一個參數(shù):郵件的消息體
 // 第二個參數(shù):郵件所有的接收人/抄送人
 transport.sendMessage(message, message.getAllRecipients());
 transport.close();
 return true;
 } catch (Exception e) {
 e.printStackTrace();
 return false;
 }
 }

}

測試發(fā)送郵箱的jsp頁面

<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
 String path = request.getContextPath();
 String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
 + path + "/";
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>郵件發(fā)送</title>

<script type="text/javascript" src="js/jquery-1.10.2.js"></script>
<script type="text/javascript" src="js/jquery-2.1.1.min.js"></script>

</head>
<body>
 <div>
 <form id="login_form" method="post">
 <table border="1px" width="750px" height="400px" align="center" cellpadding="0px" cellspacing="0px" bgcolor="white" >
 <tr height="40px">
 <td colspan="2">
 <font size="4">郵件發(fā)送</font> &nbsp;&nbsp;&nbsp;Email
 </td>
 </tr>
 <tr>
  <td>收件人</td><td><input type="text" name="toMail" size="34px"/></td>
 </tr>
 <tr>
  <td>郵件發(fā)送人</td><td><input type="text" name="myMail" size="34px"/></td>
 </tr>
 <tr>
  <td>密碼</td><td><input type="text" name="userPwd" size="34px"/></td>
 </tr>
  
 </table>
 <input type="button" onclick="emailsend()" value="發(fā)送">
 </form>
 </div>
 <script type="text/javascript">
 
 function emailsend() {
 $.ajax({
 url : "email/send.do",
 type : "POST",
 data : $("#login_form").serialize(),
 beforeSend : function() {
  console.log("正在進(jìn)行,請稍候");
 },
 success : function(e) {
  if (e == true) {
  alert("發(fā)送成功");
  } else {
  alert("發(fā)送失敗");
  }
 }
 });
 }
 </script>
</body>
</html>

發(fā)送成功后,收件人的郵件

所需的jar包可以在這個鏈接里下載,其中還有定時發(fā)送郵件所需的jar包:mail.jar

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

相關(guān)文章

  • Linux系統(tǒng)Docker拉取JDK21鏡像超細(xì)詳解

    Linux系統(tǒng)Docker拉取JDK21鏡像超細(xì)詳解

    這篇文章主要介紹了如何在Linux系統(tǒng)上使用Docker拉取JDK21鏡像,并基于該鏡像搭建開發(fā)和測試環(huán)境,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-12-12
  • SpringBoot如何讀取application.properties配置文件

    SpringBoot如何讀取application.properties配置文件

    這篇文章主要介紹了SpringBoot如何讀取application.properties配置文件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • SpringBoot集成FTP文件服務(wù)器簡單應(yīng)用方式

    SpringBoot集成FTP文件服務(wù)器簡單應(yīng)用方式

    這篇文章主要介紹了SpringBoot集成FTP文件服務(wù)器簡單應(yīng)用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Springboot使用test無法啟動問題的解決

    Springboot使用test無法啟動問題的解決

    這篇文章主要介紹了Springboot使用test無法啟動問題的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • SpringBoot如何訪問html和js等靜態(tài)資源配置

    SpringBoot如何訪問html和js等靜態(tài)資源配置

    這篇文章主要介紹了SpringBoot如何訪問html和js等靜態(tài)資源配置,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • SpringBoot集成Aviator實現(xiàn)參數(shù)校驗的代碼工程

    SpringBoot集成Aviator實現(xiàn)參數(shù)校驗的代碼工程

    Aviator是一個高性能、輕量級的java語言實現(xiàn)的表達(dá)式求值引擎,主要用于各種表達(dá)式的動態(tài)求值,本文給大家詳細(xì)介紹了SpringBoot集成Aviator實現(xiàn)參數(shù)校驗的方法,并通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2024-11-11
  • Redis緩存策略超詳細(xì)講解

    Redis緩存策略超詳細(xì)講解

    實際開發(fā)中緩存處理是必須的,不可能我們每次客戶端去請求一次服務(wù)器,服務(wù)器每次都要去數(shù)據(jù)庫中進(jìn)行查找,為什么要使用緩存?說到底是為了提高系統(tǒng)的運行速度
    2022-09-09
  • Java構(gòu)建高效結(jié)果緩存方法示例

    Java構(gòu)建高效結(jié)果緩存方法示例

    這篇文章主要介紹了Java構(gòu)建高效結(jié)果緩存方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • IDEA 2023創(chuàng)建JSP項目的完整步驟教程

    IDEA 2023創(chuàng)建JSP項目的完整步驟教程

    這篇文章主要介紹了IDEA 2023創(chuàng)建JSP項目的完整步驟教程,創(chuàng)建項目需要經(jīng)過新建項目、設(shè)置項目名稱和路徑、選擇JDK版本、添加模塊和工件、配置Tomcat服務(wù)器等步驟,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • Java事件處理機制(自定義事件)實例詳解

    Java事件處理機制(自定義事件)實例詳解

    這篇文章主要介紹了Java事件處理機制(自定義事件)實例詳解的相關(guān)資料,需要的朋友可以參考下
    2016-12-12

最新評論

珠海市| 岱山县| 乐山市| 苗栗县| 富宁县| 鹤庆县| 太和县| 武平县| 嘉祥县| 囊谦县| 慈利县| 根河市| 本溪| 五家渠市| 安达市| 鄂托克旗| 基隆市| 北京市| 德钦县| 南通市| 开平市| 遂宁市| 莆田市| 神池县| 马关县| 五峰| 沙河市| 象州县| 黄龙县| 贵南县| 轮台县| 本溪市| 安福县| 瓦房店市| 延吉市| 呼玛县| 华亭县| 株洲县| 蒲江县| 柳林县| 华阴市|