csv 读取 邮件附件读取

csv 读取 

package com.wanwan.csv;


import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.charset.Charset;


import com.csvreader.CsvReader;
public class ExcelReader {

private static String path = "F:/os/受访域名_20160427-20160427.csv";
    public static void main(String[] args){  
    //生成CsvReader对象,以,为分隔符,GBK编码方式
        CsvReader r;
try {
r = new CsvReader(path, ',',Charset.forName("GBK")); //读取表头
       r.readHeaders();
       //逐条读取记录,直至读完
       while (r.readRecord()) {
           System.out.println(r.get("域名").trim()+"\t"+r.get("浏览量(PV)").trim()+"\t"+r.get("访客数(UV)").trim()+"\t"+r.get("IP数").trim()+"\t"+r.get("跳出率").trim()+"\t"+r.get("平均停留时长").trim());
       }
       r.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
       
    }  
}





 

pom
<dependency>
<groupId>net.sourceforge.javacsv</groupId>
<artifactId>javacsv</artifactId>
<version>2.0</version>
</dependency>




读取email附件

import java.io.DataInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.internet.MimeUtility;
 
public class getMailMsg {

	public static void main(String[] args) throws IOException {
		getMail();
	}

	public static void getMail() throws IOException {

		String host = "pop.163.com";
		String userName = "javahadoop@163.com";
		String passWord = "************";

		Properties props = new Properties();
		Session session = Session.getDefaultInstance(props);
		session.setDebug(false);
		try {
			System.out.println("receive...............................");
			Store store = session.getStore("pop3");
			store.connect(host, userName, passWord);// 验证
			Folder folder = store.getFolder("INBOX");// 取得收件文件夹
			folder.open(Folder.READ_WRITE);
			Message msg[] = folder.getMessages();
			System.out.println("邮件个数:" + msg.length);

		  	for (int i = 0; i < msg.length; i++) {
				Message message = msg[i];
				Address address[] = message.getFrom();
				StringBuffer from = new StringBuffer();
				// 此for循环是我项目测试用的
				for (int j = 0; j < address.length; j++) {
					if (j > 0) from.append(";");
					from.append(address[j].toString());
				}
				String emailfrom = from.toString();
				if(emailfrom.indexOf("qiaoyehui@yappam.com") > 0){ 
					System.out.println(message.getMessageNumber());
					System.out.println("来自:" + from.toString());
					System.out.println("大小:" + message.getSize());
					System.out.println("主题:" + message.getSubject());
					System.out.println("时间::" + message.getSentDate());
					
					 // 得到邮件的Multipart(内容总部件--【包涵附件】)
			        Multipart multipart = (Multipart) message.getContent();
			       
			        int count = multipart.getCount();    // 部件个数
			        
			        for(int x =0; x<count; x++) {
			        	 BodyPart part = multipart.getBodyPart(x);  // 单个部件     注意:单个部件有可能又为一个Multipart,层层嵌套
			        	 // 单个部件类型
			             String type = part.getContentType().split(";")[0];
			             if(type.contains("application/")) {        // 应用附件 (zip、xls、docx等)
			            	//下载附件
			            	 DataInputStream in = new DataInputStream(part.getInputStream());  // 打开附件的输入流
			            	 FileOutputStream out=null;
			            	 // 获取附件名
			            	  String fileName = part.getFileName();
			            	    // 文件名解码
			                  fileName = MimeUtility.decodeText(fileName);
			                  System.out.println("文件名解码后的名字:"+fileName);
			                  File file = new File("F:/os/" + fileName); // 查看是否有当前文件
			                  if(!file.exists()){
			                	  out = new FileOutputStream(file);
			                	  int data;
			                	  while((data=in.read()) != -1) {
			                          out.write(data);
			                      }
			                      System.out.println("附件:【" + fileName + "】下载完毕,保存路径为:" + file.getPath());
			                  }
			                  // 关流
			                  if(in != null) {
			                      in.close();
			                  }
			                  if(out != null) {
			                      out.close();
			                  }
			             }
			        }
					System.out .println("===================================================");	
				}
			} 
			folder.close(true);// 设置关闭
			store.close();
			System.out.println("receive over............................");
		} catch (NoSuchProviderException e) {
			e.printStackTrace();
		} catch (MessagingException e) {
			e.printStackTrace();
		}
	}
	
}



import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Enumeration;
import java.util.List;
import java.util.Properties;

import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.internet.MimeUtility;

import com.csvreader.CsvReader;
 

 

public class EmailGetAttachments {
	
	
	private final String HOST = "pop.163.com";			//服务器
	private final String USERNAME ="javahadoop@163.com";//用户名
	private final String PASSWORD = "*****************";//用户密码   一般为授权码
	private final String CONFIG_PATH = "F:/os/";		//文件保存路径
	private final String WEBSITES = "F:/os/";	
	private final String MAINFROM ="autopost@baidu.com";
	
