javamail接收邮件的bean,可以正确的解析中文(转)(一)

这几天写的javamail项目中接收邮件和解析邮件的类,参考了很多代码,但是好像没有比较完整的对中文支持还有邮件解析的整合,所以自己写了一个。

Pop3Bean.java是主要的代码

FileProperties.java读取配置文件的类

MailConstants.java指向配置文件的接口,可以不用

Pop3BeanTest.java测试程序

ReadEml.java读取eml文件的bean


接收邮件类

//:Pop3Bean.java
/*
* Created on 2004-12-22
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package org.jteam.jmail.pop3bean;

import java.io.*;
import java.text.*;
import java.util.*;
import org.jteam.jmail.util.*;
import javax.mail.*;
import javax.mail.internet.*;

/**
* @author David
*
* TODO To change the template for this generated type comment go to Window -
* Preferences - Java - Code Style - Code Templates
*/
public class Pop3Bean {

private int mailCounter; //邮件计数

private int mailIndex; //邮件编号,即邮件在messages数组中的位置

private int mailDownErrorCounter; //正在下载邮件时,出错的计数器

private boolean[] recordFailure; //记录下载出错的邮件的序号

private int totalRetryTimes; //总共重试次数

private int retryTimeCounter; //记下重试的次数

private boolean otherError; //若是在邮件正式下载之前出错,则置该值为true

private String extension; //文件扩展名

private Store store;

private Folder folder;

private Message[] messages;

private Message message;

private Part part;

private String emlName;

private String attachName;

private int allMessageCount;

private int messageCount;

private String dateformat; //默认的日前显示格式

private String propFile = MailConstants.PROPS_FILE_NAME;//用这个接口类的好处是更改配置文件路径的时候不需要更改每个类

private String protocol; //服务协议

private String mailHost; //服务器地址

private String userName; //用户名

private String password; //密码

private String saveAttachPath; //附件下载后的存放目录

private String saveEmlPath;//保存eml文件的路径

public Pop3Bean() throws IOException {
FileProperties fp = new FileProperties(propFile);
fp.load();
protocol = fp.getProperty(MailConstants.RECV_PROTO);
mailHost = fp.getProperty(MailConstants.RECV_HOST);
userName = fp.getProperty(MailConstants.RECV_USER);
password = fp.getProperty(MailConstants.RECV_PASS);
saveAttachPath = fp.getProperty(MailConstants.RECV_ATTACH);
saveEmlPath = fp.getProperty(MailConstants.RECV_ROOT);
dateformat = fp.getProperty("mail.receive.dtfmat");
extension = fp.getProperty("mail.receive.extension");
totalRetryTimes = Integer
.parseInt(fp.getProperty("mail.receive.retry"));
}

/**
* 设置邮件主机
*/
public void setMailHost(String mailHost) {
this.mailHost = mailHost;
}

/**
* 获取邮件主机
*/
public String getMailHost() {
return this.mailHost;
}

/**
* 设置邮件帐号
*/
public void setUserName(String userName) {
this.userName = userName;
}

/**
* 获取邮件帐号
*/
public String getUserName() {
return this.userName;
}

/**
* 设置邮件密码
*/
public void setPassword(String password) {
this.password = password;
}

/**
* 设置Store
*/
public void setStore(Store store) {
this.store = store;
}

/**
* 设置邮箱文件夹
*/
public void setFolder(Folder folder) {
this.folder = folder;
}

/**
* 设置messages数组
*/
public void setMessages(Message[] messages) {
this.messages = messages;
}

/**
* 设置message
*/
public void setMessage(Message message) {
this.message = message;
}

/**
* 获取message
*/
public Message getMessage() {
return this.message;
}

/**
* 获取folder中的message数量
*
* @throws MessagingException
*/
public int getAllMessageCount() throws MessagingException {
this.allMessageCount = folder.getMessageCount();
return allMessageCount;
}

/**
* 设置allMessageCount
*
* @throws MessagingException
*/
private void setAllMessageCount() throws MessagingException {
this.allMessageCount = this.folder.getMessageCount();
}

/**
* 获取messages中message的数量
*
* @return
*/
public int getMessageCount() {
this.messageCount = this.messages.length;
return messageCount;
}

/**
* 获得folder中新邮件的数量
*
* @return
* @throws MessagingException
*/
public int getNewMessageCount() throws MessagingException {
return this.folder.getNewMessageCount();
}

/**
* 获得folder中未读邮件的数量
*
* @return
* @throws MessagingException
*/
public int getUnreadMessageCount() throws MessagingException {
return this.folder.getUnreadMessageCount();
}

/**
* 获取Part
*/
public Part getPart() {
return (Part) message;
}

/**
* 设置Part
*/
public void setPart(Part part) {
this.part = part;
}

/**
* 设置附件存放路径
*/

public void setAttachPath(String attachPath) {
this.saveAttachPath = attachPath;
}

/**
* 获得附件存放路径
*/

public String getAttachPath() {
return saveAttachPath;
}

/**
* 设置eml存放路径
*/

public void setEmlPath(String emlPath) {
this.saveEmlPath = emlPath;
}

/**
* 获得eml存放路径
*/

public String getEmlPath() {
return saveEmlPath;
}

public void setEmlName(String emlName) {
this.emlName = emlName;
}

public String getEmlName() {
return emlName;
}

public void setAttachName(String attachName) {
this.attachName = attachName;
}

public String getAttachName() {
return attachName;
}

public void setExtension(String extension) {
this.extension = extension;
}

public String getExtension() {
return extension;
}

/**
* 设置日期显示格式
*/

public void setDateFormat(String format) throws Exception {
this.dateformat = format;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值