一个通过JSP,JAVABEAN组合成功发送邮件的例子;需要的包有;mail.jar ,activation.jar;
java.sun.com中有下载的;
第一:通过163.com发送邮件时要验证用户,在这我们创建一个JAVABEAN 继承Authenticator类;
package zh;
/**
* @author Administrator
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
public class MyAuth extends Authenticator
{
private String userName = "";
private String password = "";
private PasswordAuthentication pass = null;
public MyAuth(String userName,String password)
{
pass = new PasswordAuthentication(userName,password);
}
public PasswordAuthentication getPasswordAuthentication()
{
return pass;
}
public static void main(String[] args) {
}
}
通过用户名和用户密码来创建一个验证类的实例MyAuth;
MyAuth my = MyAuth(String userName,String password);//userName 用户邮箱名;passowrd :用户邮箱登录密码;例:userName = chshanhaojuan ,password = *******;
第二:
创建一个JSP页面来发送邮件;
<%@ page contentType="text/html; charset=GBK"%>
<%@ page import="javax.mail.*"%>
<%@ page import="javax.mail.internet.*"%>
<%@ page import="javax.activation.*"%>
<%@ page import="javax.naming.NamingException"%>
<%@ page import="javax.naming.InitialContext"%>
<%@ page import="javax.naming.Context"%>
<%@ page import="java.util.*"%>
<%@ page import="java.net.*"%>
<%@ page import="zh.MyAuth"%>
<html>
<head>
<title>OA</title>
</head>
<body topmargin=0 leftmargin=0 bgcolor="#ffffff">
<table border=0 cellpadding=0 cellspacing=0 width=100%>
<tr height=24>
<td width=100% colspan=2 align="left" valign="middle" style="font-size:12px;padding-left:10px" background="images/bgcolor.gif">
<img src="images/handle.gif"> 公共信息->公共通讯簿
</td>
</tr>
<tr height=500>
<td width=60% align="left" valign="top">
<%
try{
Properties props = new Properties ();
/**在这mail.smtp.host 是邮件服务器的地址,比喻smtp.163.com 是163的接收邮件的服务器一般用smtp.163.com 就可以了但是,在我的AIX操作系统中不能解析这个地址,所以用220.181.12.16,
你也可以通过在dos底下用ping smtp.163.com 来得到一个IP地址
*/
props.put("mail.smtp.host", "220.181.12.16");
/**
mail.transport.protocol 是邮件传输协议中的接收协议;smtp既可;
*/
props.put("mail.transport.protocol","smtp");
/**
是否通过验证;一般为true 。false不能通过验证;
*/
props.put("mail.smtp.auth","true");
//mail.user 为用户邮箱登陆名;
props.put("mail.user", "chshanhaojuan");
//mail.password 邮箱登陆密码;
//props.put("mail.password", "******");
Session sendMailSession;
//用户验证使用的实例;
MyAuth auth = new MyAuth("chshanhaojuan","******");
//根据用户验证和当前属性来创建一个会话对象;
sendMailSession = Session.getDefaultInstance(props,auth);
sendMailSession.setDebug(false);
Transport tran = sendMailSession.getTransport("smtp");
tran.connect();
out.println(tran.isConnected());//测试连接是否成功;
Message mess = new MimeMessage(sendMailSession);//通过会话
//发送邮件的邮件地址;
mess.setFrom(new InternetAddress("[email protected]"));
//接收邮件的邮件地址;
mess.setRecipient(Message.RecipientType.TO,new InternetAddress("[email protected]"));
//接收邮件的邮件地址;
//mess.addRecipient(Message.RecipientType.TO,new InternetAddress("[email protected]"));
//发送的内容;
mess.setText("现在开始测试发送文件是否成功");
//发送时间;
mess.setSentDate(new Date());
//内容主题;
mess.setSubject("现在开始测试发送文件是否成功");
mess.saveChanges();
Address[] ad = new Address[1];
//接收邮件的地址;
ad[0] = new InternetAddress("[email protected]");
//发送邮件;
tran.sendMessage(mess,ad);
out.println("发送成功");
/*
//接收邮件;
Properties props = new Properties ();
//接收邮件邮件的服务器地址;mail.pop3.host ;220.181.12.113 同上面的一样;就不多说了;
props.put("mail.pop3.host", "220.181.12.113");
props.put("mail.store.protocol","pop3");//接收邮件的协议mail.store.protocol = pop3
props.put("mail.password", "chshanhaojuan");
props.put("mail.user", "******");//用户密码;
props.put("mail.port", "110"); //接收邮件服务器开的端口;163.com的端口是110;
Session sendMailSession;
sendMailSession = Session.getInstance(props,null);
Provider pro = sendMailSession.getProvider("pop3");
//默认的不能创建Store store = sendMailSession.getStore();创建不出来;为NULL异常;
Store store = sendMailSession.getStore(pro);
//先建立连接才能接收邮件;
store.connect("220.181.12.113",110,"chshanhaojuan","******");
//是否连接成功;
out.println(store.isConnected());
//打开收件箱,得到一个目录;
Folder folder = store.getFolder("INBOX");
//打开目录;只读方式打开;
folder.open(Folder.READ_ONLY);
从收件箱中提出邮件;
Message[] mess = folder.getMessages();
//底下应该看的懂了;
out.println(mess.length);
out.println(mess[0].getSubject());
out.println(mess[0].getSentDate().toString());
*/
}catch(NullPointerException e)
{
out.println(e.getMessage()+"异常");
}catch(Exception ex)
{
out.println(ex.getMessage()+"异常");
}
%>
</td>
</tr>
</table>
</body>
</html>
-----------------------------------------------------------
给个简单得让大家看看:
import javax.mail.Message;
import javax.mail.Transport;
import javax.mail.Session;
import java.util.Properties;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.InternetAddress;
import javax.mail.MessagingException;
/**
* @author Administrator
* 找回密码
* /
public class Send {
public static void main(String[] args)throws Exception{
new Send().sendMail();
}
private String host="smtp.126.com";//主机;
private String user="xiaye09080201";//用户名;
private String password="11111111";//密码;
private String from="[email protected]";//发件人;
private String to="";//收件人;
private String subjetc="六八四八竟价排名系统给您的密码提示";//标题;
private String content="";//内容;
//设置内容
public void setContent(String content) {
this.content = content;
}
//设置收件人
public void setTo(String to) {
this.to = to;
}
/**
* 发送email
* @throws MessagingException
* @throws Exception
*/
public void sendMail() throws MessagingException,Exception{
Properties props = new Properties();
props.put("mail.smtp.host", host);//指定SMTP服务器
props.put("mail.smtp.auth", "true");//指定是否需要SMTP验证
Session mailSession = Session.getDefaultInstance(props);
Message message=new MimeMessage(mailSession);
message.setFrom(new InternetAddress(from));//发件人
message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));//收件人
message.setSubject(subjetc);//邮件主题
message.setText(content);//邮件内容
message.saveChanges();
Transport transport = mailSession.getTransport("smtp");
transport.connect(host, user, password);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
}