web開發 開發一個能傳送郵件的應用
開發一個能傳送郵件的應用,前人種的樹,借鑑 參考大牛的程式碼,做的小應用。
大概是這樣的:
其中SMTP密碼,並非使用者名稱所對應的登入密碼,而是在開啟
163信箱這個服務時,自己設定的授權碼,按步驟即可輕鬆開啟這個服務,並獲得授權碼,其中,本次實驗的主要是163信箱,host地址也是163信箱,剛開始一直設定的smtp.qq.com,但是一直報錯,又有流傳說qq郵箱的話問題比較大一點,所以用的網易163郵箱。
試驗了一下,發現能用,併成功的傳送了郵件。
好的,開始進入正題:
首先是準備階段,需要備好4個jar包,activation,log4j-1.2.15,commons-email-1.3,還有一個mail包,如果你找不到資源,請訪問
如果想建立的不是web專案,而是java專案,則只需右鍵建立的java專案名,新建一個叫lib的資料夾,並把jar包拷貝進去即可。
先寫一個meil類:
什麼?你說我mail拼成了meil...package cim.it.object; import java.io.Serializable; //host name sender receiver username password subject message public class Meil implements Serializable { public static final String ENCODEING="UTF-8";//編碼方式 private String host;//埠 private String name;//使用者名稱 private String sender;//傳送者 private String receiver;//接受者 private String username;//賬號名 private String password;//密碼 private String subject;//表題 private String message;//內容 public String getHost() { return host; } public void setHost(String host) { this.host = host; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSender() { return sender; } public void setSender(String sender) { this.sender = sender; } public String getReceiver() { return receiver; } public void setReceiver(String receiver) { this.receiver = receiver; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }
然後寫一個MeilUtil類,這個類比較重要,裡邊是如何傳送的郵件:
package cim.it.object; import javax.enterprise.inject.spi.Bean; import org.apache.*; import org.apache.commons.mail.HtmlEmail; import org.apache.log4j.Logger; @SuppressWarnings("unused") public class MeilUtil { protected final Logger logger=Logger.getLogger(getClass()); public boolean send(Meil meil) { HtmlEmail email= new HtmlEmail(); try { email.setHostName(meil.getHost()); email.setCharset(meil.ENCODEING); email.addTo(meil.getReceiver()); email.setFrom(meil.getSender(), meil.getName()); email.setAuthentication(meil.getUsername(), meil.getPassword()); email.setSubject(meil.getSubject()); email.setMsg(meil.getMessage()); email.send();//傳送郵件 if(logger.isDebugEnabled()) { logger.debug(meil.getSender()+"傳送郵件到"+meil.getReceiver()); } return true; } catch(Exception e) { e.printStackTrace();logger.info(meil.getSender()+"傳送郵件到"+meil.getReceiver()+"失敗"); return false; } } }
如果,建立的 是java專案,只需要寫一個main方法跑一下就行了:
package cim.it.object;
import java.util.Scanner;
public class send {
public static void main(String args[])
{
Scanner cin=new Scanner(System.in);
Meil mail=new Meil();//實體化meil類
mail.setHost("smtp.163.com");//網易163信箱的埠,別的郵箱不是這個
mail.setSender("[email protected]");//傳送者郵箱
mail.setReceiver("[email protected]");//接受者郵箱
mail.setUsername("[email protected]");//使用者名稱
mail.setPassword("*************");//填自己的操作碼
mail.setSubject("2016-8-2 10:21:06");
String message=cin.next();
System.out.println(message);//自行輸入郵件內容
//mail.setMessage("hehehe");
mail.setMessage(message);
//for(int i=0;i<1;i++)//不要壞壞的打這個for迴圈的主意
//{
new MeilUtil().send(mail);//傳送
System.out.println("sueecess!");
//}
}
}
如果中間遇到了這個問題,如圖:
要麼是pop3,SMTP服務沒有開,要麼就是傳送者郵箱填的不是163信箱。
如果傳送成功後依然會有兩行警告:
需要在src中建立一個檔案(不是資料夾)檔名為 log4j.properties ,內容為:
# Configure logging for testing: optionally with log file
log4j.rootLogger=WARN, stdout
# log4j.rootLogger=WARN, stdout, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
如果建立的是web專案,則需要寫一個servlet:
package cim.it.object;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class sendmessage extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try
{
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
Meil mail=new Meil();
mail.setHost("smtp.163.com");
String sender=request.getParameter("address");
String receiver=request.getParameter("receiver");
String username=request.getParameter("username");
String password=request.getParameter("password");
String subject=request.getParameter("subject");
String message =request.getParameter("message");
String num=request.getParameter("number");
int Num=Integer.valueOf(num);
mail.setSender(sender);//傳送者的郵箱
mail.setReceiver(receiver);//接受物件
mail.setUsername(username);//使用者名稱
mail.setPassword(password);//不是信箱密碼,為設定POP3/SMTP/IMAP時,設定的 密碼
mail.setSubject(subject);//郵件主題
mail.setMessage(message);//郵件內容
mail.setHost("smtp.163.com");//設定郵箱埠
//MeilUtil meil=;
for(int i=0;i<Num;i++)//傳送次數
{
new MeilUtil().send(mail);//傳送郵件
}
request.setAttribute("msg", "郵件傳送成功");
request.getRequestDispatcher("/success.jsp").forward(request, response);//頁面跳轉
}
catch (Exception e)
{
}
// request.setCharacterEncoding("utf-8");
// response.setContentType("text/html;charset=utf-8");
// Meil mail=new Meil();
// mail.setHost("smtp.163.com");
// String sender=request.getParameter("address");
// String receiver=request.getParameter("receiver");
// String username=request.getParameter("username");
// String password=request.getParameter("password");
// String subject=request.getParameter("subject");
// String message =request.getParameter("message");
// String num=request.getParameter("number");
// int Num=Integer.valueOf(num);
// mail.setSender(sender);//傳送者的郵箱
// mail.setReceiver(receiver);//接受物件
// mail.setUsername(username);//使用者名稱
// mail.setPassword(password);//不是信箱密碼,為設定POP3/SMTP/IMAP時,設定的 密碼
// mail.setSubject(subject);//郵件主題
// mail.setMessage(message);//郵件內容
// mail.setHost("smtp.163.com");//設定郵箱埠
// //MeilUtil meil=;
// for(int i=0;i<Num;i++)//傳送次數
// {
// new MeilUtil().send(mail);//傳送郵件
// }
//
// request.setAttribute("msg", "郵件傳送成功");
// request.getRequestDispatcher("/success.jsp").forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
然後寫一個幾秒後跳轉的success.jsp
:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>傳送成功</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<!-- url後面的為目標地址-->
<meta http-equiv="Refresh" content="5;url=use.jsp">
<center>
<table>
<tr>
<td width="181" height="30" class="FontBlack"> 該頁面</td>
<td width="22" align="center" class="FontBlack"><div id="time">5</div></td>
<td width="194" align="left" class="FontBlack">秒後自動跳轉</td>
</tr>
</table>
</center>
</body>
<script language="JavaScript">
var times=6;
clock();
function clock()
{
window.setTimeout('clock()',1000);
times=times-1;
time.innerHTML =times;
}
</script>
</html>
其中跳轉到,也就是最開始的頁面,呼叫servlet那個頁面,use.jsp
:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'use.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<center>
<div>
<h1>歡迎使用</h1>
<form action="servlet/sendmessage" method="post">
<table>
<tr>
<td width="88" align="right"><font size="1">傳送者郵箱:</font></td><td colspan="2"><input type="text" name="address" value="${address }" style="width:200;height:25;"/></td>
</tr>
<tr>
<td width="88" align="right"><font size="1">接受者郵箱:</font></td><td colspan="2"><input type="text" name="receiver" value="${receiver }" style="width:200;height:25;"/></td>
</tr>
<tr>
<td width="88" align="right"><font size="1">使用者名稱:</font></td><td colspan="2"><input type="text" name="username" value="${username }" style="width:200;height:25;"/></td>
</tr>
<tr>
<td width="88" align="right"><font size="1">SMTP密碼:</font></td><td colspan="2"><input type="password" name="password" style="width:200;height:25;"/></td>
</tr>
<tr>
<td width="88" align="right"><font size="1">郵件主題:</font></td><td colspan="2"><input type="text" name="subject" value="${subject }" style="width:200;height:25;"/></td>
</tr>
<tr>
<td width="88" align="right"><font size="1">郵件內容:</font></td><td colspan="2"><input type="text" name="message" value="${message }" style="width:200;height:25;"/></td>
</tr>
<tr>
<td width="88" align="right"><font size="1">郵件數量:</font></td><td colspan="2"><input type="text" name="number" value="${number }" style="width:200;height:25;"/></td>
</tr>
<tr><td colspan="3" align="center"><input type="submit" value="傳送郵件" style="width:130;height:30;"/></td></tr>
</table>
</form>
<font color="red" size="2"> ${msg }</font>
</div>
</center>
</body>
</html>
這樣,就做成了所述應用,記得慎填郵件數量,否則會被自動轉到垃圾信箱的,上午寫好的。就在剛才qq一直提示這個:
我會告訴你這是因為早上給自己發了幾封郵件,並錯誤的填寫了郵件數量?
還有,開發這個中途會有好多異常和錯誤,百度查找了很久 ,如果在開發這個應用中遇到了難解決的異常,私信,評論均可,會熱心提供幫助。
強調一下,不要錯誤填寫使用郵件數量。
喏,錯誤使用的 後果。
相關推薦
web開發 開發一個能傳送郵件的應用
開發一個能傳送郵件的應用,前人種的樹,借鑑 參考大牛的程式碼,做的小應用。 大概是這樣的: 其中SMTP密碼,並非使用者名稱所對應的登入密碼,而是在開啟 163信箱這個服務時,自己設定的授權碼,按步驟即可輕鬆開啟這個服務,並獲得授權碼,其中,本次實驗的主要是163信箱,
【Java郵件開發】5.編寫一個JavaMail傳送郵件的程式
之前我們對JavaMail的API進行了簡單的介紹,並下載了相應的jar包。 這次,我們要著手使用JavaMail開發一個可以傳送郵件的程式。 1.建立工程 首先我們在Eclipse中新建一個名為JavaMailTest的工程: 然後我們新建一個lib資料夾,將mail
用java開發Email工具之傳送郵件
作者:馮睿 本文介紹瞭如何利用Java的網路API來實現一個電子郵件工具程式。通常Email工具都是使用SMTP(簡單郵件傳輸協議, Simple Mail Transfer Protocol)來傳送郵件,使用POP3協議來接受電子郵件。在本文中只對這兩個協議作簡單介紹。
記錄一次不能傳送郵件故障處理
伺服器使用的是萬網的vps,郵件伺服器是阿里雲郵箱。今天發現不能傳送郵件。 1:編寫測試程式碼,傳送過程中,發現出現服務超時。我沒有伺服器管理許可權,處理起來比較棘手。 2:經過百度搜索,發現阿里雲伺服器是禁止25埠傳送郵件的。 我們使用的是萬網vps,可能近期也封禁25 傳
linux中mail函式不能傳送郵件怎麼辦呢?
沒有安裝或啟動 sendmail 元件 1.重新安裝 sendmail 元件 我用的是 CentOS ,使用下面的命令安裝 yum install sendmail 2.使用下面的命令重啟php-fpm程序 /etc/init.d/php-fpm restart 3.檢測se
[python3.6 flask web學習]使用Flask-Mail傳送郵件
首先進入虛擬環境安裝flask-mail擴充套件模組 pip install flask-mail 傳送郵件需要配置傳送郵件的伺服器。flask-mail固定的配置變數名如下 在macos或者linux作業系統中使用export命令匯入環境變數 export MAIL_
Java Web(十三) 使用javamail進行傳送郵件,(使用QQ,163,新浪郵箱伺服器)
加油加油。 --WH 一、傳送郵件的原理 在瞭解其原理之前,先要知道兩個協議,SMTP和POP3 SMTP:Simple Mail Transfer Protocol,即簡單郵件傳輸協議,傳送郵件的協議,
sendmail命令啟動很慢的解決方法及不能傳送郵件
即一定要配置一個hostname 和 127.0.0.1 的對應對映 最近折騰VPS的在啟動sendmail遇到一個問題就是執行service sendmail start之後發現啟動很慢。 上圖基本就卡在這裡了。 sendmail的啟動原理我小菜肯定是看
一個C++ 傳送郵件的類
/*********************************************************************** *傳送郵件模組標頭檔案 *可以傳送文字和附件(支援多個附件一起傳送) **************************
使用Nginx+Lua(OpenResty)開發高性能Web應用
class fig eve red rman 這一 普通 ets 詳情 在互聯網公司,Nginx可以說是標配組件,但是主要場景還是負載均衡、反向代理、代理緩存、限流等場景;而把Nginx作為一個Web容器使用的還不是那麽廣泛。Nginx的高性能是大家公認的,而Nginx開發
用Inferno代替React開發高性能響應式WEB應用
直接 dom節點 parser 什麽是 生命周期 reac div 例子 出現 什麽是Inferno Inferno可以看做是React的另一個精簡、高性能實現。它的使用方式跟React基本相同,無論是JSX語法、組件的建立、組件的生命周期,還是與Redux或Mobx的配
iOS12系統應用開發傳送郵件
iOS12系統應用開發傳送郵件 訊息分享是應用社交化和營銷的重要途徑。除了開發者自己搭建專有的訊息分享渠道之外,還可以藉助系統自帶的各種途徑。iOS提供了3種快速分享訊息的方式,分別為傳送郵件、傳送簡訊以及資料分享等。本章將講解這三種方式。 傳送郵件 郵件是一種更為靈活的資料分享方式。它可以幫助使用者將
iOS12系統應用開發基礎教程傳送郵件
iOS12系統應用開發基礎教程傳送郵件 訊息分享是應用社交化和營銷的重要途徑。除了開發者自己搭建專有的訊息分享渠道之外,還可以藉助系統自帶的各種途徑。iOS提供了3種快速分享訊息的方式,分別為傳送郵件、傳送簡訊以及資料分享等。本章將講解這三種方式。 傳送郵件 郵件是一種更為靈活的資料分享
Spring boot 官網學習筆記 - 開發第一個Spring boot web應用程式
Creating the POM <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:
web開發——4.一個完整的web專案和子應用程式的建立以及資料模型操作的兩種方法
一、建立一個完整的web專案 1.在pycharm命令列中輸入命令: django-admin startproject myweb,即可建立一個新的web專案 新的web專案包
分享一個全開源的ASP.NET快速開發平臺,能快速開發OA CRM ERP 等系統
web 更多 ora 支持 環境 get class don 搭建 bingo炸了 2017/3/30 16:28:14 閱讀(870) 評論(0) 公司業務量比較大,接了很多項目,為了縮短開發周期老板讓我牽頭搭建了一個快速開發平臺。 我們主要的業務是做OA
打通C/4HANA和S/4HANA的一個原型開發:智能服務創新案例
信息 支付 abc 喜歡 ron 選擇 weave com 博客 今年6月SAP發布C/4HANA之後,有顧問朋友們在微信公眾號後臺留言,詢問C/4HANA如何同SAP的數字化核心S/4HANA系統結合起來,從而打通企業的前後端業務,幫助企業實現數字化轉型。 有的顧問朋友
基於Windows8與Visual Studio11開發第一個USB驅動應用程式
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
web前端開發技術之淺談對HTML5 智能表單的理解
提示 goods 表單 加載完成 空格 日期和時間 url 顯示 指向 Html5新增input的form屬性,用於指向特定form表單的id,實現input無需放在form標簽之中,即可通過表單進行提交。 <FORM id=xinzeng> … </FO
Node做後臺開發的一個簡單且實用的應用(程式碼加部署)
下面通過一個微信小程式後端的程式碼,來介紹一下Node做後臺開發的一些思路。 這段程式碼的功能是: 建立一個Http埠服務,監聽來自9000埠的訊息,微信小程式是通過9000埠給該node後臺程式傳送post請求,node後臺程式接受完資料後,然後請求圖靈機器