JSP与JavaMail(6)---编写灵活的邮件发送程序

原创 2003年09月23日 23:41:00
七.编写灵活的发送程序

本小节没加什么新鲜的东西,但是综合了以前的所有内容,可以让你灵活地发送你想要发的邮件.看了本小节之后对你会感觉到非常有用.

更改后的撰写界面程序如下:
-------------------------------------------------------------------------------------------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>撰写邮件</title>
</head>
<body>
<form action="testall.jsp" method="post" name="form1">
<table width="75" border="0" align="center" cellspacing="1" bgcolor="#006600" class="black">
<tr bgcolor="#FFFFFF">
<td width="24%">收信人地址:</td>
<td width="76%"> <input name="to" type="text" id="to"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td>主题:</td>
<td> <input name="title" type="text" id="title"></td>
</tr>
<tr>
<td height="18" colspan="2" bgcolor="#FFFFFF">信件类型
<select name="emailtype" id="emailtype">
<option value="text/plain" selected>Text</option>
<option value="text/html">Html</option>
</select></td>
</tr>
<tr>
<td height="53" colspan="2" bgcolor="#FFFFFF"><textarea name="content" cols="50" rows="5" id="content"></textarea></td>
</tr>
<tr align="center">
<td colspan="2" bgcolor="#FFFFFF">附件1(自定义):
<input name="fj1" type="text" id="fj1">
(输入文本信息) </td>
</tr>
<tr align="center" valign="bottom">
<td colspan="2" bgcolor="#FFFFFF">附件2(本地):
<input name="fj2" type="file" id="fj2" size="10"></td>
</tr>
<tr align="center">
<td colspan="2" bgcolor="#FFFFFF">附件3(远程):
<input name="fj3" type="text" id="fj3" value="http://">
(输入URL)</td>
</tr>
<tr align="center">
<td colspan="2" bgcolor="#FFFFFF"> <input type="submit" name="Submit" value="发送">
<input type="reset" name="Submit2" value="重置"></td>
</tr>
</table>
</form>
</body>
</html>


处理邮件的JSP程序如下:
----------------------------------------------------------------------------------------
<%@ page contentType="text/html;charset=GB2312" %>
<%request.setCharacterEncoding("gb2312");%>
<%@ page import="java.util.*,javax.mail.*"%>
<%@ page import="javax.mail.internet.*"%>
<%@ page import="javax.activation.*"%><!--要发送附件必须引入该库-->
<%@ page import="java.net.*"%><!--要用到URL类-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>发送成功</title>
</head>
<body>
<%
try{
String tto=request.getParameter("to");
String ttitle=request.getParameter("title");
String emailtype=request.getParameter("emailtype");//获取email类型
String tcontent=request.getParameter("content");
String tfj1=request.getParameter("fj1");
String tfj2=request.getParameter("fj2");
String tfj3=request.getParameter("fj3");

Properties props=new Properties();
props.put("mail.smtp.host","127.0.0.1");
props.put("mail.smtp.auth","true");
Session s=Session.getInstance(props);
s.setDebug(true);

MimeMessage message=new MimeMessage(s);

//给消息对象设置发件人/收件人/主题/发信时间
InternetAddress from=new InternetAddress("xxf@cafe.com");
message.setFrom(from);
InternetAddress to=new InternetAddress(tto);
message.setRecipient(Message.RecipientType.TO,to);
message.setSubject(ttitle);
message.setSentDate(new Date());

Multipart mm=new MimeMultipart();//新建一个MimeMultipart对象用来存放多个BodyPart对象

//设置信件文本内容
BodyPart mdp=new MimeBodyPart();//新建一个存放信件内容的BodyPart对象
mdp.setContent(tcontent,emailtype+";charset=gb2312");//给BodyPart对象设置内容和格式/编码方式
mm.addBodyPart(mdp);//将含有信件内容的BodyPart加入到MimeMultipart对象中

//设置信件的附件1(自定义附件:直接将所设文本内容加到自定义文件中作为附件发送)
mdp=new MimeBodyPart();//新建一个存放附件的BodyPart
DataHandler dh=new DataHandler(tfj1,"text/plain;charset=gb2312");
//新建一个DataHandler对象,并设置其内容和格式/编码方式
mdp.setFileName("text.txt");//加上这句将作为附件发送,否则将作为信件的文本内容
mdp.setDataHandler(dh);//给BodyPart对象设置内容为dh
mm.addBodyPart(mdp);//将含有附件的BodyPart加入到MimeMultipart对象中

//设置信件的附件2(用本地上的文件作为附件)
mdp=new MimeBodyPart();
FileDataSource fds=new FileDataSource(tfj2);
dh=new DataHandler(fds);
int ddd=tfj2.lastIndexOf("//");
String fname=tfj2.substring(ddd);//提取文件名
String ffname=new String(fname.getBytes("gb2312"),"ISO8859-1");//处理文件名是中文的情况
mdp.setFileName(ffname);//可以和原文件名不一致,但最好一样
mdp.setDataHandler(dh);
mm.addBodyPart(mdp);

//设置信件的附件3(用远程文件作为附件)
mdp=new MimeBodyPart();


URL urlfj=new URL(tfj3);
URLDataSource ur=new URLDataSource(urlfj);
//注:这里用的参数只能为URL对象,不能为URL字串,在前面类介绍时有误(请谅解),这里纠正一下.
dh=new DataHandler(ur);
int ttt=tfj3.lastIndexOf("/");
String urlname=tfj3.substring(ttt);
//String urlfname=new String(urlname.getBytes("gb2312"),"ISO8859-1");//不知怎么回事,这里不能处理中文问题
mdp.setFileName(urlname);
mdp.setDataHandler(dh);
mm.addBodyPart(mdp);

message.setContent(mm);//把mm作为消息对象的内容

message.saveChanges();
Transport transport=s.getTransport("smtp");
transport.connect("127.0.0.1","xxf","coffee");
transport.sendMessage(message,message.getAllRecipients());
transport.close();
%>
<div align="center">
<p><font color="#FF6600">发送成功!</font></p>
<p><a href="recmail.jsp">去看看我的信箱</a><br>
<br>
<a href="index.htm">再发一封</a> </p>
</div>
<%
}catch(MessagingException e){
out.println(e.toString());
}
%>
</body>
</html>

