package com.mail.tool;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.text.DateFormat;
import java.util.Date;
import java.util.Properties;
import java.util.StringTokenizer;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Part;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import com.mail.bean.MailBean;
import com.mail.bean.UserBean;
import com.mail.dao.ReceiveDao;
import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeUtility;
public class MailManager {
public int getUnreadCount(UserBean user){
int count=0;
try{
Properties props=new Properties();
Session mailSession = Session.getInstance(props);
mailSession.setDebug(true);
Store store = mailSession.getStore("pop3");
store.connect(user.getPop(), user.getEmail(), user.getEmailPSW());
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);
count=folder.getUnreadMessageCount();
folder.close(true);
store.close();
}
catch (Exception e) {
e.printStackTrace();
}
return count;
}
//接收邮件
public boolean receiveMail(UserBean user){
try{
Properties props=new Properties();
Session mailSession = Session.getInstance(props);
mailSession.setDebug(true);
Store store = mailSession.getStore("pop3");
store.connect(user.getPop(), user.getEmail(), user.getEmailPSW());
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
Message message[] = folder.getMessages();
ReceiveDao receiveDao = new ReceiveDao();
for (int i = 0; i < message.length; i++){
MailBean mail=new MailBean();
mail.setFrom(((InternetAddress)message[i].getFrom()[0]).getAddress());
mail.setTo(user.getEmail());
mail.setTheme(message[i].getSubject());
DateFormat format=DateFormat.getDateInstance(DateFormat.SHORT);
mail.setDate(format.format(message[i].getSentDate()));
/////////////////////////////////////////////////
Object content = message[i].getContent();
String textPlain=contentParser(message[i],"text/plain");
String textHtml=contentParser(message[i],"text/html");
if(textHtml.length()>0)
mail.setContent(MimeUtility.decodeText(textHtml));
if(textPlain.length()>0)
mail.setContent(MimeUtility.decodeText(textPlain));
if (content instanceof Multipart){
Multipart mp = (Multipart) message[i].getContent();
for (int j = 0; j < mp.getCount(); j++){
Part part = mp.getBodyPart(j);
String disposition = part.getDisposition();
if ((disposition != null)&&((disposition.equals(Part.ATTACHMENT))
||(disposition.equals(Part.INLINE)))){
String filename=MimeUtility.decodeText(part.getFileName());
File file = new File(Constants.WEB_ABS_ATTACH_PATH
+ "/" + filename);
for (int k = 0; file.exists(); k++){
int index = filename.indexOf(".");
String ext = filename.substring(index);
file = new File(Constants.WEB_ABS_ATTACH_PATH
+ "/"
+ filename.substring(0, index)
+ k + ext);
}
FileOutputStream myFileoutputstream = new FileOutputStream(file);
int chunk = part.getSize();
byte[] buffer = new byte[chunk];
InputStream instream = part.getInputStream();
instream.read(buffer, 0, chunk);
myFileoutputstream.write(buffer, 0, chunk);
instream.close();
myFileoutputstream.close();
String attach=mail.getAttachment();
if(attach.length()>0)attach+=";";
mail.setAttachment(attach+"attachment" + "/"
+ file.getName());
mail.setFlag(MailBean.UNREAD);
}
}
}
//////////////////////////////////////////////////////
mail.setFlag(MailBean.UNREAD);
mail.setUserID(user.getUserID());
if (receiveDao.addReceive(mail))
message[i].setFlag(Flags.Flag.DELETED, true);
}
folder.close(true);
store.close();
return true;
}
catch (Exception e){
e.printStackTrace();
}
return false;
}
//发送邮件
public boolean sendMail(MailBean mail,UserBean user){
try{
Properties props =new Properties();
props.put("mail.smtp.host",user.getSmtp());//先认证
props.put("mail.smtp.auth","true");
Session mailSession = Session.getInstance(props);
mailSession.setDebug(true);
MimeMessage newMessage = new MimeMessage(mailSession);
newMessage.setFrom(new InternetAddress(mail.getFrom()));
newMessage.setSubject(mail.getTheme());
newMessage.setSentDate(new Date());
InternetAddress[] toList = getToList(mail.getTo());
newMessage.setRecipients(Message.RecipientType.TO, toList);
BodyPart mbp = new MimeBodyPart();
mbp.setContent(mail.getContent(), "text/html;charset=GBK");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(mbp);
if (mail.getAttachment().length()>0){
String[] files=mail.getAttachment().split(";");
for(int i=0;i<files.length;i++){
mbp = new MimeBodyPart();
String attPath=Constants.WEB_ABS_PATH+files[i];
File file=new File(attPath);
DataSource source = new FileDataSource(file);
mbp.setDataHandler(new DataHandler(source));
mbp.setFileName(MimeUtility.encodeText(file.getName()));//编码文件名解决中文乱码
multipart.addBodyPart(mbp);
}
}
newMessage.setContent(multipart);
Transport transport;
transport = mailSession.getTransport("smtp");
transport.connect(user.getSmtp(), user.getEmail(), user.getEmailPSW());
transport.sendMessage(newMessage, newMessage.getAllRecipients());
transport.close();
return true;
}
catch (Exception e){
e.printStackTrace();
}
return false;
}
//取得地址列表
public InternetAddress[] getToList(String toSeq) throws AddressException{
StringTokenizer token = new StringTokenizer(toSeq, ",");
InternetAddress[] addr = new InternetAddress[token.countTokens()];
int i = 0;
while (token.hasMoreTokens()){
addr[i] = new InternetAddress(token.nextToken().toString());
i++;
}
return addr;
}
//解析邮件获取邮件文本
public String contentParser(Part part,String type) throws Exception{
String content="";
if(part.isMimeType(type)){
content=(String)part.getContent();
}
else{
if(part.getContent() instanceof Multipart){
Multipart mp = (Multipart)part.getContent();
int count = mp.getCount();
for (int i = 0; i < count; i++)
content+=contentParser(mp.getBodyPart(i),type);
}
}
return content;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
手机邮箱源码,基于j2me和tomcat (298个子文件)
MailManager.class 9KB
MainCanvas.class 8KB
EditMailForm.class 7KB
MainCanvas.class 7KB
EditMailForm.class 7KB
OpenFileForm.class 6KB
SaveFileForm.class 6KB
OpenFileForm.class 6KB
SaveFileForm.class 6KB
MailMidlet.class 5KB
MailMidlet.class 5KB
FriendForm.class 5KB
HttpFriendHandler.class 5KB
FriendForm.class 5KB
ReceiveForm.class 4KB
ReceiveForm.class 4KB
DownLoadHandler.class 4KB
SettingForm.class 4KB
RegisterForm.class 4KB
SettingForm.class 4KB
ReadReceiveForm.class 4KB
RegisterForm.class 4KB
ReadReceiveForm.class 4KB
FriendServlet.class 4KB
ReceiveDao.class 4KB
UploadHandler.class 4KB
DownLoadHandler.class 4KB
HttpFriendHandler.class 4KB
ReceiveServlet.class 4KB
DraftForm.class 3KB
SendForm.class 3KB
DraftDao.class 3KB
SendDao.class 3KB
DraftForm.class 3KB
SendForm.class 3KB
HttpDeleteMail.class 3KB
Global.class 3KB
ListCanvas.class 3KB
UploadHandler.class 3KB
HttpReceiveMail.class 3KB
MailBean.class 3KB
Global.class 3KB
HttpLogin.class 3KB
MailBean.class 3KB
MailBean.class 3KB
ListCanvas.class 3KB
HttpSendEmail.class 3KB
LoginForm.class 3KB
HttpReadMail.class 3KB
MyStore.class 3KB
DraftServlet.class 3KB
SendServlet.class 3KB
LoginForm.class 3KB
HttpDraftMail.class 3KB
HttpRegister.class 3KB
HttpSetting.class 3KB
HttpDeleteMail.class 3KB
HttpLogin.class 3KB
HttpReceiveMail.class 3KB
FriendDao.class 3KB
UserBean.class 3KB
UserDao.class 3KB
HttpReadMail.class 3KB
MyStore.class 3KB
UploadServlet.class 3KB
HttpSendEmail.class 3KB
UserBean.class 3KB
JDBConnection.class 3KB
UserBean.class 3KB
HttpRegister.class 2KB
HttpSetting.class 2KB
HttpDraftMail.class 2KB
RefreshFriendForm.class 2KB
RefreshFriendForm.class 2KB
DownloadServlet.class 2KB
LoginServlet.class 2KB
SendMailServlet.class 2KB
MailItem.class 2KB
AddFriendCanvas.class 2KB
RegisterServlet.class 2KB
FriendForm$UpdateHandler.class 2KB
FriendStore.class 2KB
FriendBean.class 2KB
AddFriendCanvas.class 2KB
AddFriendForm.class 2KB
MailStore.class 2KB
FriendForm$UpdateHandler.class 2KB
AddFriendForm.class 2KB
FriendStore.class 2KB
FriendBean.class 2KB
MailItem.class 2KB
FriendBean.class 2KB
MailStore.class 2KB
ReceiveForm$DeleteHandler.class 2KB
DraftMailServlet.class 2KB
DraftForm$DeleteHandler.class 2KB
SendForm$DeleteHandler.class 2KB
FriendItem.class 2KB
ReceiveForm$DeleteHandler.class 2KB
MButton.class 2KB
共 298 条
- 1
- 2
- 3
资源评论
- 如風2014-03-01這太實用了
zhenzhenhello
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功