	/**
	 * 得到邮箱附件
	 * @param emailFromAddress   发件人 	               例如:autopost@baidu.com
	 * @param emailDates		    发件人发件日期       例如:2016-04-05
	 * @return	filePath		    附件地址
	 * @throws MessagingException 
	 * @throws IOException 
	 */
	public List<String> getZipAttachments(String emailFromAddress ,List<String> emailDates) throws MessagingException, IOException{
		
		List<String> filePath =new  ArrayList<String>();			//解压后文件的路径
		
		Properties props = new Properties();
		Session session = Session.getDefaultInstance(props);
		session.setDebug(false);
		Store store = session.getStore("pop3");
		store.connect(HOST, USERNAME, PASSWORD);// 验证
		Folder folder = store.getFolder("INBOX");// 取得收件文件夹
		folder.open(Folder.READ_WRITE);
		Message msg[] = folder.getMessages(); 
		for (Message message : msg) {
			Address address[] = message.getFrom();
			StringBuffer from = new StringBuffer();
			for (int j = 0; j < address.length; j++) {
				if (j > 0)from.append(";");
				from.append(address[j].toString());
			}
			String mailComeaddress = from.toString();//判断发件人
			
			if(mailComeaddress.indexOf(emailFromAddress) >= 0){
				for (String emailDatetime :emailDates) {
					if(dateToString(message.getSentDate(),"yyyy-MM-dd").equals(emailDatetime)){
						Multipart multipart = (Multipart) message.getContent();	
						int count = multipart.getCount(); // 部件个数
						for (int x = 0; x < count; x++) {
							BodyPart part = multipart.getBodyPart(x); // 单个部件
							String type = part.getContentType().split(";")[0]; // 单个部件类型
							if (type.contains("application/")) {
								DataInputStream in = new DataInputStream(part.getInputStream()); // 打开附件的输入流
								FileOutputStream out = null;
								String fileName = part.getFileName(); // 获取附件名
								fileName = MimeUtility.decodeText(fileName); // 文件名解码
								String path = CONFIG_PATH + "baidutongji/";
								File file = new File(path + fileName); // 查看是否有当前文件有删掉
								if(file.exists())file.delete();
								out = new FileOutputStream(file);
								int data;
								while ((data = in.read()) != -1){
									out.write(data);
								}
								// 关流
								if (in != null)in.close();
								if (out != null)out.close();
								filePath.add(path+fileName);
							}
							
						}
					}
					
				} 
				
			}
			
		}
		
		return filePath;
		
	}
	
