⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getmessage.java

📁 javamail的应用
💻 JAVA
字号:
public void run()
	{
		String propstr = "mail.pop3.rsetbeforequit";
		SimpleDateFormat df = new SimpleDateFormat("HH");
		while (bl_run)
		{
			try
			{
				String redate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime());
				Myprint("开始接收邮件......"+redate);
				if (df.format(Calendar.getInstance().getTime()).equals("23"))
				{
					new Thread(new Del_msgid(maildbcon, getday)).start();
				}

				ResultSet rs = maildbcon.f_getreset("select * from usermsg_list where u_effect='有效'");
				while (rs.next())
				{
					String m_username = null;
					try
					{
						String u_unit = rs.getString("u_unit");
						String u_name = rs.getString("u_name");
						String u_user = rs.getString("u_username");

						String host = rs.getString("u_pop");
						m_username = rs.getString("u_mailname");
						String m_password = rs.getString("u_mailword");

						Store store = null;
						if(host.equals("pop.gmail.com"))
						   store = mail_connect(propstr, host, m_username, m_password, "pop3",995);
						else
						   store = mail_connect(propstr, host, m_username, m_password, "pop3", 110);

					    Myprint("   " + m_username + "...");
						if (store == null)
						{
						   Myprint("连接 " + m_username+" 失败!");
						   continue;
						}
						Folder folder = store.getFolder("INBOX");
						folder.open(Folder.READ_WRITE);
						Message message[] = folder.getMessages();
						//if (message.length > 0)
						//{
							//Myprint("正在接收 " + u_name + "<" + m_username + "> " + message.length + "封新邮件!");
						//}
						for (int i = 0; i < message.length; i++)
						{
							if (this.get_message(message[i], u_unit, u_name, u_user))
								message[i].setFlag(Flags.Flag.DELETED, true);
						}
						//if(message.length>0)
						    //Myprint(u_name + "<" + m_username + "> 新邮件接收完毕!");
						folder.close(true);
						store.close();
					}
					catch (Exception ee)
					{
						Myprint(ee.toString() + " MailSer_Form中 邮件处理异常1");
					}
				}
				rs.close();
				redate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime());
				Myprint("邮件接收完毕......" + redate);
				Thread.sleep(time_sfjg * 1000);
			}
			catch (Exception ex)
			{
				Myprint(ex.toString() + " MailSer_Form中 邮件处理异常2");
			}
		}
	}

	//mailport 995或110
	public Store mail_connect(String property, String host, String username, String password, String xieyi,int mailport)
	{
		try
		{
			//Properties props = System.getProperties();
			Properties props = new Properties();
			if (mailport == 995)
			{
				Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
				final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
				props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);
				props.setProperty("mail.pop3.socketFactory.port", mailport + "");
				props.setProperty("mail.pop3.socketFactory.fallback", "false");
			}
			//props.setProperty("mail.pop3.socketFactory.fallback", "false");
			props.setProperty("mail.pop3.host", host);
			props.setProperty("mail.pop3.port", mailport + "");
			props.setProperty("mail.pop3.timeout", 30000+"");
			Session session = Session.getInstance(props, null);
			Store store = null;
			URLName urln = new URLName("pop3", host, mailport, null, username, password);
			store = session.getStore(urln);
			store.connect(host, username, password);
			return store;
		}
		catch (Exception ex)
		{
			//Myprint(ex.toString()+" 无法连接 " + username);
			return null;
		}
	}

	public boolean get_message(Message msg, String u_unit, String u_name, String u_user)
	{
		try
		{
			MailServer pmm = null;
			int i = 0;
			pmm = new MailServer((MimeMessage)msg, maildbcon);
			//标题
			String title = pmm.getSubject();
			//发送日期
			String sentdate = pmm.getSentDate();
			SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			java.util.Date dt_now = Calendar.getInstance().getTime();
			java.util.Date dt_sentdate = df.parse(sentdate);
			long l_days = (dt_now.getTime() - dt_sentdate.getTime()) / (1000 * 60 * 60 * 24);

			//删除超过期限的邮件
			if (isdelete)
			{
				if (deleteday >= l_days)
				{
					return true;//删除此邮件
				}
			}
			//不接收超过期限的邮件
			if (getday <= l_days)
			{
				return false;//不接收
			}
			//没有id的邮件,不下载
			String msgid = pmm.getMessageId();
			if (msgid == null)
			{
				Myprint(msgid);
				return false;
			}
			//已下载过该邮件不接收
			if (maildbcon.f_checkmsgid(msgid, sentdate))
				return false;

			//保存messageid
			maildbcon.f_execute("insert into msgid_list(msg_id,msg_date) values('"+msgid+"','"+sentdate+"')");
			Myprint(" " + u_name + " 1封新邮件!");

			//是否需要回执
			//boolean replysign = pmm.getReplySign();

			//是否有附件
			//boolean isattachment = pmm.isContainAttach((Part)msg);

			//发送人
			String sdperson = pmm.getFrom();

			//收件人
			String reperson = pmm.getMailAddress("to");

			//抄送人
			String csperson = pmm.getMailAddress("cc");

			//密送人
			//Myprint("Message "+i+" bcc: "+pmm.getMailAddress("bcc"));

			//解析邮件内容
			pmm.getMailContent((Part)msg);

			//邮件正文
			String bodystr = pmm.getBodyText();

			int noworderid = get_orderid();
			//收抄件人
			String mailid = u_unit + u_name + u_user + noworderid;

			//保存收件人
			String[] csstr = str_split(reperson, ",");
			for (int ii = 0; ii < csstr.length; ii++)
			{
				if (!csstr[ii].equals(""))
					f_save_smail(mailid, csstr[ii], "收件人", noworderid);
			}
			//保存抄件人
			csstr = str_split(csperson,",");
			for (int ii = 0; ii < csstr.length; ii++)
			{
				if (!csstr[ii].equals(""))
					f_save_smail(mailid, csstr[ii], "抄送人", noworderid);
			}
			//存放邮件
			f_save_mail(mailid, u_user, sdperson, reperson, csperson, title, bodystr, sentdate);
			//存放附件
			if (pmm.isContainAttach((Part)msg))
			{
				//pmm.setAttachPath("linshi");
				pmm.saveAttachMent((Part)msg, mailid);
			}
			String redate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime());
			Myprintlog("收到新邮件[收件人:"+reperson+"][发件人:"+sdperson+"] "+redate);
			//Myprint(u_name + " 新邮件接收完毕!");
			return false;
		}
		catch (Exception ex)
		{
			Myprint(ex.toString()+"保存邮件");
			return false;
		}
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -