package com.mail;
import java.io.*;
import java.text.*;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import java.io.PrintWriter;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.activation.*;
import java.io.IOException;
//public class PraseMimeMessage implements Runnable {
public class PraseMimeMessage{
public static class SMTPAuthenticator extends Authenticator
{
private String username;
private String password;
public SMTPAuthenticator(String username, String password)
{
super();
this.username = username;
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(this.username, this.password);
}
}
private MimeMessage mimeMessage = null;
private String saveAttachPath = ""; //附件下载后的存放目录
private String picAddress = ""; //图片存放URL地址
private StringBuffer bodytext = new StringBuffer(); //存放邮件内容的StringBuffer对象
private String dateformat = "yy-MM-dd HH:mm"; //默认的日前显示格式
/*
*
* * 构造函数,初始化一个MimeMessage对象
*
*/
public PraseMimeMessage(){}
public PraseMimeMessage(MimeMessage mimeMessage){
this.mimeMessage = mimeMessage;
System.out.println("create a PraseMimeMessage object......../n");
}
public void setMimeMessage(MimeMessage mimeMessage){
this.mimeMessage = mimeMessage;
}
//设置图片url地址
public void setPicAddress(String picaddress)
{
this.picAddress = picaddress;
}
//取图片url地址
public String getPicAddress()
{
return this.picAddress;
}
/*
*
* * 获得发件人的地址和姓名
*
*/
public String getFrom()throws Exception{
InternetAddress address[] = (InternetAddress[])mimeMessage.getFrom();
String from = address[0].getAddress();
if(from == null) from="";
String personal = address[0].getPersonal();
if(personal == null) personal="";
String fromaddr = personal+"<"+from+">";
return fromaddr;
}
/*
*
* * 获得邮件的收件人,抄送,和密送的地址和姓名,根据所传递的参数的不同
* * "to"----收件人 "cc"---抄送人地址 "bcc"---密送人地址
*
*/
public String getMailAddress(String type)throws Exception{
String mailaddr = "";
String addtype = type.toUpperCase();
InternetAddress []address = null;
if(addtype.equals("TO") || addtype.equals("CC") ||addtype.equals("BCC")){
if(addtype.equals("TO")){
address = (InternetAddress[])mimeMessage.getRecipients(Message.RecipientType.TO);
}else if(addtype.equals("CC")){
address = (InternetAddress[])mimeMessage.getRecipients(Message.RecipientType.CC);
}else{
address = (InternetAddress[])mimeMessage.getRecipients(Message.RecipientType.BCC);
}
if(address != null){
for(int i=0;i<address.length;i++){
String email=address[i].getAddress();
if(email==null)
email="";
else{
email=MimeUtility.decodeText(email);
}
String personal=address[i].getPersonal();
if(personal==null)
personal="";
else{
personal=MimeUtility.decodeText(personal);
}
String compositeto=personal+"<"+email+">";
mailaddr+=","+compositeto;
}
mailaddr=mailaddr.substring(1);
}
}else{
throw new Exception("Error emailaddr type!");
}
return mailaddr;
}
/*
* * 获得邮件主题
*/
public String getSubject()throws MessagingException{
String subject = "";
try{
subject = MimeUtility.decodeText(mimeMessage.getSubject());
if(subject == null) subject="";
}catch(Exception exce){
}
return subject;
}
/*
* * 获得邮件发送日期
*/
public String getSentDate()throws Exception{
Date sentdate = mimeMessage.getSentDate();
SimpleDateFormat format = new SimpleDateFormat(dateformat);
return format.format(sentdate);
}
/*
* * 获得邮件正文内容
*/
public String getBodyText(){
return bodytext.toString();
}
/*
* * 解析邮件,把得到的邮件内容保存到一个StringBuffer对象中,解析邮件
* * 主要是根据MimeType类型的不同执行不同的操作,一步一步的解析
*/
public void getMailContent(Part part)throws Exception{
String contenttype = part.getContentType();
int nameindex = contenttype.indexOf("name");
boolean conname =false;
if(nameindex != -1) conname=true;
//System.out.println("CONTENTTYPE: "+contenttype);
if(part.isMimeType("text/plain") && !conname){
bodytext.append((String)part.getContent());
}else if(part.isMimeType("text/html") && !conname){
bodytext.append((String)part.getContent());
}else if(part.isMimeType("multipart/*")){
Multipart multipart = (Multipart)part.getContent();
try{
int counts = multipart.getCount();
for(int i=0;i<counts;i++){
getMailContent(multipart.getBodyPart(i));
}
}
catch(Exception ex)
{
System.out.println("["+ex+"]/n");
}
}else if(part.isMimeType("message/rfc822")){
getMailContent((Part)part.getContent());
}else{}
}
/*
* * 判断此邮件是否需要回执,如果需要回执返回"true",否则返回"false"
*/
public boolean getReplySign()throws MessagingException{
boolean replysign = false;
String needreply[] = mimeMessage.getHeader("Disposition-Notification-To");
if(needreply != null){
replysign = true;
}
return replysign;
}
/*
* * 获得此邮件的Message-ID
*/
public String getMessageId()throws MessagingException{
return mimeMessage.getMessageID();
}
/*
* * 【判断此邮件是否已读,如果未读返回返回false,反之返回true】
*/
public boolean isNew()throws MessagingException{
//boolean isnew = false;
//Flags flags = ((Message)mimeMessage).getFlags();
//Flags.Flag []flag = flags.getSystemFlags();
//System.out.println("flags's length: "+flag.length);
//for(int i=0;i<flag.length;i++){
// if(flag[i] == Flags.Flag.SEEN){
// isnew=true;
// System.out.println("seen Message.......");
// break;
// }
//}
//return isnew;
return ((Message)mimeMessage).isSet(javax.mail.Flags.Flag.DELETED);
}
//getMsgNum()
public int getMsgNum()throws MessagingException{
return ((Message)mimeMessage).getMessageNumber();
}
/*
* * 判断此邮件是否包含附件
*/
public boolean isContainAttach(Part part)throws Exception{
boolean attachflag = false;
String contentType = part.getContentType();
if(part.isMimeType("multipart/*")){
Multipart mp = (Multipart)part.getContent();
try{
for(int i=0;i<mp.getCount();i++){
BodyPart mpart = mp.getBodyPart(i);
String disposition = mpart.getDisposition();
if((disposition != null) &&((disposition.equals(Part.ATTACHMENT)) ||(disposition.equals(Part.INLINE))))
attachflag = true;
else if(mpart.isMimeType("multipart/*")){
attachflag = isContainAttach((Part)mpart);
}else{
String contype = mpart.getContentType();
if(contype.toLowerCase().indexOf("application") != -1) attachflag=true;
if(contype.toLowerCase().indexOf("name") != -1) attachflag=true;
}
}
}
catch(Exception ex)
{
System.out.println("[isContainAttach method"+ex+"]/n");
return false;
}
}else if(part.isMimeType("message/rfc822")){
attachflag = isContainAttach((Part)part.getContent());
}
return attachflag;
}
/*
* * 【保存附件】
*/
public void saveAttachMent(Part part)throws Exception{
String fileName = "";
if(part.isMimeType("multipart/*")){
Multipart mp = (Multipart)part.getContent();
for(int i=0;i<mp.getCount();i++){
System.out.println("附件一共有 : ["+mp.getCount()+"] 个/n");
BodyPart mpart = mp.getBodyPart(i);
String disposition = mpart.getDisposition();
if((disposition != null) &&((disposition.equals(Part.ATTACHMENT)) ||(disposition.equals(Part.INLINE)))){
fileName = mpart.getFileName();
if(fileName.toLowerCase().indexOf("gb2312") != -1){
fileName = MimeUtility.decodeText(fileName);
}
saveFile(fileName,mpart.getInputStream());
}else if(mpart.isMimeType("multipart/*")){
saveAttachMent(mpart);
}else{
fileName = mpart.getFileName();
if((fileName != null) && (fileName.toLowerCase().indexOf("GB2312") != -1)){
fileName=MimeUtility.decodeText(fileName);
saveFile(fileName,mpart.getInputStream());
}
}
}
}else if(part.isMimeType("message/rfc822")){
saveAttachMent((Part)part.getContent());
}
}
/*
* * 【设置附件存放路径】
*/
public void setAttachPath(String attachpath){
this.saveAttachPath = attachpath;
}
/*
* * 【设置日期显示格式】
*/
public void setDateFormat(String format)throws Exception{
this.dateformat = format;
}
/*
* * 【获得附件存放路径】
*/
public String getAttachPath(){
return saveAttachPath;
}
/*
* * 【真正的保存附件到指定目录里】
*/
private void saveFile(String fileName,InputStream in)throws Exception{
String osName = System.getProperty("os.name");
String storedir = getAttachPath();
String separator = "";
if(osName == null) osName="";
if(osName.toLowerCase().indexOf("win") != -1){
separator = "//";
if(storedir == null || storedir.equals("")) storedir="c://tmp";
}else{
separator = "/";
storedir = "/home/qianglee/mail/user/data";
}
String saveFullPath = getAttachPath();
//System.out.println("+++++++++++++++++ 格式时间: +++++++++++++++/n");
Calendar cal = Calendar.getInstance();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String mDateTime=formatter.format(cal.getTime());
//System.out.println("+++++++++++++"+mDateTime+"++++++++++++++/n");
//mDateTimes = 2004-12-05
File newdir1=new File(storedir+"/"+mDateTime);
if(newdir1.mkdir())
System.out.println("********* 成功创建文件夹 1 层 **********/n");
Thread.sleep(100);
File newdir2=new File(storedir+"/"+mDateTime+"/"+saveFullPath);
if(newdir2.mkdir())
System.out.println("********* 成功创建文件夹 2 层 **********/n");
Thread.sleep(100);
//这里取得fileName的扩展名,然后将fileName重新命名为一个随机数字
String fileExt = "";
if(fileName.indexOf(".jpg")>0||fileName.indexOf(".JPG")>0)
fileExt = ".jpg";
if(fileName.indexOf(".png")>0||fileName.indexOf(".PNG")>0)
fileExt = ".png";
if(fileName.indexOf(".gif")>0||fileName.indexOf(".GIF")>0)
fileExt = ".gif";
if(fileName.indexOf(".bmp")>0||fileName.indexOf(".BMP")>0)
fileExt = ".bmp";
System.out.println("文件扩展名:["+fileExt+"]/n");
String rand_fileName = Long.toString(System.currentTimeMillis());//+fileExt;
String last_fileName = rand_fileName+fileExt;
System.out.println("文件名:["+rand_fileName+"]/n");
System.out.println("文件原始名:["+fileName+"]/n");
File storefile = new File(storedir+"/"+mDateTime+"/"+saveFullPath+separator+last_fileName);
String picAddress = "http://xxx.xxx.xxx.xxx"+"/user/data/"+mDateTime+"/"+saveFullPath+separator+rand_fileName+".png";
setPicAddress(picAddress);//设置该图片存储地址
System.out.println("最后附件被保存到 : ["+storefile.toString()+"]/n");
//for(int i=0;storefile.exists();i++){
// storefile = new File(storedir+separator+fileName+i);
// }
BufferedOutputStream bos = null;
BufferedInputStream bis = null;
try{
bos = new BufferedOutputStream(new FileOutputStream(storefile));
bis = new BufferedInputStream(in);
int c;
while((c=bis.read()) != -1){
bos.write(c);
bos.flush();
}
}catch(Exception exception){
exception.printStackTrace();
throw new Exception("文件保存失败!");
}finally{
bos.close();
bis.close();
}
}
/*
* * 对发送者的邮件名称拆分
* 得到发送者的号码
*/
public static String getMobileNumber(String srcMailName){
//public String getMobileNumber(String srcMailName){
String sParm = srcMailName;
String temp = srcMailName;
if(temp == null || temp.equals("")){
temp="wrongmobile";
}
//if(temp.length()<=)
if(temp.indexOf("<")<0||temp.indexOf("@")<0)
{
temp="wrongmobile";
}
else{
temp = sParm.substring( sParm.indexOf("<")+1, sParm.indexOf("@") ); //sParm.length()
}
return temp;
}
/*
* * 对发送者的邮件名称拆分
* 得到发送者的邮箱地址,以便回复
*/
public static String getMobieleSender(String srcMailAddress){
//public String getMobieleSender(String srcMailAddress){
String sParm = srcMailAddress;
String temp = srcMailAddress;
if(temp == null || temp.equals("")){
temp="wrongaddress";
}
else{
temp = sParm.substring( sParm.indexOf("<")+1, sParm.indexOf(">") ); //sParm.length()
}
return temp;
}
/*
* 发送邮件
* * @param smtpHost
* * @param email
* * @throws MessagingException
*/
protected static void sendMail(String email,String returnID,String mid,boolean flag) throws MessagingException
//protected void sendMail(String email,String returnID,boolean flag) throws MessagingException
{
try{
//String mailID = returnID;//substring( sParm.indexOf("<")+1, sParm.indexOf(">") );
//mailID = mailID.substring( mailID.indexOf("0")+1, mailID.length() );
//System.out.println("***********************************************");
//System.out.println("邮件的ID=["+mailID+"]/n/n");
//System.out.println("***********************************************");
Properties props = System.getProperties();
props.put("mail.smtp.host", "mail.xxx.com.cn");//SMTP服务器
//props.put("mail.smtp.host", "mail.xxx.com");//SMTP服务器
props.put("mail.smtp.auth", "true");//发送邮件时是否需要验证身份
props.put("mail.mime.charset", "GB2312");//邮件正文的字符集
//String username = "xxxx"; //邮箱用户名
//String password = "xxxx";//邮箱密码
//String username = "xxxx"; //邮箱用户名
//String password = "xxxx";//邮箱密码
String username = "xxxx"; //邮箱用户名
String password = "xxxx";//邮箱密码
SMTPAuthenticator authenticator = new SMTPAuthenticator(username, password);//用户身份验证
//create a new Session object
Session session = Session.getInstance(props, authenticator);
session.setDebug(false); //是否打印调试信息的标记
//String from = "xxxx@xxx.com.cn"; //发送方邮箱
//String from = "xxxx@xxxx.com"; //发送方邮箱
String from = "xxxx@xxxx.com.cn"; //发送方邮箱
String to = email; //接收方邮箱
String subject = "谢谢您的参与!";//邮件标题
String body = "";
if(flag){
//body = "您好!感谢您的参与! 您的帖子编号为["+returnID+"],如要取消此次帖子发布,请回复本邮件并勿发送任何附件,系统将取消您的此次发帖!如要发布,请不要回复此邮件。";//邮件正文
body = "您好!感谢您的参与! 您的帖子编号为["+returnID+"],如果您要取消帖子的发布,请点击下面的连接http://xxx.xxx.xxx.xxx/user/usermanager.jsp?mid="+mid+"以取消。";//邮件正文
body+="<br/>+版权声明:xx拥有本站页面设计的版权;图片资料的版权由资料提供者拥有,功能性内容版权由本站拥有。
未经xxx的明确书面许可,任何人不得复制或在非本站所属的服务器上做镜像。传统媒体转载或任何其他形式的商业使用
均须事先与资料提供者或xxxx联系并征得许可。xxxx对于供稿者发布内容所引发的版权、署名权、肖像权纠纷应由供稿者
负责,本站不承担任何责任。供稿者所提供的内容仅代表其个人行为,与本站立场无关。对于在本站上传内容的用户,
其上传内容视为自愿提供,不另向作者付稿酬;并且该上传内容可能会被他人下载或使用,凡在本站上传内容的用户则
视为同意他人可在本站自由下载、使用该上传内容。上传内容中严禁发布或链接有关政治、色情、宗教、迷信等违法信
息,否则由该内容上传人承担直接或间接引起的刑事或民事法律责任。对于在本站公然发表猥亵、色情和反政府言论、
从事非法商业行为者等,本站有义务向公安部门提供该用户的相关资料。附则:1.本站服务器如因系统维护或升级而
需暂停服务时,将事先公告。若因硬件故障或其它不可抗力而导致暂停服务,于暂停服务期间造成的一切不便与损失,
本站不承担任何责任。2.本系统若遇不可抗拒外力影响而导致资料遗失时,本站不承担任何责任。3.用户在使用本站
期间有触犯各种法律的,一切后果自己负责,本站不承担任何责任。本站的最终解释权属xx所有。";
//body = "您好!感谢您的参与! 您的帖子编号为["+returnID+"],如果您要取消此次帖子的发布,请点击下面的连接http://xxx.xxx.xxx.xxx/user/subcancel.jsp?uid="+mailID+"以取消。";//邮件正文
}
else{
body = "您好!您已经成功取消了发布状态的信息,感谢您的参与!请不要回复此邮件。";//邮件正文
}
//create a new MimeMessage object (using the Session created above)
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from, "感谢您的参与!", "gb2312"));
InternetAddress[] address = new InternetAddress[] { new InternetAddress(to, "接收人姓名", "gb2312") };
message.setRecipients(Message.RecipientType.TO, address);
//如果不需要带附件,直接使用以下两行代码即可
message.setContent(body, "text/plain");
message.setText(body, "GB2312");
Transport.send(message);
System.out.println("------邮件发送到["+to+"]成功-------/n");
}catch(Throwable t){
System.out.println("-------邮件没有发送成功-------/n");
t.printStackTrace(System.out);
}
}
/*
* * PraseMimeMessage类测试
*/
public static void main(String args[])throws Exception{
//public void run() {
System.out.println("begin thread/n");
int timecount = 0;
while(true)
{
try{
//进行登陆邮箱收信、发信、插入数据库、反向查询等操作
String host = "pop.xxxx.com.cn";
String username ="xxxx";
String password ="xxxx";
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore("pop3");
store.connect(host, username, password);
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
Message message[] = folder.getMessages();
System.out.println("一共有: ["+message.length+"]条邮件/n");
PraseMimeMessage pmm = null;
for(int i=0;i<message.length;i++){
//每处理一封邮件, 1秒
Thread.sleep(1000);
pmm = new PraseMimeMessage((MimeMessage)message[i]);
int tmpcount = i+1;
System.out.println("**********开始处理第 : ["+tmpcount+"]条邮件**********/n");
pmm.getMailContent((Part)message[i]);
String whoSend = pmm.getFrom();
System.out.println("此邮件发送者信息["+whoSend+"]/n");
/// 这个地方对每一封信件作处理保存附件等 /
System.out.println("[设置邮件标记]/n");
Flags flags = new Flags(Flags.Flag.DELETED); //设置为删除
int msgNo = pmm.getMsgNum();//pmm.getMessageNumber(); ->((Message)mimeMessage).getMessageNumber();
folder.setFlags(msgNo, msgNo, flags, true); //设置邮件标记
//保存附件
//这个地方就应该对邮件的名字信息进行处理,如果没有得到以手机号码的邮件名
//就需要去 SOCKET API 接口 取,如果没有取道,就放弃该邮件的操作
// 如果没有取道,放弃该邮件的操作,包括存储附件,插入数据库记录等
// 如果取道了,接着进行 存储附件,对该用户的邮件纪录进行插入数据库处理
//得到发信者邮箱地址
System.out.println("[处理邮件流程开始]/n");
System.out.println("[******************************************]/n");
String sender = getMobieleSender(whoSend);
String mobileUser = getMobileNumber(whoSend);
//该邮件不重复的库表查询标示
String messageOnlyID;
//回复成功的MAILID编号
String returnMailID;
if(sender.equals("wrongaddress"))
System.out.println("未得到该用户的邮箱地址,无法回复!/n");
else{
String realUserMobile;
String tmpSender = sender;
String tmpSender2 = sender;
tmpSender2 = sender.substring( tmpSender.indexOf("<")+1, tmpSender.indexOf("@") );
System.out.println(tmpSender2+" 是该邮件名/n");
String idmobileuser = tmpSender2;
if( tmpSender2.length()!=11 || !(tmpSender2.substring(0,3)).equals("xxx") ){
System.out.println(tmpSender2+"邮件名非手机号码,调用接口获得/n");
aimcQuery queryMobile = new aimcQuery();
realUserMobile = queryMobile.aimcResult(tmpSender);
//realUserMobile = "not get";
System.out.println(tmpSender2+"邮件名非手机号码调用 接口获得 = ["+realUserMobile+"]/n");
if(realUserMobile.equals("not get")||realUserMobile.equals("")||realUserMobile==null){
System.out.println(tmpSender2+"最终没能获得正确邮件名,此邮件不做处理!/n");
}
if( realUserMobile.length()!=11 || !(realUserMobile.substring(0,3)).equals("133") ){
System.out.println(tmpSender2+"最终还是没能获得正确邮件名,此邮件不做处理!/n");
}
else{
//处理此邮件,包括存附件,调用数据库插入纪录等
//1。存储附件
//判断附件状态
//有附件
if(pmm.isContainAttach((Part)message[i]))
{
//pmm.setAttachPath(mobileUser);
pmm.setAttachPath(realUserMobile);
pmm.saveAttachMent((Part)message[i]);
//2。回复该邮件
//sendMail(realUserMobile+"@xxxx.com.cn");
//3。写入数据库
System.out.println("该纪录写入数据库,之前要取得该用户邮件信息/n");
System.out.println("[[ 用户邮件信息: ]]/n");
System.out.println("******用户手机号,作唯一标示:["+realUserMobile+"]/n");
System.out.println("******用户邮件发送日期:["+pmm.getSentDate()+"]/n");
System.out.println("******用户邮件标题,帖子标题:["+pmm.getSubject()+"]/n");
System.out.println("******用户邮件正文,帖子内容:["+pmm.getBodyText()+"]/n");
System.out.println("******用户邮箱名,辅助信息:["+sender+"]/n");
System.out.println("******用户附件地址1原图:["+pmm.getPicAddress()+"]/n");
System.out.println("******用户附件地址1修改图:[xxx]/n");
String title = new String((pmm.getSubject()).getBytes("GB2312"),"ISO8859_1");
String body = new String((pmm.getBodyText()).getBytes("GB2312"),"ISO8859_1");
//String title = pmm.getSubject();
//String body = pmm.getBodyText();
if(title.equals("")||title.equals(" ")||title==null||title.equals("null")||title.equals("NULL"))
{
System.out.println("title=["+title+"]/n");
title="标题未命名";
title = new String(title.getBytes("GB2312"),"ISO8859_1");
}
if(body.equals("")||body.equals("/r/n")||body.equals("/n")||body.equals("/r")||body==null||body.equals("null")||body.equals("NULL"))
{
System.out.println("body=["+body+"]/n");
body="没有具体的正文信息";
body = new String(body.getBytes("GB2312"),"ISO8859_1");
}
String address = new String(sender.getBytes("GB2312"),"ISO8859_1");
String url = new String((pmm.getPicAddress()).getBytes("GB2312"),"ISO8859_1");
messageOnlyID = Long.toString(System.currentTimeMillis());
mailDBinsert insertMail = new mailDBinsert();
boolean insertFlag = insertMail.insertDB(realUserMobile,pmm.getSentDate(),title,body,address,url,url,messageOnlyID);
if(insertFlag)
System.out.println("邮件信息插入数据库表成功/n");
else
System.out.println("邮件信息插入数据库表失败/n");
//停一下,再去取刚才插入的信息.....取消,因为这里面有不安全的因素
//只给用户一个连接,连上去之后再作判断
Thread.sleep(500);
//这里就不用去取id了
returnMailID = insertMail.getSendID(messageOnlyID);
//2。回复该邮件
sendMail(tmpSender2+"@xxxx.com.cn", returnMailID,messageOnlyID,true);//returnMailID,true);
//sendMail(realUserMobile+"@xxxx.com.cn", returnMailID,true);
insertMail.close();
}else{
//无附件,查询库,将属于该用户的手机号码的今天的所有信息置否
//先查询该用户发布信息按照手机号和今天的日期(realUserMobile)
//mailDBinsert insertMail = new mailDBinsert();
//if(insertMail.getUserPostFlag(realUserMobile,(pmm.getSentDate().substring(0,8)))){//如果按照手机号和日期查到了
//执行将用户置否状态,按照截取的日期和手机号码
// insertMail.updateUserFlag(realUserMobile,(pmm.getSentDate().substring(0,8)));
//发送邮件告诉用户已经置否
//sendMail(realUserMobile+"@xxxx.com.cn", "",false);
//}
//insertMail.close();
Thread.sleep(500);
}
}
}else{
//发邮件的账号是手机号码,无需调用查询接口,直接执行
System.out.println("发邮件的账号是手机号码["+sender+"]无需调用查询接口/n");
//1。存储附件
//有附件
if(pmm.isContainAttach((Part)message[i]))
{
pmm.setAttachPath(mobileUser);
pmm.saveAttachMent((Part)message[i]);
//2。回复该邮件
//sendMail(sender);
//3。写入数据库
System.out.println("该纪录写入数据库,之前要取得该用户邮件信息/n");
System.out.println("[[ 用户邮件信息: ]]/n");
System.out.println("******用户手机号,作唯一标示:["+tmpSender2+"]/n");
System.out.println("******用户邮件发送日期:["+pmm.getSentDate()+"]/n");
System.out.println("******用户邮件标题,帖子标题:["+pmm.getSubject()+"]/n");
System.out.println("******用户邮件正文,帖子内容:["+pmm.getBodyText()+"]/n");
System.out.println("******用户邮箱名,辅助信息:["+sender+"]/n");
System.out.println("******用户附件地址1原图:["+pmm.getPicAddress()+"]/n");
System.out.println("******用户附件地址1修改图:[xxx]/n");
String title = new String((pmm.getSubject()).getBytes("GB2312"),"ISO8859_1");
String body = new String((pmm.getBodyText()).getBytes("GB2312"),"ISO8859_1");
//String title = pmm.getSubject();
//String body = pmm.getBodyText();
if(title.equals("")||title.equals(" ")||title==null||title.equals("null")||title.equals("NULL"))
{
System.out.println("title=["+title+"]/n");
title="标题未命名";
title = new String(title.getBytes("GB2312"),"ISO8859_1");
}
if(body.equals("")||body.equals("/r/n")||body.equals("/n")||body.equals("/r")||body==null||body.equals("null")||body.equals("NULL"))
{
System.out.println("body=["+body+"]/n");
body="没有具体的正文信息";
body = new String(body.getBytes("GB2312"),"ISO8859_1");
}
String address = new String(sender.getBytes("GB2312"),"ISO8859_1");
String url = new String((pmm.getPicAddress()).getBytes("GB2312"),"ISO8859_1");
messageOnlyID = Long.toString(System.currentTimeMillis());
mailDBinsert insertMail = new mailDBinsert();
boolean insertFlag = insertMail.insertDB(tmpSender2,pmm.getSentDate(),title,body,address,url,url,messageOnlyID);
if(insertFlag)
System.out.println("邮件信息插入数据库表成功/n");
else
System.out.println("邮件信息插入数据库表失败/n");
//停一下,再去取刚才插入的信息,同上,不用得到id了
Thread.sleep(500);
returnMailID = insertMail.getSendID(messageOnlyID);
//回复该邮件
sendMail(sender+"@xxxx.com.cn", returnMailID,messageOnlyID,true);
//sendMail(sender,"0",true);//returnMailID,true);
insertMail.close();
}else{//无附件,查询库,将属于该用户的手机号码的今天的所有信息置否
//mailDBinsert insertMail = new mailDBinsert();
//if(insertMail.getUserPostFlag(tmpSender2,(pmm.getSentDate().substring(0,8)))){//如果按照手机号和日期查到了
//执行将用户置否状态,按照截取的日期和手机号码
//insertMail.updateUserFlag(tmpSender2,(pmm.getSentDate().substring(0,8)));
//发送邮件告诉用户已经置否
//sendMail(tmpSender2+"@xxxx.com.cn", " ",false);
//}
//insertMail.close();
Thread.sleep(500);
}
}
}
System.out.println("[处理邮件流程结束]/n");
System.out.println("[******************************************]/n");
System.out.println("*************第 ["+tmpcount+"] 个邮件已经读取处理并删除*************/n");
}
folder.close(true);
store.close();
timecount++;
}catch(Exception e){
continue;
}
//try {
System.out.println("times=["+timecount+"]/n");
Thread.sleep(1000 * 30);
//}
//catch (InterruptedException ex) {
// ex.printStackTrace();
//}
}
}
}