mail.java--学习笔记

来源:互联网 发布:git服务器搭建 ubuntu 编辑:程序博客网 时间:2024/04/28 20:36

系统存在这样一个缺陷,需要去完善它,:1用事务控制事件,2用mail平台来通知客户,3并根据mail发送是否成功来持久化数据,

4还要做到定时刷新数据。

 

哦 第一次听到这个感觉好难,不知道该从哪里去下手,spring框架是从没有接触过的,就从ta入手

先学习了spring定时器Quartz,解决了定时刷新数据的问题---happy!!!

然后简单的使用事务处理机制,做了几个小例子

今天终于把mail功能实现了 ,当接到自己给自己发送的第一个邮件的时候 哈哈 好开心哇!

 

具体实现如下:

1:建立index.html

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>填写邮件信息</title>
<LINK REL="stylesheet" HREF="E:/tomcat 4.1.12/webapps/qds/css.css" TYPE="text/css">
</head>

<body bgcolor="#FFFFCC">
<form name="form1" method="post" action="sendMail.jsp">
<table width="75" border="0" align="center" cellspacing="1" bgcolor="#006600" height="258">

<div align="center">

<font size="5" color="blue">填写邮件信息</font>
<tr bgcolor="#FFFFFF">
<td width="30%" height="34">发件人地址:</td>
<td width="70%" height="34">
<input name="from" type="text" id="from" CLASS="kuang-bg"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="30%" height="34">收信人地址:</td>
<td width="70%" height="34">
<input name="to" type="text" id="to" CLASS="kuang-bg"></td>
</tr>

<tr bgcolor="#FFFFFF">
<td width="30%" height="25">主题:</td>
<td width="70%" height="25">
<input name="title" type="text" id="title" CLASS="kuang-bg"></td>
</tr>
<tr>
<td height="119" colspan="2" bgcolor="#FFFFFF">
<textarea name="content" cols="50" rows="5" id="content" CLASS="kuang-bg"></textarea></td>
</tr>
<tr align="center">
<td colspan="2" bgcolor="#FFFFFF" height="27">
<input type="submit" name="Submit" value="发  送" CLASS="botton">
<input type="reset" name="Submit2" value="重  写" CLASS="botton">
</td>
</tr>
</table>
</form>
</body>
</html>


 用于接收用户输入的信息

 

2.建立 sendMail.jsp

 

<%@ page contentType="text/html;charset=utf-8" %>
<%request.setCharacterEncoding("utf-8");%><!--中文处理代码-->
<!--导入要用到的类库-->
<%@ page import="java.util.*"%>
<%@ page import="javax.mail.*"%>
<%@ page import="javax.mail.internet.*"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>发送邮件</title>
</head>
<body>

<%
try{
//从html表单中获取邮件信息
String tfrom=request.getParameter("from");
String tto=request.getParameter("to"); 
String ttitle=request.getParameter("title");
String tcontent=request.getParameter("content");

//JavaMail需要Properties来创建一个session对象。它将寻找字符串"mail.smtp.host",属性值就是发送邮件的主机.
//Properties对象获取诸如邮件服务器、用户名、密码等信息,以及其他可在整个应用程序中 共享的信息。

Properties props=new Properties();//也可用Properties props = System.getProperties();
props.put("mail.smtp.host","邮件服务器");//存储发送邮件服务器的信息
props.put("mail.smtp.auth","false");//同时通过验证

Session s=Session.getInstance(props,null);//根据属性新建一个邮件会话,null参数是一种Authenticator(验证程序) 对象
s.setDebug(true);//设置调试标志,要查看经过邮件服务器邮件命令,可以用该方法

//  一旦创建了自己的Session对象,就是该去创建要发送的消息的 时候了。这时就要用到消息类型(MimeMessage是其中一种类型)。
// Message对象将存储我们实际发送的电子邮件信息,Message对象被作为一个MimeMessage对象来创建并且需要知道应当选择哪一个JavaMail session。
//  Message类表示单个邮件消息,它的属性包括类型,地址信息和所定义的目录结构。

Message message=new MimeMessage(s);//由邮件会话新建一个消息对象
Address from=new InternetAddress(tfrom);//发件人的邮件地址
message.setFrom(from);//设置发件人

Address to=new InternetAddress(tto);//收件人的邮件地址
message.setRecipient(Message.RecipientType.TO,to);//设置收件人,并设置其接收类型为TO,还有3种预定义类型如下:

//Message.RecipientType.TO
//Message.RecipientType.CC
//Message.RecipientType.BCC

message.setSubject(ttitle);//设置主题
message.setText(tcontent);//设置信件内容
message.setSentDate(new Date());//设置发信时间


message.saveChanges();//存储邮件信息


// Transport 是用来发送信息的,
// 用于邮件的收发打操作。
Transport transport=s.getTransport("smtp");
transport.connect("填写邮件服务器"," 登陆服务器的用户名","密码");//有的服务器是没有设置用户名和密码的,这个根据需要去填写
transport.sendMessage(message,message.getAllRecipients());//发送邮件,其中第二个参数是所有已设好的收件人地址
transport.close();

%>
<div align="center">
<p><font color="#FF6600"> 发送成功!邮件已保存到<%=to %>邮箱里面</font></p>
<p><a href="index.html">再发一封</a> </p>
<!-- response.sendRedirect("mail_information.jsp");  页面跳转--> 
</div>
<%
//response.sendRedirect
}catch(MessagingException e){
out.println(e.toString());
}
%>
</body>
</html>

 

我做了几次 都没有发送成功,错误是服务器禁止链接,后来找强哥要了公司的服务器,嘿 一下就好了。代码是很健壮滴 经得起折腾。

 

 

 

原创粉丝点击