們每次發信都要先進入郵箱,然後才能寫信.突然一天我的郵箱密碼丟了,我進不了郵件了,那可不可以不進郵箱就能給朋友發信呢?現在我告訴你:這是可以的!
此程序的功能就在此,你可以把它用在論壇上,打開這個程序窗口發送郵件,你也可以把它放在你的桌面上,隨心所欲地發送郵件.當然作為一個程序員,你還可以把它拿過來分析一下,看有沒有可學知識.
由於發送HTML類型郵件的設計思想和此類似,不在一一列出.程序源碼則分別列出.
一.流程思路:
二.程序源碼:
(1) 發送文本類型信件.這種是接收者收到后打開信箱后直接顯示在郵件正文的.它主要有兩個程序: mailform.html and sendmail.jsp,另外三個程序為提交成功和不成功及發生內部錯誤的處理程序.
mailform.html用來輸入用戶信息,然後提交表單給sendmail.jsp
sendmail.jsp 用來處理接收信息並處理信息,發送郵件.
<%--mailform.html 的源代碼--%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>mailform.html</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<form name="form1" method="post" action="sendmail.jsp">
<p align="center">填寫郵件內容</p>
<div align="center">
<table width="75%" border="1">
<tr>
<td><div align="center">收件人</div></td>
<td><div align="center">
<input name="to" type="text" id="to" size="30" maxlength="30">
</div></td>
</tr>
<tr>
<td><div align="center">發件人</div></td>
<td><div align="center">
<input name="from" type="text" id="from" size="30" maxlength="30">
</div></td>
</tr>
<tr>
<td><div align="center">抄送</div></td>
<td><div align="center">
<input name="cc" type="text" id="cc" size="30" maxlength="100">
</div></td>
</tr>
<tr>
<td><div align="center">暗送</div></td>
<td><div align="center">
<input name="bcc" type="text" id="bcc" size="30" maxlength="100">
<%--sendmail.jsp 的源代碼--%>
<%@page contentType="text/html;charset=gb2312"%>
<%@page errorPage="errpage.jsp"%>
<%@page import="java.util.*"%>
<%@page import="javax.mail.*"%>
<%@page import="javax.mail.internet.*"%>
<%@page import="javax.activation.*"%>
<html>
<head>
<title>sendmail.jsp</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<%
//郵件伺服器的IP地址,注意此時使用的是SMTP 郵件伺服器
//String host="202.102.240.76";
//獲取用戶信息
String to=request.getParameter("to");
String from=request.getParameter("from");
String cc=request.getParameter("cc");
String bcc=request.getParameter("bcc");
//結合本程序的第一句,共同起顯示漢字體的功能
String subject=request.getParameter("subject");
subject = new java.lang.String(subject.getBytes("iso-8859-1"));
//以上方法等同於以下兩句,原理相同
//byte[] subjectTemp=request.getParameter("subject").getBytes("ISO8859_1");
//String subject=new String(subjectTemp);
byte[] messageTextTemp=request.getParameter("body").getBytes("ISO8859_1");
String messageText= new String(messageTextTemp);
boolean sessionDebug = false;
//驗證所填寫的郵件是否正確
if((to.trim().indexOf("@")==-1)||(to.trim().length()<5)){
%>
<jsp:forward page="err.jsp"/>
<%
}
if((from.trim().indexOf("@")==-1)||(from.trim().length()<5)){
<%-- sendok.jsp發送成功的頁面--%>
<%@ page contentType="text/html;charset=gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>sendok.jsp</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<center>
<h4>發送成功! </h4>
<table cellspacing="2" cellpadding="2" border="1">
<tr>
<td> 收件人</td><td><%=request.getParameter("to")%></td>
</tr>
<tr>
<td>主題:</td><td><%byte[]
subjectTemp=request.getParameter("subject").getBytes("ISO8859_1");
String subject =new String(subjectTemp);
out.println(subject);
%>
</tr>
<tr>
<td colspan = "2" align=center><a href ="mailform.html" style="color:rgb(ff,0,0)">
<%- errpage.jsp發生內部錯誤的程序---%>
<html>
<head>
<title>errpage.jsp</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
出現內部錯誤
</body>
</html>
<%-- err.jsp 輸入有誤時的錯誤提示----%>
<html>
<head>
<title>err.jsp</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
輸入非法
</body>
</html>
(2)HTML類型信件.這種郵件是作為附件接收,收到后把附件打開時是HTML文件.你寫入的信件正文在附件的HTML文件里.這個程序主要有兩個文件form.html and send.jsp .form.html 用來輸入信息表單,send.jsp用作接收信息並處理信息和發送郵件.但這個程序要用到java程序來處理髮送.HTML.java 用作發送郵件時調用的,StringDataSource.Java用作漢字顯示處理時調用的,注意使用這兩個文件時要放在對應的WEB-INF/classes 文件夾下.
<!--form.html-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>mailform.html</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<form name="form1" method="post" action="send.jsp">
<p align="center">填寫郵件內容</p>
<div align="center">
<table width="75%" border="1">
<tr>
<td><div align="center">SMTP主機:</div></td>
<td><div align="center">
<input tabindex="text" name="smtp" size="30">
</div></td>
</tr>
<tr>
<td><div align="center">收件人</div></td>
<td><div align="center">
<input name="to" type="text" id="to" size="30" maxlength="30">
</div></td>
</tr>
<tr>
<td><div align="center">發件人</div></td>
<td><div align="center">
<input name="from" type="text" id="from" size="30" maxlength="30">
</div></td>
</tr>
<tr>
<td><div align="center">抄送</div></td>
<!—send.jsp-->
<%@page errorPage="errpage.jsp"%>
<%
//變數聲明
java.lang.String smtp,from,to,cc,bcc,subject,body;
//獲得用戶輸入數據
smtp = request.getParameter("smtp");
from = request.getParameter("from");
to = request.getParameter("to");
cc = request.getParameter("cc");
bcc = request.getParameter("bcc");
subject = request.getParameter("subject");
if(subject!=null){
subject = new java.lang.String(subject.getBytes("iso-8859-1"));
}
body = request.getParameter("body");
//發送留言
mymail.mail.HTML.send(smtp,from,to,cc,bcc,subject,body);
%>
<jsp:forward page="sendok.jsp"/>
/*HTML.java*/
/*
* 功能:用作調用send() 方法來發送郵件
*
* mymail.mail.HTML.Java
* package mymail.mail;
*/
public final class HTML
{
public static void send(
java.lang.String smtp, /*SMTP主機地址*/
java.lang.String from, /*發信人*/
java.lang.String to, /*收信人*/
java.lang.String cc, /*抄送人*/
java.lang.String bcc, /*暗送人*/
java.lang.String subject, /*主題*/
java.lang.String body /*內容*/
[火星人 ] 如何使用JSP來發送郵件已經有877次圍觀