100分邮件问题
我用的是myeclipse5.1+eclipse3.2+tomcat
首先新建一web工程
然后建立一个包bean 再建类MailInfo如下:
(包都放对位置的)
package bean;
import java.util.*;
import javax.activation.*;
import javax.mail.*;
import javax.mail.internet.*;
public class MailInfo {
String to = " ";//收件人
String from = " ";//发件人
String host = " ";//smtp主机
String username = " " ;
String password = " " ;
String filename = " ";//附件文件名
String subject = " ";//邮件主题
String content = " ";//邮件正文
Vector file = new Vector();//附件文件集合
/**
* <br> 方法说明:默认构造器
* <br> 输入参数:
* <br> 返回类型:
*/
public MailInfo(){
}
/**
* <br> 方法说明:构造器,提供直接的参数传入
* <br> 输入参数:
* <br> 返回类型:
*/
public MailInfo(String to,String from,String smtpServer,String username,String password,String subject,String content){
this.to = to;
this.from = from;
this.host = smtpServer;
this.username = username;
this.password = password;
this.subject = subject;
this.content = content;
}
/**
* <br> 方法说明:设置邮件服务器地址
* <br> 输入参数:String host 邮件服务器地址名称
* <br> 返回类型:
*/
public void setHost(String host){
this.host = host;
}
/**
* <br> 方法说明:设置登录服务器校验密码
* <br> 输入参数:
* <br> 返回类型:
*/
public void setPassWord(String pwd){
this.password = pwd;
}
/**
* <br> 方法说明:设置登录服务器校验用户
* <br> 输入参数:
* <br> 返回类型:
*/
public void setUserName(String usn){
this.username = usn;
}
/**
* <br> 方法说明:设置邮件发送目的邮箱
* <br> 输入参数:
* <br> 返回类型:
*/
public void setTo(String to){
this.to = to;
}
/**
* <br> 方法说明:设置邮件发送源邮箱
* <br> 输入参数:
* <br> 返回类型:
*/
public void setFrom(String from){
this.from = from;
}
/**
* <br> 方法说明:设置邮件主题
* <br> 输入参数:
* <br> 返回类型:
*/
public void setSubject(String subject){
this.subject = subject;
}
/**
* <br> 方法说明:设置邮件内容
* <br> 输入参数:
* <br> 返回类型:
*/
public void setContent(String content){
this.content = content;
}
/**
* <br> 方法说明:把主题转换为中文
* <br> 输入参数:String strText
* <br> 返回类型:
*/
public String transferChinese(String strText){
try{
strText = MimeUtility.encodeText(new String(strText.getBytes(), "GB2312 "), "GB2312 ", "B ");
}catch(Exception e){
e.printStackTrace();
}
return strText;
}
/**
* <br> 方法说明:往附件组合中添加附件
* <br> 输入参数:
* <br> 返回类型:
*/
public void attachfile(String fname){
file.addElement(fname);
}
/**
* <br> 方法说明:发送邮件
* <br> 输入参数:
* <br> 返回类型:boolean 成功为true,反之为false
*/
public boolean sendMail(){
//构造mail session
Properties props = System.getProperties();
props.put( "mail.smtp.host ",host);
props.put( "mail.smtp.auth ", "true ");
Session session=Session.getDefaultInstance(props, new Authenticator(){
public PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication(username,password);
}
});
try {
//构造MimeMessage 并设定基本的值
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address={new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO,address);
subject = transferChinese(subject);
msg.setSubject(subject);
//构造Multipart
Multipart mp = new MimeMultipart();
//向Multipart添加正文
MimeBodyPart mbpContent = new MimeBodyPart();
mbpContent.setText(content);
//向MimeMessage添加(Multipart代表正文)
mp.addBodyPart(mbpContent);
//向Multipart添加附件
Enumeration efile=file.elements();
while(efile.hasMoreElements()){
MimeBodyPart mbpFile = new MimeBodyPart();
filename=efile.nextElement().toString();
FileDataSource fds = new FileDataSource(filename);
mbpFile.setDataHandler(new DataHandler(fds));
mbpFile.setFileName(fds.getName());
//向MimeMessage添加(Multipart代表附件)
mp.addBodyPart(mbpFile);
}
file.removeAllElements();
//向Multipart添加MimeMessage
msg.setContent(mp);
msg.setSentDate(new Date());
//发送邮件
Transport.send(msg);
} catch (MessagingException mex) {
mex.printStackTrace();
Exception ex = null;
if ((ex=mex.getNextException())!=null){
ex.printStackTrace();
}
return false;
}
return true;
}
}
------------------------------------------------------
jsp页面为:
<%@ page language= "java " contentType= "text/html; charset=ISO-8859-1 "
pageEncoding= "ISO-8859-1 "%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN " "http://www.w3.org/TR/html4/loose.dtd ">
<html>
<head>
<meta http-equiv= "Content-Type " content= "text/html; charset=ISO-8859-1 ">
<title> Insert title here </title>
</head>
<body>
<form action= "servlet/test " method= "post ">
<table align= "center ">
<tr>
<td> To: <br>
<input type= "text " name= "to " size=25> </td>
<td> From: <br>
<input type= "text " name= "from " size=25> </td>
</tr>
<tr>
<td colspan= "2 ">
Subject: <br>
<input type= "text " name= "subject " size=50>
</td>
</tr>
<tr>
<td colspan= "2 ">
<p> Message: <br>
<textarea name= "text " rows=25 cols=85> </textarea> </p>
</td>
</tr>
<tr>
<td colspan= "2 ">
<input type= "submit " value= "send "> <input type= "reset " value= "clear ">
</td>
</tr>
</table>
</form>
</body>
</html>
-------------------------------------------------------
[解决办法]
javamail的包放到common/lib 下或者放到你项目中的WEB-INF下的lib下
[解决办法]
在JRE SYSTEM LIBRARY上右击,查看你的所有包的路径都对不,一般都是这样的问题。
最好就是把用到的包在WEB-INFO/lib下放置