利用JavaMail API实现发送E-mail的功能

首先,介绍一下JavaMail,它是Sun发布用来处理E-mail的API。它可以方便地执行一些常用的邮件传输,但由于目前还没有加在标准的Java开发工具包中,故需要另外下载一下,另外还需要Sun的JavaBeans Activation Framework(JAF)。

先下载下图的两个工具


然后,将其解压缩,将Javamail1_1_3.zip解压后的mail.jar文件和jar-1_1_1.zip解压后的activation.jar文件添加到JDK 安装路径下jre\lib\ext目录中,如我的就放在了这里



Email.htm代码如下:

<HTML>
<HEAD>
<TITLE>编辑邮件</TITLE>
</HEAD>
<Script language="javascript">
    function chkForm(theForm){
    if (theForm.to.value=="") 
{
        alert("[收件人地址]不能为空");
        theForm.to.focus();
        return (false);
      }
    }
</Script>
<BODY bgcolor=#FFCCCCC>
<CENTER>
<Form name="email" action="EmailSend.jsp" method="post" 
οnsubmit="return chkForm(this)">
<Table cellspacing="2" cellpadding="2" border="1">
    <tr> 
        <td>收件人:</td>
        <td><input type="text" name="to" size="30" maxlength="30"></td>
    </tr>
      <tr> 
        <td>发件人:</td>
        <td><input type="text" name="from" size="30" maxlength="30" ></td>
    </tr>
    <tr> 
        <td>抄 送:</td>
        <td><input type="text" name="cs" size="30" maxlength="100"></td>
    </tr>
    <tr> 
      <td>主 题:</td>
        <td><input type="text" name="subject" size="30" maxlength="30"></td>
    </tr>
    <tr> 
        <td colspan="2" align=center> 
<textarea cols="40" rows="10" name="body"></textarea> 
        </td>
    </tr>
    <tr> 
        <td align=center colspan="2">
<input type="submit" name="submit" value="发送">
&nbsp&nbsp&nbsp&nbsp <input type="Reset"> 
</td>
</tr>
</Table>
</Form>
</CENTER>
</BODY>
</HTML>




EmailSend.jsp代码如下:

<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.util.*" %>
<%@ page import="javax.mail.*" %>
<%@ page import="javax.mail.internet.*" %>
<%@ page import="javax.activation.*" %>
<HTML>
<HEAD>
<TITLE>邮件发送</TITLE>
</HEAD>
<BODY bgcolor=#FFCCCCC>
<%
String host = "sdu.edu.cn";
String to = request.getParameter("to");
String from = request.getParameter("from");
String cs= request.getParameter("cs");
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="Error.jsp"/>
<%}
if ((from.trim().indexOf("@")==-1)||(from.trim().length()<5)){
%>
<jsp:forward page="Error.jsp"/>
<%}
if ((cs.trim().length()>0&&cs.trim().length()<5)||((cs.trim().length()!=0)&&
(cs.trim().indexOf("@")==-1)))
{
%>
<jsp:forward page="Error.jsp"/>
<%
}
Properties props = System.getProperties();
props.put("mail.smtp.host",host);
// 如果需要身份验证,则添加下面一行
props.put("mail.smtp.auth","true");
Session mailSession = Session.getDefaultInstance(props, null);
mailSession.setDebug(sessionDebug);
try{
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress(from));
InternetAddress[] addressTo = {new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO,addressTo);
if (cs.trim().length()!=0){
InternetAddress[] addressCc = {new InternetAddress(cs)};
msg.setRecipients(Message.RecipientType.CC,addressCc);
}
msg.setSubject(subject);
msg.setSentDate(new Date());
msg.setText(messageText);
Transport transport= mailSession.getTransport("smtp");
// 如果需要进行身份验证,则添加下面一行
transport.connect(host,"username","password");
   transport.sendMessage(msg,msg.getAllRecipients());
// 这句是必须的
transport.close();
}
catch(Exception ex){
out.println("邮件发送失败!");
}
%>
<jsp:forward page="SendOk.jsp"/>
</BODY>
</HTML>




Error.jsp代码如下:

<%@ page contentType="text/html;charset=gb2312" %>
<HTML>
<HEAD>
<TITLE>输入有错</TITLE>
</HEAD>
<BODY bgcolor=#FFCCCCC>
<CENTER>
<H4><BR>请检查收件人、发件人和抄送人邮件地址是否正确!!<H4>
<P>
<A href="Email.htm">返回</A>
</BODY>
</HTML>



SendOk.jsp代码如下:

<%@ page contentType="text/html;charset=gb2312" %>
<HTML>
<HEAD>
<TITLE>邮件发送成功</TITLE>
<HEAD>
<BODY bgcolor=#FFCCCCC>
<H4>
恭喜!邮件已成功发送</H4>
<Table cellspacing="2" cellpadding="2" border="1">
<tr>
<td>收信人:</td><td><%=request.getParameter("to")%></td>
</tr>
<tr>
<td>发信人:</td><td><%=request.getParameter("from")%></td>
</tr>
<tr>
<td>邮件主题:</td>
<td>
<%
byte[] subjectTemp= request.getParameter("subject").getBytes("ISO8859_1");
String subject=new String(subjectTemp);
  out.println(subject);
%>
</td>
</tr>
<tr>
<td colspan="2" align=right>
<a href="Email.htm" style="color: rgb(ff,0,0)">返回</a>
</td>
</tr>
</Table>
</BODY>
</HTML>

显示结果如下:








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值