到目前为止,我们基本上已学会了发各种类型的邮件了.但是,我们怎样去收自己的邮件呢,下一次再说吧:)!

(待续)

基于JavaMail的Java邮件发送:复杂邮件发送

基于 JavaMail 的 Java 邮件发送实现详解教程:复杂邮件发送。 通过 java 代码实现包括文本、图片、附件的复制邮件发送的详细实现过程。...
  • xietansheng
  • xietansheng
  • 2016年06月20日 23:11
  • 12642

JSP/JavaMail实例:邮件发送

下载 activation.jar 和 mail.jar 配置CLASSPATH,将上面两个jar包加入到CLASSPATH中。 JavaBean : "SendEmail.java" ...
  • tracker_w
  • tracker_w
  • 2013年09月28日 16:47
  • 2980

java mail 发送邮件,并判断是否发送成功

javamail 发邮件原理及步骤(仅是个人理解): 1.设置连接的服务器 2.验证账号密码是否正确,正确的话则获得权限 3.设置发送的内容 其实javamial只是给我们提供了链接到设置的某个邮箱的...
  • VSILENCE
  • VSILENCE
  • 2016年03月15日 23:48
  • 4889

JavaMail深入体验开发二: JavaMail的体系结构及发送复杂邮件

一 . 电子邮件传输的全过程:   二 . JavaMail 的体系结构与API分类 JavaMail API按其功能划分通常可分为如下三大类: 创建和解析邮件内容的API :Messa...
  • t12x3456
  • t12x3456
  • 2012年06月06日 09:14
  • 4678

Java 多线程 BlockingQueue 实现 高并发邮件 代码 MailBean

/**  *   */ package com.pingan.emall.biz.util; import java.io.Serializable; import java...
  • lisu_suby
  • lisu_suby
  • 2014年10月27日 16:04
  • 754

Java Mail 发送邮件之——简单实现

Java Mail发送邮件简单示例,包括准备条件和核心代码,尽可能简单的描述清除。...
  • chenghuaying
  • chenghuaying
  • 2016年07月09日 23:10
  • 1400

javaMail邮件发送功能(多收件人,多抄送人,多密送人,多附件)

先看源码,再来理解,可以直接使用! JavaMailWithAttachment.java: private MimeMessage message; private Session...
  • qq741437836
  • qq741437836
  • 2016年08月10日 17:24
  • 5792

JavaMail发送邮件(韩顺平)

主程序:package Model;public class SendMailToSomeone { public static void main(String []args){ SendMa...
  • lishirong
  • lishirong
  • 2014年12月02日 09:47
  • 2296

基于JavaMail的邮件发送程序!

跟前两天基于SMTP协议的效果一样的,不过采用JavaMail确实方便多了,也简单多了。 运行此程序还需两个Java包:mail.jar和activation.jar,这两个包很容易下到的,在此就不...
  • familyGo
  • familyGo
  • 2012年05月03日 14:44
  • 258

用Javamail编写邮件发送代码

        用java编写邮件发送模块,有很多实现方法,最基本的就是用socket,j实现的原理比较简单,首先建立和邮件服务器的Socket连接,然后与服务器进行Handshake,接着发送smt...
  • AmethystFX
  • AmethystFX
  • 2007年05月05日 23:39
  • 850
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JSP与JavaMail(6)---编写灵活的邮件发送程序
举报原因:
原因补充:

(最多只允许输入30个字)