织梦怎么在本地编辑多个网站,设计logo网站有哪些免费,wordpress如何使用cdn,文章 wordpress需要用到的jar包1.freemarker-2.3.19.jar2.javax.mail.jar3.javax.activation.jar本次测试邮箱是腾讯企业邮箱#xff0c;其他未经测试。做这个功能是因为我女朋友每个月都需要手动去发几十个人的考勤、考核邮件#xff0c;实在是太过重复的做一件很乏味的事情#xff0c;所…需要用到的jar包1.freemarker-2.3.19.jar2.javax.mail.jar3.javax.activation.jar本次测试邮箱是腾讯企业邮箱其他未经测试。做这个功能是因为我女朋友每个月都需要手动去发几十个人的考勤、考核邮件实在是太过重复的做一件很乏味的事情所以才有了这个程序不过界面是使用的控制台简单一点。核心代码展示/*** 发送邮件* author hezhao* Time 2017年3月13日 上午11:25:15*/public void send() {System.out.println(正在发送邮件至:::[to] ...);// 设置邮件服务器Properties prop System.getProperties();prop.put(mail.smtp.host, stmpmailServer);prop.put(mail.smtp.auth, true);prop.put(mail.transport.protocol, this.send);prop.put(mail.smtp.socketFactory.class,javax.net.ssl.SSLSocketFactory);prop.put(mail.smtp.socketFactory.port, this.smtpport);prop.put(mail.smtp.socketFactory.fallback, false);// 使用SSL企业邮箱必需// 开启安全协议MailSSLSocketFactory sf null;try {sf new MailSSLSocketFactory();sf.setTrustAllHosts(true);} catch (GeneralSecurityException e1) {e1.printStackTrace();}prop.put(mail.smtp.starttls.enable, true);prop.put(mail.smtp.ssl.socketFactory, sf);// 获取Session对象Session session Session.getDefaultInstance(prop, new Authenticator() {// 此访求返回用户和密码的对象Overrideprotected PasswordAuthentication getPasswordAuthentication() {PasswordAuthentication pa new PasswordAuthentication(username,password);return pa;}});// 设置session的调试模式发布时取消session.setDebug(true);try {// 封装Message对象Message message new MimeMessage(session);// message.setFrom(new InternetAddress(from,from)); //设置发件人// 设置自定义发件人昵称String nick_from ;try {nick_from javax.mail.internet.MimeUtility.encodeText(this.nickname_from);} catch (UnsupportedEncodingException e) {e.printStackTrace();}message.setFrom(new InternetAddress(nick_from ));// 设置自定义收件人昵称String nick_to ;try {nick_to javax.mail.internet.MimeUtility.encodeText(this.nickname_to);} catch (UnsupportedEncodingException e) {e.printStackTrace();}message.setRecipient(Message.RecipientType.TO, new InternetAddress(nick_to ));// 设置收件人message.setSubject(mailSubject);// 设置主题message.setContent(mailContent, text/html;charsetutf8);// 设置内容(设置字符集处理乱码问题)message.setSentDate(new Date());// 设置日期// 发送Transport.send(message);System.out.println(发送成功...);//保存邮件到发件箱saveEmailToSentMailFolder(message);if(mailSubject.contains(考勤)){FileLog.writeLog(this.nickname_to 发送成功);}else{FileLog.writeLog(this.nickname_to 发送成功);}} catch (Exception e) {e.printStackTrace();System.out.println(发送邮件异常...);if(mailSubject.contains(考勤)){FileLog.writeLog(this.nickname_to 发送失败);}else{FileLog.writeLog(this.nickname_to 发送失败);}}}保存至发件箱/*** 获取用户的发件箱文件夹** param message* 信息* param store* 存储* return* throws IOException* throws MessagingException*/private Folder getSentMailFolder(Message message, Store store)throws IOException, MessagingException {// 准备连接服务器的会话信息Properties props new Properties();props.setProperty(mail.store.protocol, get);props.setProperty(mail.imap.host, imapmailServer);props.setProperty(mail.imap.port, 143);/** QQ邮箱需要建立ssl连接 */props.setProperty(mail.imap.socketFactory.class,javax.net.ssl.SSLSocketFactory);props.setProperty(mail.imap.socketFactory.fallback, false);props.setProperty(mail.imap.starttls.enable, true);props.setProperty(mail.imap.socketFactory.port, imapport);// 创建Session实例对象Session session Session.getInstance(props);URLName urln new URLName(get, imapmailServer, 143, null,username, password);// 创建IMAP协议的Store对象store session.getStore(urln);store.connect();// 获得发件箱Folder folder store.getFolder(Sent Messages);// 以读写模式打开发件箱folder.open(Folder.READ_WRITE);return folder;}/*** 保存邮件到发件箱** param message* 邮件信息*/private void saveEmailToSentMailFolder(Message message) {Store store null;Folder sentFolder null;try {sentFolder getSentMailFolder(message, store);message.setFlag(Flag.SEEN, true); // 设置已读标志sentFolder.appendMessages(new Message[] { message });System.out.println(已保存到发件箱...);} catch (Exception e) {e.printStackTrace();} finally {// 判断发件文件夹是否打开如果打开则将其关闭if (sentFolder ! null sentFolder.isOpen()) {try {sentFolder.close(true);} catch (MessagingException e) {e.printStackTrace();}}// 判断邮箱存储是否打开如果打开则将其关闭if (store ! null store.isConnected()) {try {store.close();} catch (MessagingException e) {e.printStackTrace();}}}}获取模板内容/*** 得到模板内容* author hezhao* Time 2017年3月13日 下午1:01:08* param fileName* param map* return*/public String getMailText(String fileName,Map map){String htmlText null;try {Template template config.getTemplate(fileName);htmlText FreeMarkerTemplateUtils.processTemplateIntoString(template, map);} catch (IOException e) {e.printStackTrace();} catch (TemplateException e) {e.printStackTrace();}return htmlText;}替换模板内容FreemarkerUtil freemarkerUtil null;try {freemarkerUtil (FreemarkerUtil) context.getBean(freemarkerUtil);} catch (Exception e) {System.out.println(出现异常);e.printStackTrace();}String mailContent freemarkerUtil.getMailText(fileName, map);HTML模板(这个还是景洲帮我实现的)table{border-collapse:collapse; text-align: center;font-size:12px;}.yellow{background: #FFFF00;}.blod{font-weight: bold;}${title}序号部门姓名入职时间考勤结果汇总 备注正常出勤请假小时迟到分钟迟到扣款旷工天数休年假天数${no}${dept}${name}${intotime}${workday}${outhour}${deletemin}${deletemoney}${kg}${year}${remark}${bottom}