java 發郵件_java實現郵件的發送

文章所用jar文件

鏈接:https://pan.baidu.com/s/1YaxhdkaCTC4TUDL-y9-ASQ

提取碼:30ow

程序入口,發送工具類

package test;

import org.apache.commons.mail.EmailException;

/**

* 郵箱發送工具類

* @author Administrator

*

*/

public class EmailUtil {

public static void main(String[] args) throws EmailException {

//自定義工具類

EmailUtils EmailUtils = new EmailUtils();

//返回0表示發送失敗 返回1表示發送成功

int o = EmailUtils.sendSimpleEmail("123465@qq.com", "名稱", "Java send Email", "測試");

if(o==0){

System.out.println("發送失敗");

}else{

System.out.println("發送成功");

}

}

}

發送簡單郵件方法類

package test;

import org.apache.commons.mail.DefaultAuthenticator;

import org.apache.commons.mail.EmailException;

import org.apache.commons.mail.SimpleEmail;

public class EmailUtils{

/**

* 發送簡單郵件方法

* @param emailAddress

* 發送地址

* @param sendName

* 發件人名

* @param title

* 郵件標題

* @param message

* 郵件內容

* @return

* 返回0表示發送失敗 返回1表示發送成功

* @throws EmailException

*/

public int sendSimpleEmail(String emailAddress, String sendName, String title, String message) throws EmailException{

//要發送的服務器 地址

String hostName="smtp.qq.com";//對方郵箱是什么類型,這里是QQ郵箱的服務器地址

//要發送的服務器 郵箱賬號

String userName="自己的郵箱地址";

//要發送的服務器 郵箱密碼

String password="自己的郵箱密碼";

//要發送的端口 587 465 25

int smtpPort=587;

//是否使用ssl加密協議

boolean SSL=true;

try {

SimpleEmail email = new SimpleEmail();

//smtp address

email.setHostName(hostName);

//smtp port

email.setSmtpPort(smtpPort);

//賬號 密碼

email.setAuthenticator(new DefaultAuthenticator(userName, password));

//設置發件人地址

email.setFrom(userName);

//設置郵件標題

email.setSubject(title);

//設置郵件主體

//email.setMsg(message);

email.setContent(message, "text/html;charset=UTF-8");//解決亂碼

//設置收件人地址

email.addTo(emailAddress);

//設置是否使用SSL加密

email.setSSL(SSL);

//發送郵件

email.send();

} catch (Exception e) {

//異常

return 0;

}

//正常

return 1;

}

}

郵件發送控制器

package test;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class SendEmailServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// 前端form表單post請求--防止請求提交亂碼.

request.setCharacterEncoding("utf-8");

// 獲取前端傳入的參數

try {

// 郵件發送處理

SendEmailUtil.sendMail("2249119735@qq.com", "郵件測試");

// 將發送信息保存到session中

request.getSession().setAttribute("send_msg", "郵件發送成功!");

// 頁面跳轉到發送結果頁面

request.getRequestDispatcher("/index.jsp").forward(request, response);

} catch (Exception e) {

e.printStackTrace();

request.getSession().setAttribute("send_msg", "郵件發送失敗!");

request.getRequestDispatcher("/index.jsp").forward(request, response);

}

}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

this.doGet(request, response);

}

}

核心發送方法

package test;

import java.util.Properties;

import javax.mail.Address;

import javax.mail.MessagingException;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