	/**
	 *  解压文件    是否删除原有压缩文件
	 * @param filePath 压缩文件地址
	 * @param bool	        是否删除原有文件压缩文件
	 * @return
	 */
	public  boolean unZip(String filePath,boolean bool) {
		File zipFile = new File(filePath);
		if(zipFile.exists()){
			org.apache.tools.zip.ZipFile zip = null;
			String unZipPath = zipFile.getParent();
			try {
				zip = new org.apache.tools.zip.ZipFile(zipFile, "GBK");
				Enumeration<org.apache.tools.zip.ZipEntry> en = zip.getEntries();
				org.apache.tools.zip.ZipEntry entry = null;
				byte[] buffer = new byte[8192];
				int length = -1;
				InputStream input = null;
				BufferedOutputStream bos = null;
				File file = null;
				while (en.hasMoreElements()) {
					entry = (org.apache.tools.zip.ZipEntry) en.nextElement();
					if (entry.isDirectory()) {
						continue;
					}
	
					input = zip.getInputStream(entry);
					file = new File(unZipPath, entry.getName());
					if (!file.getParentFile().exists()) {
						file.getParentFile().mkdirs();
					}
					bos = new BufferedOutputStream(new FileOutputStream(file));
	
					while (true) {
						length = input.read(buffer);
						if (length == -1)
							break;
						bos.write(buffer, 0, length);
					}
					bos.close();
					input.close();
					if(bool){
						zipFile.delete();
					}
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return false;
	}
	
	
	
	/**
	 * 日期格式化
	 * @param date
	 * @param format
	 * @return
	 */
	private String dateToString(Date date,String format){
		if(date == null){
			return null;
		}
		SimpleDateFormat dateFormater = new SimpleDateFormat(format);
		return dateFormater.format(date) ;
	}
	
	/**
	 * csv文件
	 * @param csvpath 文件路径
	 * @return
	 */
	private String getDateFromCsv(String csvpath){
		File file = new File(csvpath);
		if(file.exists()){
			CsvReader r;
			try {
				r = new CsvReader(csvpath, ',', Charset.forName("GBK"));
				while (r.readRecord()) {
					//r.get(0)
					//r.get("域名")
				}
			} catch (IOException e) {
				e.printStackTrace();
			}  
			return csvpath;
		}else{
			return null;
			
		}
		
	}
	

}



已标记关键词 清除标记
相关推荐
程序员的必经之路! 【限时优惠】 现在下单,还享四重好礼: 1、教学课件免费下载 2、课程案例代码免费下载 3、专属VIP学员群免费答疑 4、下单还送800元编程大礼包 【超实用课程内容】  根据《2019-2020年中国开发者调查报告》显示,超83%的开发者都在使用MySQL数据库。使用量大同时,掌握MySQL早已是运维、DBA的必备技能,甚至部分IT开发岗位也要求对数据库使用和原理有深入的了解和掌握。 学习编程,你可能会犹豫选择 C++ 还是 Java;入门数据科学,你可能会纠结于选择 Python 还是 R;但无论如何, MySQL 都是 IT 从业人员不可或缺的技能!   套餐中一共包含2门MySQL数据库必学的核心课程(共98课时)   课程1:《MySQL数据库从入门到实战应用》   课程2:《高性能MySQL实战课》   【哪些人适合学习这门课程?】  1)平时只接触了语言基础,并未学习任何数据库知识的人;  2)对MySQL掌握程度薄弱的人,课程可以让你更好发挥MySQL最佳性能; 3)想修炼更好的MySQL内功,工作中遇到高并发场景可以游刃有余; 4)被面试官打破沙锅问到底的问题问到怀疑人生的应聘者。 【课程主要讲哪些内容?】 课程一:《MySQL数据库从入门到实战应用》 主要从基础篇,SQL语言篇、MySQL进阶篇三个角度展开讲解,帮助大家更加高效的管理MySQL数据库。 课程二:《高性能MySQL实战课》主要从高可用篇、MySQL8.0新特性篇,性能优化篇,面试篇四个角度展开讲解,帮助大家发挥MySQL的最佳性能的优化方法,掌握如何处理海量业务数据和高并发请求 【你能收获到什么?】  1.基础再提高,针对MySQL核心知识点学透,用对; 2.能力再提高,日常工作中的代码换新貌,不怕问题; 3.面试再加分,巴不得面试官打破沙锅问到底,竞争力MAX。 【课程如何观看?】  1、登录CSDN学院 APP 在我的课程中进行学习; 2、移动端:CSDN 学院APP(注意不是CSDN APP哦)  本课程为录播课,课程永久有效观看时长 【资料开放】 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化。  下载方式:电脑登录课程观看页面,点击右侧课件,可进行课程资料的打包下载。
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页