java-企业邮箱批量发送工具
来源:互联网 发布:土耳其修宪 知乎 编辑:程序博客网 时间:2024/06/01 09:08
对b1按钮进行监听Frame f = new Frame("邮件群发工具");f.setLayout(new GridLayout(5, 2));Dimension screensize = Toolkit.getDefaultToolkit().getScreenSize();Dimension framesize = f.getSize();//用于整个框居中int x = (int) screensize.getWidth() / 2 - 250;int y = (int) screensize.getHeight() / 2 - 200;f.setLocation(x, y);final TextField id = new TextField(20);final TextField pw = new TextField(20);pw.setEchoChar('*');f.add(new Label("邮箱名(xxx@gotop.net.cn):", Label.CENTER));f.add(id);f.add(new Label("密码(默认gotop@123):", Label.CENTER));f.add(pw);final TextField pwdField = new TextField();pwdField.setEditable(false);f.add(pwdField);Button pwd = new Button("选择文件路径");f.add(pwd);Button b1 = new Button("确定");
PS:由于时间赶,工作内容多,我忽律了校验。可以根据自己需要添加相应校验。采用 try ..cach获取到异常使用JoptionPane进行抛出错误提示是最有效的办法。// 确定监听
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
String aString = pwdField.getText().replace("\\", "/");
//System.out.println(aString+"=====");
Youhua aYouhua = new Youhua();
if (aYouhua.run("xx科技有限公司", id.getText(),pw.getText(), aString)==1) {
JOptionPane.showMessageDialog(null, "发送成功");
}
} catch (Exception e1) {
// TODO Auto-generated catch block
JOptionPane.showMessageDialog(null, "账号密码错误或是excel文件下有空白内容或选择的文件不是excel文件");
}
//}
}
});
退出// 选择文件监听
pwd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 打开文件夹选择器
JFileChooser jfc = new JFileChooser();
jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
jfc.showDialog(new JLabel(), "选择");
File file = jfc.getSelectedFile();
if (file.isDirectory()) {
System.out.println("文件夹:" + file.getAbsolutePath());
} else if (file.isFile()) {
System.out.println("文件:" + file.getAbsolutePath());
// 将文件路径显示在text中
pwdField.setText(file.getAbsolutePath());
}
System.out.println(jfc.getSelectedFile().getName());
}
});
System.exit(0); 是最基本的关闭窗口方法。不要采用setVisibled这个是隐藏,会导致进程仍在。// 退出监听
b2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
这里采用获取总列数的办法,进行嵌套循环,可以使得邮件内容列数增长。那么最后一列是邮箱地址。样式如下:FileInputStream fileInputStream = new FileInputStream("C:/Users/Administrator/Desktop/工资明细邮件发送工具/邮件发送工具/2017年1月份工资明细发放.xls");
POIFSFileSystem fs =new POIFSFileSystem(fileInputStream);
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
HSSFCellStyle textStyle = wb.createCellStyle();
HSSFDataFormat format = wb.createDataFormat();
textStyle.setDataFormat(format.getFormat("@"));//设置单元格格式为"文本"
StringBuffer tableheader = new StringBuffer();
//文件的行数
int rows = sheet.getPhysicalNumberOfRows();
HSSFCell cell = null;//临时存放cell//获取总列数
int columnNum=sheet.getRow(0).getPhysicalNumberOfCells();for( int i = 1;i < rows; i++){
HSSFRow row = sheet.getRow(i);
StringBuffer theMessage = new StringBuffer();
//如果整行为空,跳过
if(row == null){
continue;
}
//第1列 客户姓名
theMessage.append("<tr>");
for (int j = 0; j < (columnNum-1); j++) {
cell = row.getCell(j);
if (cell!=null) {
tempString = getCellValue(cell).trim();
theMessage.append("<td>"+tempString+"</td>");
}
}
theMessage.append("</tr>");
//获取邮箱信息
cell = row.getCell((columnNum-1));//发送邮件
sendEmail(getCellValue(cell).trim(),"邮件测试","<table border=2>"+tableheader.toString()+theMessage.toString()+"</table>");//收件人
我提供的核心代码,完全可以发送信息,那么如果真的使用,建议把邮箱开关先打开,再里面做循环。而不要写死这个邮箱方法,不然对于运行效率会很慢。这个开销问题需要自己去研究下,要注意的是msg.setContent(body, "text/html;charset=gb2312");如果邮件要有html格式要记得加这个,比如字体颜色,表格方框什么的。//端口号
static int port = 25;
//公司的服务器端口号 或则 其他的。
static String server = "smtp.qq.com";//邮件服务器mail.cpip.net.cn
static String from = "饶为";//发送者,显示的发件人名字
static String user = "1973267302@qq.com";//发送者邮箱地址
static String password = "";//密码
public static void sendEmail(String email, String subject, String body) throws UnsupportedEncodingException {
try {
Properties props = new Properties();
props.put("mail.smtp.host", server);
props.put("mail.smtp.port", String.valueOf(port));
props.put("mail.smtp.auth", "true");
Transport transport = null;
Session session = Session.getDefaultInstance(props, null);
transport = session.getTransport("smtp");
transport.connect(server, user, password);
MimeMessage msg = new MimeMessage(session);
msg.setSentDate(new Date());
//设置后出现html格式,有了这个设置才能使用html格式。
msg.setContent(body, "text/html;charset=gb2312");
InternetAddress fromAddress = new InternetAddress(user,from,"UTF-8");
msg.setFrom(fromAddress);
InternetAddress[] toAddress = new InternetAddress[1];
toAddress[0] = new InternetAddress(email);
msg.setRecipients(Message.RecipientType.TO, toAddress);
msg.setSubject(subject, "UTF-8");
// msg.setText(body, "UTF-8");
msg.saveChanges();
transport.sendMessage(msg, msg.getAllRecipients());
} catch (NoSuchProviderException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
}
- java-企业邮箱批量发送工具
- Java + 腾讯企业邮箱 + javamail + SSL 发送邮件
- Java + 腾讯企业邮箱 + javamail发送邮件
- 配置企业邮箱无法发送邮件
- JAVA mail应用 - 用JAVA SWING写的邮件批量发送工具
- java邮件发送工具
- 利用腾讯企业邮箱自动发送邮件
- 腾讯企业邮箱不能发送短信认证
- javax.mail 调用企业邮箱发送邮件
- GITLAB email不发送腾讯企业邮箱解决方案
- django使用QQ企业邮箱发送邮件
- 基于phpmailer的企业邮箱发送邮件
- 批量反编译工具(java)
- java 批量重命名工具类
- 企业邮箱
- 简单的java附件批量发送系统
- Java实现电子邮件的批量发送
- QQ企业邮箱使用Java代码发送失败,错误DEBUG SMTP: Attempt to authenticate using mechanisms: LOGIN PLAIN DIGEST-MD5 NT
- JFinal maven demo报错java.lang.NoClassDefFoundError WARN:oejuc.AbstractLifeCycle:FAILED jsp
- getActivity()空指针解决方法
- 360 排版乱的问题
- JAVA获取时间戳,哪个更快
- JDBC批处理导致weblogic超时
- java-企业邮箱批量发送工具
- SpringMVC+easyUI生成机构树
- Tinkoff B. Igor and his way to work(BFS)
- 引用外部包的可执行jar,如何导出
- 读取ZIP中的txt文件
- JDBC批处理-大量数据插入数据库减少插入时间
- TCP协议的三次握手和四次分手的大白菜
- js-年月日期选择工具
- maven安装与配置