jsp中如何实现在线发送邮件
 
[ 双击自动滚屏 ] [ 打印本页 ]  [ 发布日期: 2006-04-26]  [ 被阅次数    764  次]    [字体: ]  
package com.test.mail;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import java.io.*;
/**
 *收发邮件
 *@author aa
 *@version jdk1.4.1 tomcat5.1.0
 */
public class MailBean {
/**MIME邮件对象*/
private MimeMessage mimeMsg=null;
/**邮件会话对象*/
private Session mailSession=null;

/**Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象*/
private Multipart mp=null;
/**
 *构造函数,初始化
 */
public MailBean() {
}
    /**
     * 发件初始化
     *
     */
public void init() {
try {
Properties props = System.getProperties();       //获得系统属性对象
//props.put("mail.smtp.port","25");
props.put("mail.smtp.auth", "true");
mailSession = Session.getInstance(props, null);  //获得邮件会话对象
mimeMsg = new MimeMessage(mailSession);          //创建MIME邮件对象
mp = new MimeMultipart();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
 *设置主题
 *@param mailSubject 主题
 *@return  返回设置主题是否成功,成功则true,否则false
 */
public boolean setSubject(String mailSubject) {
try {
mimeMsg.setSubject(mailSubject);
return true;
} catch (Exception e) {
return false;
}
}
/**
 *设置主体
 *@param mailBody 主体
 *@return  返回设置主体是否成功,成功则true,否则false
 */
public boolean setBody(String mailBody) {
try {
BodyPart bp = new MimeBodyPart();
bp.setContent(
"<meta http-equiv=Content-Type content=text/html;charset=gb2312>"
+ mailBody,
"text/html;charset=gb2312");
mp.addBodyPart(bp);
return true;
} catch (Exception e) {
return false;
}
}
/**
 *添加附件
 *@param filename 附件地址
 *@return  返回添加附件是否成功,成功则true,否则false
 */
public boolean addAttach(String filename) {
try {
BodyPart bp = new MimeBodyPart();
FileDataSource fileds = new FileDataSource(filename);
bp.setDataHandler(new DataHandler(fileds));
bp.setFileName(fileds.getName());
mp.addBodyPart(bp);
return true;
} catch (Exception e) {
return false;
}
}
/**
 *设置发件人
 *@param from 发件人
 *@return  返回设置发件人是否成功,成功则true,否则false
 */
public boolean setFrom(String from) {
try {
mimeMsg.setFrom(new InternetAddress(from)); //设置发信人
return true;
} catch (Exception e) {
return false;
}
}
/**
 *设置收件人
 *@param to 收件人
 *@return  返回设置收件人是否成功,成功则true,否则false
 */
public boolean setTo(String to) {
try {
mimeMsg.setRecipients(
Message.RecipientType.TO,
InternetAddress.parse(to));
return true;
} catch (Exception e) {
return false;
}
}
/**
 *设置收件人
 *@param copyto 收件人
 *@return  返回设置收件人是否成功,成功则true,否则false
 */
public boolean setCopyTo(String copyto) {
try {
mimeMsg.setRecipients(
Message.RecipientType.CC,
(Address[]) InternetAddress.parse(copyto));
return true;
} catch (Exception e) {
return false;
}
}
    /**
 *发件操作
     * @param smtpServer
     * @param smtpUser
     * @param smtpPassword
     * @return 返回发送成功信息
     */
public String send(String smtpServer,String smtpUser,String smtpPassword) {
String str = null;
try {
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
Transport transport = mailSession.getTransport("smtp");
transport.connect(smtpServer,smtpUser,smtpPassword);
transport.sendMessage(
mimeMsg,
mimeMsg.getRecipients(Message.RecipientType.TO));
transport.close();
str = "发邮件成功!";
} catch (Exception e) {
str = e.toString();
}
return str;
}
/**
*收件操作
*@param popServer 收件服务器
*@param popUser 收件用户名
*@param popPassword  收件密码
*@return 返回收件结果,若不成功返回错误信息
*/
public String receive(
String popServer,
String popUser,
String popPassword) {
String str = "";
Store store = null;
Folder folder = null;
try {
Properties props = System.getProperties();
Session session = Session.getDefaultInstance(props, null);
store = session.getStore("pop3");
store.connect(popServer, popUser, popPassword);
folder = store.getDefaultFolder();
if (folder == null)
throw new Exception("No default folder");
folder = folder.getFolder("INBOX");
if (folder == null)
throw new Exception("No POP3 INBOX");
folder.open(Folder.READ_ONLY);
Message[] msgs = folder.getMessages();
for (int msgNum = 0; msgNum < msgs.length; msgNum++) {
str+= printMessage(msgs[msgNum]);
}
} catch (Exception ex) {
str+= ex.toString();
} finally {
try {
if (folder != null)
folder.close(false);
if (store != null)
store.close();
} catch (Exception ex2) {
str+= ex2.toString();
}
}
return str;
}
/**
 *显示邮件内容
 *@param message 邮件对象
 *@return 返回邮件内容
 */
public String printMessage(Message message) {
String str = "<table>";
try {
//From
String from =
((InternetAddress) message.getFrom()[0]).getPersonal();
if (from == null)
from = ((InternetAddress) message.getFrom()[0]).getAddress();
str += "<tr><Td>FROM: " + from + "</td></tR>";
//Subject
String subject = message.getSubject();
str += "<tr><Td>SUBJECT: " + subject + "</td></tr>";
Part messagePart = message;
Object content = messagePart.getContent();
if (content instanceof Multipart) {
messagePart = ((Multipart) content).getBodyPart(0);
}
//ContentType
String contentType = messagePart.getContentType();
str+= "<tr><Td>CONTENT:"
+ contentType
+ "</tD></tr><tr><Td valign=top>";
//Content
if (contentType.startsWith("text/plain")
|| contentType.startsWith("text/html")) {
InputStream is = messagePart.getInputStream();
BufferedReader reader =
new BufferedReader(new InputStreamReader(is));
String thisLine = reader.readLine();
while (thisLine != null) {
str += thisLine;
thisLine = reader.readLine();
}
}
str += "</tD></tr>";
} catch (Exception ex) {
str += "<tr><td>" + ex.toString() + "</tD></tR>";
}
str+= "</table>";
return str;
}
}