public class SendEmailUtil {

public static boolean sendMail(String emailAddress, String emailMsg) {

// 誰發送

String from = "1535765656@qq.com";

// 發給誰

String to = emailAddress;

// 發送者的用戶名和密碼(郵箱登錄用)

final String username = "1535765656@qq.com"; // 此處填寫發送的郵箱名

final String password = "ypvjnbyqelcsihag"; // 此處填寫登錄的郵箱密碼

// 定義properties對象,設置環境信息

Properties properties = new Properties();

/*

* mail.smtp.host :指定連接的郵件服務器的主機名。如:163郵箱就填寫smtp.163.com

* 若在本地測試的話,需要在本地安裝smtp服務器

*/

properties.setProperty("mail.smtp.host", "smtp.qq.com");

// mail.smtp.auth:指定客戶端是否要向郵件服務器提交驗證

properties.setProperty("mail.smtp.auth", "true");

/*

* mail.transport.protocol:指定郵件發送協議:smtp。smtp:發郵件;pop3:收郵件

* mail.store.protocol:指定郵件接收協議

*/

properties.setProperty("mail.transport.protocol", "smtp");

// 獲取session對象

Session session = Session.getInstance(properties);

// 當設置為true,JavaMail AP就會將其運行過程和郵件服務器的交互命令信息輸出到console中,用于JavaMail的調試

session.setDebug(true);

try {

// 創建郵件對象

MimeMessage message = new MimeMessage(session);

// 設置郵件發送方

message.setFrom(new InternetAddress(from));

// 設置郵件發送的主題

message.setSubject("郵件發送設置");

// 設置郵件發送的內容

message.setContent(emailMsg,"text/html;charset=utf-8");

Transport transport=session.getTransport();

// 連接郵件服務器,“”中填寫郵件服務器主機名

properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

transport.connect("smtp.qq.com",465, username, password);

transport.sendMessage(message,new Address[]{new InternetAddress(to)});

transport.close();

return true;

} catch (MessagingException e) {

e.printStackTrace();

return false;

}

}

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/271922.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/271922.shtml
英文地址,請注明出處:http://en.pswp.cn/news/271922.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

軟件工程與程序算法

軟件工程包括需求分析、概要設計、詳細設計、代碼實現和維護五個部分。而具體的程序編碼只占其中的一小部分。算法是在代碼設計中的基礎,提供了解決問題的方法。軟件工程是應用計算機科學、數學及管理科學等原理,開發軟件的工程。軟件工程借鑒傳統工程的…

docker安裝Sentinel

1:拉取鏡像:docker pull bladex/sentinel-dashboard 2:啟動 docker run --name sentinel -d -p 8858:8858 -d bladex/sentinel-dashboard 3:訪問 http://公網ip:8858 4:登錄,用戶名和密碼都是sentinel

藍牙技術的工作原理及用途

所謂藍牙技術就是一種全球無線通訊標準,在一定距離內連接設備。目前,藍牙技術也已應用到各個領域中,并已成為接入物聯網(IOT)的主要技術。那關于藍牙技術的工作原理本文將進行介紹,并概括其特點。藍牙技術的…

什么是BusyBox?

BusyBox 是標準 Linux 工具的一個單個可執行實現。BusyBox 包含了一些簡單的工具,例如 cat 和 echo,還包含了一些更大、更復雜的工具,例如 grep、find、mount 以及 telnet。有些人將 BusyBox 稱為 Linux 工具里的瑞士軍刀.簡單的說BusyBox就好…

iOS十進制切割格式轉換

//"123456789" 轉換后 "123,456,789" interface NSString (num)- (NSString *)money;endimplementation NSString (num)- (NSString *)money{NSNumberFormatter *numFormat [[NSNumberFormatter alloc] init];[numFormat setNumberStyle:NSNumberFormatte…

同一接口有多個實現類,怎么來注入一個指定的實現?@Resource、@Autowired、@Qualifier

如果一個接口有2個以上不同的實現類, 那么如何Autowire一個指定的實現 1:首先,UserService接口有兩個實現類 UserService1和 UserService2 UserService接口 2:以下是UserService接口的兩個實現類UserService1和UserService2,請注意service注解的使用方式&#xff…

java類型比較_java 基本數據類型 ==和equals()比較

1.基本類型的存儲Java 8種基本類型都是存儲在堆棧中,例:int i 1;String str "hello world";也是存儲在堆棧中。new基本類型的包裝器類型和new String()都是存儲在堆內存中。例Integer i new Integer(1);String str new String("hello…

嵌入式操作系統的主要特點都有哪些

嵌入式操作系統(EOS)是指用于嵌入式系統的操作系統。嵌入式操作系統是一種用途廣泛的系統軟件,通常包括與硬件的底層驅動軟件、系統內核、設備驅動接口、通信協議、圖形界面、標準化瀏覽器等。嵌入式系統分為4層:硬件層、驅動層、…

UIWebView UITextView

// // ViewController.m // 網頁 //#import "ViewController.h"interface ViewController ()<UITextFieldDelegate,UIWebViewDelegate> property (weak, nonatomic) IBOutlet UITextField *textFiled; property (weak, nonatomic) IBOutlet UIWebView *webVi…

BeanFactory和ApplicationContext有什么區別?

BeanFactory&#xff1a; 是Spring里面最底層的接口&#xff0c;提供了最簡單的容器的功能&#xff0c;只提供了實例化對象和拿對象的功能 ApplicationContext&#xff1a; 應用上下文&#xff0c;繼承BeanFactory接口&#xff0c;它是Spring的一各更高級的容器&#xff0c;提…

java的繼承實例_Java繼承和多態實例

我們知道面向對象的三大特性是封裝、繼承和多態。然而我們有時候總是搞不清楚這些概念。下面對這些概念進行整理&#xff0c;為以后面向抽象的編程打下堅實的基礎。封裝的概念還是很容易理解的。如果你會定義類&#xff0c;那么相信你對封裝的概念已經完全掌握了。下面定義的幾…

【數據庫】13種會導致索引失效語句寫法

數據庫的索引是保證數據快速查詢的重中之重&#xff0c;以下13種會導致索引失效語句會導致你的SQL查詢索引失效&#xff0c;具體如下&#xff1a;1、使用like關鍵字模糊查詢時&#xff0c;% 放在前面索引不起作用&#xff0c;只有“%”不在第一個位置&#xff0c;索引才會生效&…

yii2史上最簡單式安裝教程,沒有之一

作者&#xff1a;白狼 出處&#xff1a;www.manks.top/article/yii2_install 本文版權歸作者&#xff0c;歡迎轉載&#xff0c;但未經作者同意必須保留此段聲明&#xff0c;且在文章頁面明顯位置給出原文連接&#xff0c;否則保留追究法律責任的權利。 最近有小伙伴私聊我&…

java static調用嗎_Java中的static的使用

1.Java 中被static修飾的成員稱為靜態成員或類成員。它屬于整個類所有&#xff0c;而不是某個對象所有&#xff0c;即被類的所有對象所共享、且優先于對象存在。靜態成員可以使用類名直接訪問&#xff0c;也可以使用對象名進行訪問。使用 static 可以修飾變量、方法和代碼塊。2…

15個搞笑的程序員段子

1. 問答Q&#xff1a;你是怎么區分一個內向的程序員和一個外向的程序員的&#xff1f;A&#xff1a;外向的程序員會看著你的鞋和你說話時。Q&#xff1a;為什么程序員不能區分萬圣節和圣誕節&#xff1f;A&#xff1a;這是因為 Oct 31 Dec 25&#xff01;&#xff08;八進制的…

java ffmpeg 獲取視頻時長_Java通過調用FFMPEG獲取視頻時長

FFmpeg是一套可以用來記錄、轉換數字音頻、視頻&#xff0c;并能將其轉化為流的開源計算機程序。采用LGPL或GPL許可證。它提供了錄制、轉換以及流化音視頻的完整解決方案。它包含了非常先進的音頻/視頻編解碼庫libavcodec&#xff0c;為了保證高可移植性和編解碼質量&#xff0…

盤點15個搞笑的程序員段子

1.車Delphi象吉普車&#xff0c;什么路上都能開&#xff0c;卻在啥路上也開不好&#xff1b;PB就象卡丁車&#xff0c;只能在固定線路上開&#xff0c;到室外就有些不穩&#xff1b;VC象跑車&#xff0c;你開得起卻買不 起&#xff0c;而且一旦發生故障&#xff0c;想修都找不到…

判斷listview是上滑還是下滑的方法

方法一&#xff1a; 用setOnScrollListener(new AbsListView.OnScrollListener()&#xff09;來實現&#xff0c;判斷滑動后顯示的第一個條目 &#xff0c;與滑動前的第一個條目的大小來判斷&#xff0c; 這種方法邏輯簡單&#xff0c;但是必須要滑動到當前第一條目隱藏后才能起…

如何保證消息不被重復消費~~~~~(如何保證消息隊列的冪等性)

分析&#xff1a;這個問題其實換一種問法就是&#xff0c;如何保證消息隊列的冪等性&#xff1f;這個問題可以認為是消息隊列領域的基本問題。換句話來說&#xff0c;是在考察你的設計能力&#xff0c;這個問題的回答可以根據具體的業務場景來答&#xff0c;沒有固定的答案。 回…