`
junli0411
  • 浏览: 139195 次
  • 来自: ...
社区版块
存档分类
最新评论

如何使用JSP来发送邮件

阅读更多
如何使用JSP来发送邮件


我们每次发信都要先进入邮箱,然后才能写信.突然一天我的邮箱密码丢了,我进不了邮件了,那可不可以不进邮箱就能给朋友发信呢?现在我告诉你:这是可以的!


此程序的功能就在此,你可以把它用在论坛上,打开这个程序窗口发送邮件,你也可以把它放在你的桌面上,随心所欲地发送邮件.当然作为一个程序员,你还可以把它拿过来分析一下,看有没有可学知识.

由于发送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">
      </div></td>
    </tr>
    <tr>
    <td><div align="center">主题</div></td>
    <td><div align="center">
        <input name="subject" type="text" id="subject" size="30" maxlength="30">
      </div></td>
    </tr>
    <tr>
    <td colspan="2"><div align="center">
        <textarea name="body" cols="40" rows="10" id="body"></textarea>
      </div></td>
    </tr>
    <tr>
    <td colspan="2"><div align="center">
        <input type="submit" name="Submit" value="发送">
         
        <input name="Reset" type="submit" id="Reset" value="清空">
      </div></td>
    </tr>
  </table>
</div>
<p align="center"> </p>
</form>
<p align="center"> </p>
</body>
</html>


<%--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)){
%>
<jsp:forward page="err.jsp"/>
<%
}
//获得系统属性对象,用下两句的任一句均可
//Properties props = System.getProperties();
Properties props=new Properties();
//设置SMTP主机
//以下一句是对任意的SMTP 邮件服务器均可,并且有了这一句,将不用设置传输协议了
props.put("mail.smtp.host", "smtp.jspinsider.com");
//这样将确定接收方的邮件服务器主机,
//props.put("mail.host",host);  
//设置邮件传输协议方式
//props.put("mail.transport.protocol","smtp");
//获取邮件会话对象
Session mailSession = Session.getDefaultInstance(props,null);
mailSession.setDebug(sessionDebug);
try{
//创建MIME邮件对象
    Message msg = new MimeMessage(mailSession);
    //设置发信人
      msg.setFrom(new InternetAddress(from));
      //设置收信人
      InternetAddress[] addressTo = {new InternetAddress(to)};
      msg.setRecipients(Message.RecipientType.TO,addressTo);
      //设置抄送人
      if(cc.trim().length()!=0){
      InternetAddress[] addressCc = {new InternetAddress(cc)};
      msg.setRecipients(Message.RecipientType.CC,addressCc);
        }  
      //设置暗送人
      if(bcc.trim().length()!=0){
      InternetAddress[] addressBcc = {new InternetAddress(bcc)};
      msg.setRecipients(Message.RecipientType.BCC,addressBcc);
        }
        msg.setSubject(subject);
        msg.setSentDate(new Date());
        msg.setText(messageText);

      //发送邮件
      Transport.send(msg);
      }
      catch(Exception ex){
      out.println("sending failed!");
}
%>
<jsp:forward page="sendok.jsp"/>
</body>
</html>


<%-- 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)">
继续发送</a>
</td>
</tr>
</table>
</center>
</body>
</html>



<%- 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>
    <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">
  </div></td>
  </tr>
  <tr>
  <td><div align="center">主题</div></td>
  <td><div align="center">
  <input name="subject" type="text" id="subject" size="30" maxlength="30">
  </div></td>
  </tr>
  <tr>
  <td colspan="2"><div align="center">
  <textarea name="body" cols="40" rows="10" id="body"></textarea>
  </div></td>
  </tr>
  <tr>
  <td colspan="2"><div align="center">
  <input type="submit" name="Submit" value="发送">
   
<input name="Reset" type="submit" id="Reset" value="清空">
  </div></td>
  </tr>
</table>
</div>
<p align="center"> </p>
</form>
<p align="center"> </p>
</body>
</html>


<!—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   /*内容*/
          ) throws java.lang.Exception{

//变量声明
java.util.Properties props;         //系统属性
javax.mail.Session mailSession;   //邮件会话对象
javax.mail.internet.MimeMessage mimeMsg; //MIME邮件对象
//设置系统属性
props = java.lang.System.getProperties(); //获得系统属性对象
props.put("mail.smtp.host",smtp); //设置SMTP主机
//获得邮件会话对象
mailSession = javax.mail.Session.getDefaultInstance(props,null);
//创建MIME邮件对象
mimeMsg = new javax.mail.internet.MimeMessage(mailSession);
//设置发信人
mimeMsg.setFrom(new javax.mail.internet.InternetAddress(from));
//设置收信人
if(to!=null)
{
mimeMsg.setRecipients(javax.mail.Message.RecipientType.TO,javax.mail.
internet.InternetAddress.parse(to));
}
//设置抄送人
if(cc!=null)
{
mimeMsg.setRecipients(javax.mail.Message.RecipientType.CC,javax.mail.
internet.InternetAddress.parse(cc));
}
//设置暗送人
if(bcc!=null)
{
  mimeMsg.setRecipients
(javax.mail.Message.RecipientType.BCC,javax.mail.internet.InternetAddress.parse(bcc));
}
//设置邮件主题
//mimeMsg.setSubject(subject);
mimeMsg.setSubject(subject,"gb2312");
//设置邮件内容,将邮件body部分转化为HTML格式
mimeMsg.setDataHandler
(new javax.activation.DataHandler(new mymail.jaf.StringDataSource (body,"text/html")));
//发送邮件
javax.mail.Transport.send(mimeMsg);
}
}
/* StringDataSource.Java */
/*
* 功能:将文本型转化为HTML 格式
* 注意引入的 jaf包
*
*/
package mymail.jaf;
//mymail.jaf.StringDataSource.Java
//import javax.activation.*;
public class StringDataSource implements javax.activation.DataSource{
private java.lang.String data;
private java.lang.String type;
public StringDataSource(java.lang.String data,java.lang.String type)
{
  this.data = data;
  this.type = type;
}
public java.io.InputStream getInputStream() throws java.io.IOException
{
return new java.io.StringBufferInputStream(data);
}
public java.io.OutputStream getOutputStream() throws java.io.IOException
{
throw new java.io.IOException("it does not support this method now!");
}
public java.lang.String getContentType(){
    return type;
}
public java.lang.String getName(){
  return " mymail ";
}
}



三.说明:

1.用此程序前要在编译环境的lib 下有javax.mail包和javax.activation 包.并且设置CLASSPATH.

2.做第一个程序时直接把五个程序放入jsp 根目录下即可.

3.做第二个程序时须在根目录下新建一个名为mymail的文件夹,否则使用到的两个java 文件不要打包. 

分享到:
评论

相关推荐

    关于jsp发送邮件关于jsp发送邮件

    关于jsp发送邮件关于jsp发送邮件关于jsp发送邮件关于jsp发送邮件关于jsp发送邮件关于jsp发送邮件关于jsp发送邮件

    jsp源码+邮件发送

    在JSP中,可以使用JavaMail API来创建和发送HTML邮件。首先,你需要配置JavaMail的相关属性,如SMTP服务器地址、端口、用户名和密码。然后,创建一个MimeMessage对象,并设置其内容为HTML格式。最后,通过Transport...

    JSP+Servlet实现发送邮件

    总的来说,JSP+Servlet实现发送邮件是一个典型的Web开发任务,它涵盖了客户端与服务器的交互、邮件服务的实现以及用户验证机制的设计。这个过程不仅锻炼了开发者对Java Web技术的理解,还要求他们具备良好的安全性...

    JSP发送邮件功能

    总的来说,JSP发送邮件的功能依赖于JavaMail API,需要设置SMTP服务器的相关参数,并通过`MimeMessage`和`Transport`类进行实际的邮件发送操作。理解并熟练运用这一技术,可以极大地提升Web应用的交互性和用户体验。

    jsp实现的Email邮件发送

    发送邮件时,JSP页面会通过SMTP服务器来完成这一任务。 1. **JavaMail API**:这是Java平台上的一个关键库,用于处理邮件的发送和接收。它提供了 javax.mail 和 javax.mail.internet 包,包含了许多类和接口,如 ...

    JSP发送邮件实例

    在本文中,我们将深入探讨如何使用Java的JSP(JavaServer Pages)技术来发送电子邮件。JSP是一种基于Java的服务器端脚本语言,用于创建动态Web内容。在JSP中发送邮件通常涉及到JavaMail API,这是一个强大的库,允许...

    jsp实现的邮件发送

    总结来说,JSP实现邮件发送功能主要涉及JavaMail API的使用,包括配置SMTP服务器参数、创建Session、构建邮件消息以及发送邮件。这个过程需要对SMTP协议和JavaMail API有深入的理解,通过合理的编程实践,我们可以为...

    jsp中发送邮件的两个jar包

    在Java编程语言中,使用JSP(JavaServer Pages)发送电子邮件是一项常见的任务,尤其是在构建Web应用...总的来说,mail.jar和activation.jar是JSP发送邮件的核心依赖,它们提供了构建和发送电子邮件所需的所有工具。

    jsp 发送邮件

    总结来说,JSP发送邮件主要涉及JavaMail API的使用,包括配置SMTP服务器、创建邮件会话、构建邮件内容以及发送邮件。提供的代码示例和jar文件为开发者提供了一个直接运行的环境,方便测试和学习。通过理解这些核心...

    jsp发送邮件需要的包

    以下是一个简单的使用JSP发送邮件的示例代码片段: ```jsp *,javax.mail.*,javax.mail.internet.*,javax.activation.*" %&gt; String to = request.getParameter("to"); String subject = request.getParameter(...

    JSP自动收发邮件

    2. **创建邮件会话**:使用Properties对象来存储邮件服务器的信息,并通过这些信息创建Session对象。 3. **构建邮件内容**:创建MimeMessage对象,并设置邮件的基本属性(如发件人、收件人、邮件主题等)。 4. **...

    带附件的发送邮件JSP程序

    "JSP"指的是使用的技术栈,"发送邮件"是指其主要任务,而"带附件"强调了邮件可以包含额外的文件,增加了程序的实用性。 总结来说,这个“带附件的发送邮件JSP程序”是一个综合性的应用,它整合了JSP、SMTP、...

    JsP中邮件发送代码

    在提供的压缩包文件中,可能包含了示例代码,你可以通过查看和运行这些代码来更好地理解和学习JSP发送邮件的功能。在学习过程中,确保理解每个步骤的作用,并尝试根据自己的需求进行修改和扩展,以掌握更高级的邮件...

    用jsp实现邮件群发

    本文将详述如何使用Java Server Pages(JSP)技术来实现邮件群发,并结合SQL Server 2000数据库来存储和管理邮件列表。 首先,我们需要理解JSP的基本原理。JSP是Java平台上的一个服务器端脚本语言,用于生成动态...

    电子邮件模块 jsp

    使用JavaMail API,开发者可以创建SMTP(简单邮件传输协议)连接,设置发件人、收件人、主题和正文等邮件属性,并发送邮件。 3. MIME(多用途互联网邮件扩展):MIME是一种标准,用于定义非ASCII字符和非文本附件...

    jsp实现邮件的发送

    在IT行业中,`jsp实现邮件的发送`是一个常见的任务,主要涉及到Java服务器页面(JSP)技术、JavaMail API以及网络通信。以下是基于这个主题的详细知识点解释: 1. **JSP(JavaServer Pages)**: JSP是Java平台上...

    jsp写的收发邮件,使用javamail写的

    JavaMail 是一个开源库,广泛用于在Java...总结来说,这个项目展示了如何在JSP中使用JavaMail API与邮件服务器交互,实现邮件的收发功能。理解JavaMail的工作原理,掌握配置和使用方法,是Java开发者必备的技能之一。

    jsp-email.rar_email send java jsp_jsp email_jsp 邮件_邮件 jsp_邮件 附件

    这个名为"jsp-email.rar_email send java jsp_jsp email_jsp 邮件_邮件 jsp_邮件 附件"的压缩包包含了一个简单的示例,通过Servlet辅助JSP来完成邮件发送任务。 1. **邮件发送基础** 在Java中,我们通常使用...

    aaa.rar_JSP邮件系统_java jsp 邮件_java邮件系统_jsp邮件_邮件 jsp

    用户可能能够通过这个系统来发送、接收、管理邮件,可能还支持其他常见邮件功能,如草稿箱、收件箱、发件箱和垃圾邮件过滤等。 【标签】"jsp邮件系统"、"java_jsp_邮件"、"java邮件系统"、"jsp邮件"和"邮件_jsp...

Global site tag (gtag.js) - Google Analytics