有时我们用mr、spark或其他大数据工具处理完的数据需要发送邮件,并且以excel附件的形式,excel中有多个sheet,我用java写了一个可复用的类,大家用到时候可以参考:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.util.ByteArrayDataSource;
public class SendmailExcel {
public static void main(String[] args) throws FileNotFoundException {
// TODO Auto-generated method stub
}
/*from_mail是发送者邮箱
* from_mail_password 是发送者邮箱密码
* from_mail_smtpserver 是发送者邮箱的smtp服务器
* source_dir 是读取到excel中文件的目录位置
* file_list 是每个sheet所对应的文件名称列表,用逗号分隔
* start_line_num 数据文件从第几行开始读取
* header_list 是所有sheet的header字段列表,用逗号分隔