java mail例子

来源:互联网 发布:深圳商报苹果软件 编辑:程序博客网 时间:2024/06/06 03:17

一、index.html
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  <title>填写邮件信息</title>
 </head>

 <body>
  <form name="form1" method="post" action="sendmail.jsp">

   <font size="5" color="blue">填写邮件信息</font>
   <br>  
   发件人地址:
   <input name="from" type="text" id="from">
   <br /> 
   收信人地址:
   <input name="to" type="text" id="to">
   <br>   主题:
   <input name="title" type="text" id="title">
   <br>
   <textarea name="content" cols="50" rows="5" id="content">
   </textarea>
   <br>   <input type="submit" name="Submit" value="发  送">
   <input type="reset" name="Submit2" value="重  写">
  </form>
 </body>
</html>


二、sendMail.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<!--%request.setCharacterEncoding("gb2312");%--><!--中文处理代码-->
<!--导入要用到的类库-->
<%@ page import="java.util.*"%>
<%@ page import="javax.mail.*"%>
<%@ page import="javax.mail.internet.*"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<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","smtp.163.com");//存储发送邮件服务器的信息
props.put("mail.smtp.auth","true");//同时通过验证

//方法二:(如果是在weblogin配置JavaMail:则需指定JNDI名检索
//Context ctx=new InitialContext();
//Session s=(Session)ctx.lookup("MailSession");
//Message msg=new MimeMessage(s);


//这个Session类代表JavaMail 中的一个邮件session. 每一个基于 JavaMail的应用程序至少有一个session但是可以有任意多的session。
//Session类定义全局和每个用户的与邮件相关的属性。这此属性说明了客房机和服务器如何交流信息。


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

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

Message message=new MimeMessage(s);//由邮件会话新建一个消息对象

//message.setContent("hello","test/plain");//设置消息的内容类型,如果发送的格式有HTML格式就必须设置,
//message.setText("Hello");//发送一般文本格式的消息

//设置邮件,一旦您创建了 Session 和 Message,并将内容填入消息后,就可以用Address确定信件地址了。
//如果想让一个名字出现在电子邮件地址后,也可以将其传递给构造器:
//Address from=new InternetAddress("xmqds@21cn.com","qdison");//发件人的邮件地址

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("smtp.163.com","你的用户名","你的密码");//以smtp方式登录邮箱
transport.sendMessage(message,message.getAllRecipients());//发送邮件,其中第二个参数是所有已设好的收件人地址
transport.close();

%>
<div align="center">
<p><font color="#FF6600">发送成功!</font></p>
<p><a href="index.jsp">再发一封</a> </p>
</div>
<%
}catch(MessagingException e){
out.println(e.toString());
}
%>
</body>
</html>

原创粉丝点击