java发邮件(word2003)
word文档怎么发邮件
word文档怎么发邮件
word文档怎么发邮件
如何用word发邮件,word文档怎么发邮件word文档怎么发邮件?
如何用word发邮件?下面以word2003文档发邮件为例,演示给各位朋友看,更方便理解!希望能够帮助到大家!
怎么用word2003文档发邮件?
Word2003:文件→ 发送→ 邮件接收人
然后把word2003文档存档,再开QQ或别的如126邮箱来就可以发的。
1.首先打开WORD文档,选择“文件”——“新建”,在WORD右方选择“电子邮件”:
2.选择后,会弹出一个文档,在此填写相关信息:
3.写好后,直接点击“发送”即可。
是不是很简单咧!赶紧去动手试试看吧!
操作总结:当用户想发一封电子邮件时(在确认计算机已经正常连接Internet的前提下),单击“文件”菜单栏,选择“新建”命令,在“常用”选项卡中选择“电子邮件正文”,单击“确定”。
这时会弹出电子邮件编辑界面,文档默认名字为“无标题的邮件”,在“收件人”后的空格中填对方的邮件地址,如果邮件不止想发给一个人,可以在“收件人“或“抄送“栏里添上其他人的'电子邮件地址,注意每两个地址间用逗号隔开。
在主题栏上填入邮件的标题,接下来就可以在主题下的空白文档处编写电子邮件正文了,写完后单击“收件人”上方的“发送”按钮,你的E--mail就发送出去了。
【word文档怎么发邮件】。
java 邮件发送失败处理方案
java 邮件发送失败处理方案作为一名职业写手,我将为您详细阐述Java邮件发送失败的处理方案。
在实际应用中,邮件发送失败可能会给工作和生活带来诸多不便。
以下我们将分析失败原因及相应的解决方案,帮助您轻松应对邮件发送问题。
一、问题概述邮件发送失败,通常表现为邮件无法送达收件人手中。
这种情况可能是由多种原因导致的,我们需要针对具体原因进行排查和处理。
二、失败原因分析1.邮件服务器问题:邮件服务器出现故障或维护,可能导致邮件发送失败。
2.网络连接问题:网络不稳定或连接中断,会影响邮件的正常发送。
3.邮件账号问题:发件人或收件人的邮件账号设置有误,如密码错误、邮箱空间不足等。
4.邮件内容问题:邮件中含有敏感词汇或超大附件,可能导致邮件被拦截或拒绝。
5.发送频率问题:短时间内发送大量邮件,可能会触发邮件服务器的防垃圾邮件机制,导致发送失败。
三、解决方案1.检查邮件服务器:确认邮件服务器是否正常运行,如有问题,等待服务器恢复正常或联系运维人员进行处理。
2.检查网络连接:确保网络稳定且连接正常,修复网络故障。
3.检查邮件账号信息:核实发件人及收件人的邮件账号、密码等信息是否正确,清理邮箱空间,确保邮箱正常使用。
4.优化邮件内容:避免使用敏感词汇,减小附件大小,保证邮件内容合规。
5.调整发送频率:避免短时间内大量发送邮件,可采用批量发送或分批发送的方式。
6.使用第三方邮件发送服务:考虑使用第三方邮件发送平台,如SendGrid、Mailgun等,提高邮件发送成功率。
四、失败处理流程当发现邮件发送失败时,请按照以下流程进行处理:1.分析失败原因:根据错误提示或邮件服务器日志,初步判断失败原因。
2.排查问题:针对原因进行分析,逐一排查相关因素。
3.解决问题:找到问题后,及时采取相应措施进行解决。
4.测试发送:解决问题后,重新发送邮件并观察发送结果。
5.优化方案:总结失败经验,优化邮件发送方案,预防类似问题再次发生。
word2003邮件合并及域代码控制
word2003邮件合并及域代码控制word2003邮件合并中,当数据有小数点时,合并后,数据变成无限小数,例如2.35会变成2.3499999999999999999;5.6会变成5.5999999999999。
回复:是office系统在数据传输和转换过程中不可避免的误差。
这只能通过设置域格式来消除,比如将模板中插入的域(涉及到小数点的)切换到域代码格式后,进行格式控制。
例如,域{MERGEFIELD 价格\# $#,##0.00 } 中的开关\# $#,##0.00 可使结果显示为“$4,455.70”。
如果域的结果不是数字,则该开关不起作用。
详情请见/zh-cn/help/HP0518********.aspx.指定结果中必须显示的数字位数。
如果在结果中该位置没有数字,则Word 显示0。
例如,{ = 4 + 5 \# 00.00 } 显示为“09.00”。
#指定结果中必须显示的数字位数。
如果在结果中该位置没有数字,则Word 显示空格。
例如,{ = 9 + 6 \# $### } 显示为“$ 15”。
x放弃占位符“x”左边的数字。
如果占位符在小数点右边,Word 会将结果舍入到该位。
例如:{ = 111053 + 111439 \# x## } 显示为“492”。
{ = 1/8 \# 0.00x } 显示为“0.125”。
{ = 3/4 \# .x } 显示为“.8”。
. (小数点)确定小数点的位置。
例如,{ = SUM(ABOVE) \# $###.00 } 显示为“$495.47”。
注释请使用在Microsoft Windows“控制面板”中区域设置中所指定的小数点符号。
,(数字分组符)每三个数字间用此分隔符分开。
例如,{ = NetProfit \# $#,###,### } 显示为“$2,456,800”。
注释请使用在Microsoft Windows“控制面板”中区域设置中所指定的数字分组符号。
javamail收发邮件(带附件,正文带图)
1.邮件1.1 邮件组成部分如果是新邮件就获取,并解析它;邮件是由邮件头和邮件体组成,在邮件头中主要包含了收件人、发件人、主题等等基础信息。
而邮件体中就包括了邮件的正文和附件等内容信息。
下图就是pop3协议下,邮件的大致内容。
1.2 发送邮件(带附件、正文带图片)QQ邮箱为例:需要QQ账号和QQ登录第三方客户端时,密码框的“授权码”(相当于密码)授权码如下获取:代码如下:public class JavaMailboxAttachment {private MimeMessage message;private Session session;private String mailHost = "";private String mailAuth = "";private String mailPort = "";private String sender_username = "";private String sender_password = "";//定义一个Properties 用于存放信息private Properties properties = new Properties();//-------------------------------发信箱---------------------------------------------public JavaMailboxAttachment(String email_type) {try {properties.put("mail.smtp.host",""); //发送邮件服务器//端口号,QQ邮箱给出了两个端口,但是另一个我一直使用不了,所以就给出这一个587properties.put("mail.smtp.port", "587"); //发送邮件端口号properties.put("mail.smtp.auth", "true");// 此处填写你的账号properties.put("er", "xxxxxxxxx@");// 此处的密码就是前面说的16位STMP授权码properties.put("mail.password", "xxxxxxxxxxxxxxxx");this.mailHost = properties.getProperty("mail.smtp.host");this.mailAuth = properties.getProperty("mail.smtp.auth");this.mailPort = properties.getProperty("mail.smtp.port");this.sender_username = properties.getProperty("er");this.sender_password = properties.getProperty("mail.password");} catch (Exception e) {e.printStackTrace();}// 构建授权信息,用于进行SMTP进行身份验证Authenticator authenticator = new Authenticator() {protected PasswordAuthentication getPasswordAuthentication() {// 用户名、密码String userName = properties.getProperty("er");String password = properties.getProperty("mail.password");return new PasswordAuthentication(userName, password);}};session = Session.getInstance(properties,authenticator); //用户验证message = new MimeMessage(session); //将验证成功的session信息,创建一个message 对象。
Java实现outlook服务的邮件发送
Java实现outlook服务的邮件发送依赖<!-- https:///artifact/javax.mail/mail --><dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version></dependency>POP3接收String USER_NAME ="*****@";String PASSWORD = "******";public static void receivepop3Email() {String host = "";// change accordinglyString mailStoreType = "pop3";String popPort = "995";Store store = null;// 配置连接信息Properties properties = new Properties();properties.put("mail.store.protocol", mailStoreType);properties.put("mail.pop3.host", host);properties.put("mail.pop3.port", popPort);properties.put("mail.pop3.starttls.enable", "true");try {Session emailSession = Session.getDefaultInstance(properties);//打开调式模式,可看到邮件发送过程中各步骤的详细信息// emailSession.setDebug(true);store = emailSession.getStore("pop3s");store.connect(host, USER_NAME, PASSWORD);Folder emailFolder = store.getFolder("INBOX");emailFolder.open(Folder.READ_ONLY);Message[] messages = emailFolder.getMessages();for (Message msg:messages) {System.out.println(msg.getSubject());}emailFolder.close(true);store.close();} catch (NoSuchProviderException e) {e.printStackTrace();} catch (MessagingException e) {e.printStackTrace();}finally {if(null != store){try {store.close();} catch (MessagingException e) {e.printStackTrace();}}}}IMAP接收String USER_NAME ="*****@";String PASSWORD = "******";public static void receiveimapEmail() {String host = "";// change accordinglyString mailStoreType = "imap";String popPort = "993";try {// 配置连接信息Properties properties = new Properties();properties.put("mail.store.protocol", mailStoreType);properties.put("mail.imap.host", host);properties.put("mail.imap.port", popPort);properties.put("mail.imap.starttls.enable", "true");Session emailSession = Session.getDefaultInstance(properties);// emailSession.setDebug(true);Store store = emailSession.getStore("imaps");store.connect(host, USER_NAME, PASSWORD);Folder emailFolder = store.getFolder("INBOX");emailFolder.open(Folder.READ_ONLY);Message[] messages = emailFolder.getMessages();for (Message msg:messages) {System.out.println(msg.getSubject());}emailFolder.close(true);store.close();} catch (NoSuchProviderException e) {e.printStackTrace();} catch (MessagingException e) {e.printStackTrace();}}SMTP发送static String USER_NAME ="****@";static String PASSWORD = "****";public static boolean sendSMTPMail(String to, String text, String title) {String host = "";String mailStoreType = "smtp";String popPort = "587";final Properties props = new Properties();props.put("mail.smtp.auth", "true");props.put("mail.smtp.host", host);props.put("mail.store.protocol", mailStoreType);props.put( "mail.smtp.port", popPort );//开启SSLprops.put("mail.smtp.starttls.enable", "true");props.put("mail.smtp.socketFactory.port",popPort);props.put("mail.smtp.socketFactory.fallback","false");try {Session session = Session.getDefaultInstance(props, new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(USER_NAME, PASSWORD);//账号密码}});session.setDebug(true);// 创建邮件消息MimeMessage message = new MimeMessage(session);// 设置发件⼈InternetAddress form = new InternetAddress(USER_NAME);message.setFrom(form);// 设置收件⼈InternetAddress toAddress = new InternetAddress(to);message.setRecipient(Message.RecipientType.TO, toAddress);// 设置邮件标题message.setSubject(title);// 设置邮件的内容体message.setContent(text, "text/html;charset=UTF-8");// 发送邮件Transport.send(message);return true;} catch (Exception e) {e.printStackTrace();}return false;}插曲: SMTP发送邮件时,第⼀次发送可能会收到如下的报错:OutboundSpamException; Failed to process message due to a permanent exception with message WASCL UserAction verdict is not None 在⽹上查到这是邮箱⼚商的安全策略,出现此异常的同时⼚商会给你发送⼀封确认邮件,只要你登录邮箱并激活该邮件即可使⽤SMTP 发送邮件的功能,邮件内容⼤致如下:。
发邮件格式范文(必备3篇)
发邮件格式范文第1篇1、电子邮件的发送和接收电子邮件在Internet上发送和接收的原理可以很形象地用我们日常生活中邮寄包裹来形容:当我们要寄一个包裹时,我们首先要找到任何一个有这项业务的邮局,在填写完收件人姓名、地址等等之后包裹就寄出而到了收件人所在地的邮局,那么对方取包裹的时候就必须去这个邮局才能取出。
同样的,当我们发送电子邮件时,这封邮件是由邮件发送服务器(任何一个都可以)发出,并根据收信人的地址判断对方的邮件接收服务器而将这封信发送到该服务器上,收信人要收取邮件也只能访问这个服务器才能完成。
2、电子邮件地址的构成电子邮件地址的格式由三部分组成。
第一部分“USER”代表用户信箱的帐号,对于同一个邮件接收服务器来说,这个帐号必须是唯一的;第二部分“@”是分隔符;第三部分是用户信箱的邮件接收服务器域名,用以标志其所在的位置。
对于世界上第一封电子邮件(e-mail),根据资料,现在有两种说法:第一种说法1969年 10月世界上的第一封电子邮件是由计算机科学家LeonardK.教授发给他的同事的一条简短消息。
发邮件格式范文第2篇电子邮件格式范文电子邮件伴随着电子计算机的普及,成为当今时代人际交流的重要的文书样式。
它既可用于处理公务,还可用于私人交往。
起着沟通信息、交流感情的作用。
使用电子邮件进行对外联络,不仅安全保密,节省时间,不受篇幅的限制,传输速度快,能够跨越时空,而且还可以大大地降低通信费用,它为信息时代人们的快节奏、高效率信息传递提供了便利与可能。
(二)电子邮件的撰写1.电子邮件的.结构与内容电子邮件由邮件头和正文结构而成。
邮件头包括收件人、抄送人地址、主题(邮件名称)、发件人地址等内容。
正文包括三部分内容。
(1)信头。
第一行顶格写对收信人的称呼。
(2)信体。
开门见山、直接人题,告知事宜,传递信息,分享情绪,可自由发挥。
(3)信尾。
写明发邮件人姓名、发邮件日期。
2.电子邮件的撰写要求(1)主题要明确。
使用java发送短信和邮件
使⽤java发送短信和邮件(1)发送短信1.1在中国⽹建SMS上注册⼀个⽤户名,并获取短信密钥(⾮登录密码)1.2代码import java.io.IOException;import mons.httpclient.Header;import mons.httpclient.HttpClient;import mons.httpclient.HttpException;import ValuePair;import mons.httpclient.methods.PostMethod;public class SendMessage {/*** @param args* @throws IOException* @throws HttpException*/public static void main(String[] args) throws HttpException, IOException {HttpClient client=new HttpClient();PostMethod post=new PostMethod("");//在头⽂件中设置转码post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");NameValuePair[] data={new NameValuePair("Uid","⽹建注册⽤户名"),new NameValuePair("Key","短信密钥"),new NameValuePair("smsMob","接收号码"),new NameValuePair("smsText","短信内容")};post.setRequestBody(data);client.executeMethod(post);Header[] headers=post.getRequestHeaders();int statusCode=post.getStatusCode();System.out.println("statusCode:"+statusCode);for(Header h:headers){System.out.println(h.toString());}String result=new String(post.getResponseBodyAsString().getBytes("gbk"));System.out.println(result);post.releaseConnection();}1.3注意需要引⼊包:commons-logging-1.1.1.jar、commons-httpclient-3.1.jar、commons-codec-1.4.jar1.4StatusCode说明:短信发送后返回值说 明-1没有该⽤户账户-2接⼝密钥不正确不是账户登陆密码-21MD5接⼝密钥加密不正确-3短信数量不⾜-11该⽤户被禁⽤-14短信内容出现⾮法字符-4⼿机号格式不正确-41⼿机号码为空-42短信内容为空-51短信签名格式不正确接⼝签名格式为:【签名内容】-6IP限制⼤于0短信发送数量2、发邮件2.1smtp验证类import javax.mail.Authenticator;import javax.mail.PasswordAuthentication;public class SmtpAuthenticator extends Authenticator {String username=null;String password=null;public SmtpAuthenticator(String name,String password) {super();ername=name;this.password=password;}public PasswordAuthentication getPasswordAuthentication(){return new PasswordAuthentication(ername, this.password);}}2.2发邮件的⼯具类import java.util.Date;import java.util.Properties;import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.Authenticator;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.internet.MimeUtility;public class JavaMailSendUtil {public void sendMail(String subject,String from,String[] to,String test,String[] filenames,String mineType){try {Properties props=new Properties();String smtp="";//设置发送邮件所⽤到的smtpString servername="188********@";String serverpassword="************";Session mailSession=null;MimeMessage mimeMsg=null;props=ng.System.getProperties();props.put("mail.smtp.host", smtp);//设置SMTP主机props.put("mail.smtp.auth", "true");//是否到服务器⽤户名和密码验证//到服务器验证发送的⽤户名和密码是否正确SmtpAuthenticator myEmailAuther=new SmtpAuthenticator(servername, serverpassword);//设置邮件会话注意这⾥讲认证信息放进了Session的创建参数⾥mailSession=javax.mail.Session.getInstance(props,(Authenticator)myEmailAuther);//设置传输协议javax.mail.Transport transport=mailSession.getTransport("smtp");//设置from、to等信息mimeMsg=new javax.mail.internet.MimeMessage(mailSession);if(from!=null&&!from.equals("")){InternetAddress sendFrom=new InternetAddress(from);mimeMsg.setFrom(sendFrom);//设置发送⼈地址}InternetAddress[] sendTo=new InternetAddress[to.length];for(int i=0;i<to.length;i++){System.out.println("发送到:"+to[i]);sendTo[i]=new InternetAddress(to[i]);}mimeMsg.setRecipients(javax.mail.internet.MimeMessage.RecipientType.TO, sendTo); mimeMsg.setSubject(subject,"gb2312");MimeBodyPart messageBodyPart1=new MimeBodyPart();messageBodyPart1.setContent(test,mineType);//附件传输格式Multipart multipart=new MimeMultipart();multipart.addBodyPart(messageBodyPart1);for(int i=0;i<filenames.length;i++){MimeBodyPart messageBodyPart2=new MimeBodyPart();String filename=filenames[i].split(";")[0];System.out.println(filename);String displatname=filenames[i].split(";")[1];//得到数据源FileDataSource fds=new FileDataSource(filename);//BodyPart添加附件本⾝messageBodyPart2.setDataHandler(new DataHandler(fds));//BodyPart添加附件⽂件名messageBodyPart2.setFileName(MimeUtility.encodeText(displatname));multipart.addBodyPart(messageBodyPart2);}mimeMsg.setContent(multipart);//设置信件头的发送⽇期mimeMsg.setSentDate(new Date());mimeMsg.saveChanges();//发送邮件Transport.send(mimeMsg);transport.close();System.out.println("消息发送成功");} catch (Exception e) {// TODO: handle exception}}}2.3测试类public class TestMailSend {/*** @param args*/public static void main(String[] args) {String title="测试邮件";String from="188********@";String sendTo[]={"1245226995@","jlsong186@"};String content="just test java send mail<br><a href=\"\">My blog</a>"; String fileNames[]={"F:\\068.JPG;068.JPG"};JavaMailSendUtil test=new JavaMailSendUtil();try {test.sendMail(title, from, sendTo, content, fileNames, "text/html;charset=gb2312");} catch (Exception e) {e.printStackTrace();}}}。
java生成word的几种方案
java⽣成word的⼏种⽅案1、 Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建⼀座桥梁。
使⽤Jacob⾃带的DLL动态链接库,并通过JNI的⽅式实现了在Java平台上对COM程序的调⽤。
DLL动态链接库的⽣成需要windows平台的⽀持。
2、 Apache POI包括⼀系列的API,它们可以操作基于MicroSoft OLE 2 Compound Document Format的各种格式⽂件,可以通过这些API在Java中读写Excel、Word等⽂件。
他的excel处理很强⼤,对于word还局限于读取,⽬前只能实现⼀些简单⽂件的操作,不能设置样式。
3、 Java2word是⼀个在java程序中调⽤ MS Office Word ⽂档的组件(类库)。
该组件提供了⼀组简单的接⼝,以便java程序调⽤他的服务操作Word ⽂档。
这些服务包括:打开⽂档、新建⽂档、查找⽂字、替换⽂字,插⼊⽂字、插⼊图⽚、插⼊表格,在书签处插⼊⽂字、插⼊图⽚、插⼊表格等。
填充数据到表格中读取表格数据,1.1版增强的功能:指定⽂本样式,指定表格样式。
如此,则可动态排版word⽂档。
4、 iText操作Excel还⾏。
对于复杂的⼤量的word也是噩梦。
⽤法很简单, 但是功能很少, 不能设置打印⽅向等问题。
5、 JSP输出样式基本不达标,⽽且要打印出来就更是惨不忍睹。
6、⽤XML做就很简单了。
Word从2003开始⽀持XML格式,⼤致的思路是先⽤office2003或者2007编辑好word的样式,然后另存为xml,将xml翻译为FreeMarker模板,最后⽤java来解析FreeMarker模板并输出Doc。
经测试这样⽅式⽣成的word⽂档完全符合office标准,样式、内容控制⾮常便利,打印也不会变形,⽣成的⽂档和office中编辑⽂档完全⼀样。
7、补充⼀种⽅案,可以⽤类似ueditor的在线编辑器编辑word⽂档,在将html⽂件转换为xhtml⽂件,再转换为word。
javamaven项目实现发送邮件
javamaven项⽬实现发送邮件1,先导⼊⼀个jar包在pom.xml 中写⼊<!-- 邮件start --><dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version></dependency><!-- 邮件end -->2,写⼀个邮件的类包括,发送内容,端⼝等public class MailSenderInfo {// 发送邮件的服务器的IP和端⼝private String mailServerHost;private String mailServerPort = "25";// 邮件发送者的地址private String fromAddress;// 邮件接收者的地址private String toAddress;// 登陆邮件发送服务器的⽤户名和密码private String userName;private String password;// 是否需要⾝份验证private boolean validate = false;// 邮件主题private String subject;// 邮件的⽂本内容private String content;// 邮件附件的⽂件名private String[] attachFileNames;private String iwallHost ;/*** 获得邮件会话属性*/public Properties getProperties(){Properties p = new Properties();p.put("mail.smtp.host", this.mailServerHost);p.put("mail.smtp.port", this.mailServerPort);p.put("mail.smtp.auth", validate ? "true" : "false");return p;}public String getMailServerHost() {return mailServerHost;}public void setMailServerHost(String mailServerHost) {this.mailServerHost = mailServerHost;}public String getMailServerPort() {return mailServerPort;}public void setMailServerPort(String mailServerPort) {this.mailServerPort = mailServerPort;}public boolean isValidate() {return validate;}public void setValidate(boolean validate) {this.validate = validate;}public String[] getAttachFileNames() {return attachFileNames;}public void setAttachFileNames(String[] fileNames) {this.attachFileNames = fileNames;}public String getFromAddress() {return fromAddress;}public void setFromAddress(String fromAddress) {this.fromAddress = fromAddress;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getToAddress() {return toAddress;}public void setToAddress(String toAddress) {this.toAddress = toAddress;}public String getUserName() {return userName;}public void setUserName(String userName) {erName = userName;}public String getSubject() {return subject;}public void setSubject(String subject) {this.subject = subject;}public String getContent() {return content;}public void setContent(String textContent) {this.content = textContent;}public String getIwallHost() {return iwallHost;}public void setIwallHost(String iwallHost) {this.iwallHost = iwallHost;}}3,为了可配置性,可将上⾯的类的所需信息写⼊配置⽂件⾥<bean id = "mailInfo" class = "xxxxxxx.MailSenderInfo" ><property name="mailServerHost" value = ""></property> <property name="mailServerPort" value = "25"></property><property name="fromAddress" value = "xxxxxxx@xx.xxx"></property><property name="userName" value = "xxxxxxxx"></property><property name="password" value = "xxxxx"></property><property name="iwallHost" value = "http://localhost:8080/xxxxx"></property> </bean>4,写⼀个简单的发送邮件的类,包含发送text或者 html的⽅法public class SimpleMailSender {/*** 以⽂本格式发送邮件* @param mailInfo 待发送的邮件的信息*/public boolean sendTextMail(MailSenderInfo mailInfo) {// 判断是否需要⾝份认证MyMailAuthenticator authenticator = null;Properties pro = mailInfo.getProperties();if (mailInfo.isValidate()) {// 如果需要⾝份认证,则创建⼀个密码验证器authenticator = new MyMailAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); }// 根据邮件会话属性和密码验证器构造⼀个发送邮件的sessionSession sendMailSession = Session.getDefaultInstance(pro,authenticator);try {// 根据session创建⼀个邮件消息Message mailMessage = new MimeMessage(sendMailSession);// 创建邮件发送者地址Address from = new InternetAddress(mailInfo.getFromAddress());// 设置邮件消息的发送者mailMessage.setFrom(from);// 创建邮件的接收者地址,并设置到邮件消息中Address to = new InternetAddress(mailInfo.getToAddress());mailMessage.setRecipient(Message.RecipientType.TO,to);// 设置邮件消息的主题mailMessage.setSubject(mailInfo.getSubject());// 设置邮件消息发送的时间mailMessage.setSentDate(new Date());// 设置邮件消息的主要内容String mailContent = mailInfo.getContent();mailMessage.setText(mailContent);// 发送邮件Transport.send(mailMessage);return true;} catch (MessagingException ex) {ex.printStackTrace();}return false;}/*** 以HTML格式发送邮件* @param mailInfo 待发送的邮件信息*/public static boolean sendHtmlMail(MailSenderInfo mailInfo){// 判断是否需要⾝份认证MyMailAuthenticator authenticator = null;Properties pro = mailInfo.getProperties();//如果需要⾝份认证,则创建⼀个密码验证器if (mailInfo.isValidate()) {authenticator = new MyMailAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); }// 根据邮件会话属性和密码验证器构造⼀个发送邮件的sessionSession sendMailSession = Session.getDefaultInstance(pro,authenticator);try {// 根据session创建⼀个邮件消息Message mailMessage = new MimeMessage(sendMailSession);// 创建邮件发送者地址Address from = new InternetAddress(mailInfo.getFromAddress());// 设置邮件消息的发送者mailMessage.setFrom(from);// 创建邮件的接收者地址,并设置到邮件消息中Address to = new InternetAddress(mailInfo.getToAddress());// Message.RecipientType.TO属性表⽰接收者的类型为TOmailMessage.setRecipient(Message.RecipientType.TO,to);// 设置邮件消息的主题mailMessage.setSubject(mailInfo.getSubject());// 设置邮件消息发送的时间mailMessage.setSentDate(new Date());// MiniMultipart类是⼀个容器类,包含MimeBodyPart类型的对象Multipart mainPart = new MimeMultipart();// 创建⼀个包含HTML内容的MimeBodyPartBodyPart html = new MimeBodyPart();// 设置HTML内容html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");mainPart.addBodyPart(html);// 将MiniMultipart对象设置为邮件内容mailMessage.setContent(mainPart);// 发送邮件Transport.send(mailMessage);return true;} catch (MessagingException ex) {ex.printStackTrace();}return false;}}5,在类中,实现发送邮件,建议另起线程发送邮件/*** 发送邮件内部类**/class SendEmailThread implements Runnable {private MailSenderInfo mailInfo;public SendEmailThread(MailSenderInfo mailInfo) {this.mailInfo = mailInfo;}@Overridepublic void run() {try {if (this.mailInfo != null) {SimpleMailSender.sendHtmlMail(mailInfo);}} catch (Exception e) {e.printStackTrace();}}}/*** 发送邮件⽅法** @param account* @param code*/public void sendEmail(String account, String code) {WebApplicationContext ac = ContextLoader.getCurrentWebApplicationContext();// 获取当前服务IPMailSenderInfo mailInfo = (MailSenderInfo) ac.getBean("mailInfo");mailInfo.setValidate(Boolean.TRUE);mailInfo.setToAddress(account);mailInfo.setSubject("验证码邮件");mailInfo.setContent("<p>您好!</p><p>感谢您注册成为xxxxxx⽤户!</p><p>您的验证码是:" + code + "。
java邮件发送(单人,多人,抄送,Excel附件)
java邮件发送(单⼈,多⼈,抄送,Excel附件) 直接上代码保存吧package com.westvalley.ceiec.page.report.sendmail;import weaver.email.EmailEncoder;import javax.mail.*;import javax.mail.internet.*;import javax.mail.util.ByteArrayDataSource;import javax.activation.*;import mons.logging.Log;import mons.logging.LogFactory;import ermodel.HSSFWorkbook;import crivia.db.i.DataSet;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.InputStream;import java.util.*;/**邮件发送⼯具类* @author whh*/public class Email {Log log = LogFactory.getLog(this.getClass());//发件⼈地址private String mail_from;public void setMail_from(String mailFrom) {mail_from = mailFrom;}public String getMail_from() {return mail_from;}//发件⼈密码private String password;public void setPassword(String password) {this.password = password;}public String getPassword() {return password;}//收件地址private String mail_to;public void setMail_to(String mailTo) {mail_to = mailTo;}public String getMail_to() {return mail_to;}//主题private String title;public void setTitle(String title) {this.title = title;}public String getTitle() {return title;}//内容private String message;public void setMessage(String message) {this.message = message;}public String getMessage() {return message;}//发件⼈邮件服务器如: 191.0.0.6private String send_server;public void setSend_server(String sendServer) {send_server = sendServer;}public String getSend_server() {return send_server;}/** 单个发送 setMail_to(String mailTo)* @return是否正确发送* @throws AddressException*/public boolean SendMail()throws AddressException{try{int n = this.mail_from.indexOf('@');int m = this.mail_from.length();//取邮件的服务器String server = this.mail_from.substring(n+1, m);//建⽴邮件会话Properties pro = new Properties();pro.put("mail.smtp.host", "smtp."+server);pro.put("mail.smtp.auth", "true");Session sess = Session.getInstance(pro);sess.setDebug(true);//新建⼀个消息对象MimeMessage message = new MimeMessage(sess);//设置发件⼈InternetAddress from_address = new InternetAddress(this.mail_from); message.setFrom(from_address);//设置收件⼈InternetAddress to_address = new InternetAddress(this.mail_to);message.setRecipient(Message.RecipientType.TO, to_address);//设置主题message.setSubject(title);//设置内容message.setContent(this.message, "text/html;charset=UTF-8");//设置发送时间message.setSentDate(new Date());//发送邮件message.saveChanges(); //保存邮件信息//设置发送的格式Transport transport = sess.getTransport("smtp");if(this.send_server == null){transport.connect("191.0.0.6", this.mail_from, password);}else{transport.connect(this.send_server, this.mail_from, password);}transport.sendMessage(message, message.getAllRecipients());transport.close();("向"+this.mail_to+"发送邮件成功");return true;}catch(Exception e){("发送邮件失败,原因可能是"+e.toString());return false;}}/**群发* @param addresses 地址list* @return* @throws AddressException*/public boolean SendMail(List<String> addresses) throws AddressException{ try{int n = this.mail_from.indexOf('@');int m = this.mail_from.length();//取邮件的服务器String server = this.mail_from.substring(n+1, m);//建⽴邮件会话Properties pro = new Properties();pro.put("mail.smtp.host", "smtp."+server);pro.put("mail.smtp.auth", "true");Session sess = Session.getInstance(pro);sess.setDebug(true);//新建⼀个消息对象MimeMessage message = new MimeMessage(sess);//设置发件⼈InternetAddress from_address = new InternetAddress(this.mail_from); message.setFrom(from_address);//设置收件⼈,多个final int num = addresses.size();InternetAddress to_address[] = new InternetAddress[num];for(int i=0; i<num; i++){to_address[i] = new InternetAddress(addresses.get(i));}message.setRecipients(Message.RecipientType.TO, to_address);//设置主题message.setSubject(title);//设置内容message.setContent(this.message, "text/html;charset=UTF-8");//设置发送时间message.setSentDate(new Date());//发送邮件message.saveChanges(); //保存邮件信息//设置发送的格式Transport transport = sess.getTransport("smtp");if(this.send_server == null){transport.connect("191.0.0.6", this.mail_from, password);}else{transport.connect(this.send_server, this.mail_from, password);}transport.sendMessage(message, message.getAllRecipients());transport.close();("发送邮件成功");return true;}catch(Exception e){("发送邮件失败,原因可能是"+e.getMessage());return false;}}/** 多⼈发送并抄送增加:2017-04-25 whh* @param addresses 收件邮箱(多个)* @param ccAddresses 抄送邮箱(多个)* @return* @throws AddressException*/public boolean SendMail(List<String> addresses, List<String> ccAddresses) throws AddressException{if(0==ccAddresses.size()){ //20170428 whhreturn SendMail(addresses);}try{int n = this.mail_from.indexOf('@');int m = this.mail_from.length();//取邮件的服务器String server = this.mail_from.substring(n+1, m);//建⽴邮件会话Properties pro = new Properties();pro.put("mail.smtp.host", "smtp."+server);pro.put("mail.smtp.auth", "true");Session sess = Session.getInstance(pro);sess.setDebug(true);//新建⼀个消息对象MimeMessage message = new MimeMessage(sess);//设置发件⼈InternetAddress from_address = new InternetAddress(this.mail_from);message.setFrom(from_address);//设置收件⼈,多个final int num = addresses.size();InternetAddress to_address[] = new InternetAddress[num];for(int i=0; i<num; i++){to_address[i] = new InternetAddress(addresses.get(i));}message.setRecipients(Message.RecipientType.TO, to_address);//设置抄送⼈final int ccSize = ccAddresses.size();if(ccSize > 0){InternetAddress cc_Address[] = new InternetAddress[ccSize];for(int i=0; i<ccSize; i++){cc_Address[i] = new InternetAddress(ccAddresses.get(i));}message.setRecipients(, cc_Address);}//设置主题message.setSubject(title);//设置内容message.setContent(this.message, "text/html;charset=UTF-8");//设置发送时间message.setSentDate(new Date());//发送邮件message.saveChanges(); //保存邮件信息//设置发送的格式Transport transport = sess.getTransport("smtp");if(this.send_server == null){transport.connect("191.0.0.6", this.mail_from, password);}else{transport.connect(this.send_server, this.mail_from, password);}transport.sendMessage(message, message.getAllRecipients());transport.close();("发送邮件成功");return true;}catch(Exception e){("发送邮件失败,原因可能是"+e.getMessage());return false;}}/** 多⼈发送并抄送增加:2019-06-14 whh* @param addresses 收件邮箱(多个)* @param ccAddresses 抄送邮箱(多个)* @param is 附件* @return* @throws AddressException*/public boolean SendMail(List<String> addresses, List<String> ccAddresses,HSSFWorkbook workBook,String workBookName) throwsAddressException{try{int n = this.mail_from.indexOf('@');int m = this.mail_from.length();//取邮件的服务器String server = this.mail_from.substring(n+1, m);//建⽴邮件会话Properties pro = new Properties();pro.put("mail.smtp.host", "smtp."+server);pro.put("mail.smtp.auth", "true");Session sess = Session.getInstance(pro);sess.setDebug(true);//新建⼀个消息对象MimeMessage message = new MimeMessage(sess);//设置发件⼈InternetAddress from_address = new InternetAddress(this.mail_from);message.setFrom(from_address);//设置收件⼈,多个final int num = addresses.size();InternetAddress to_address[] = new InternetAddress[num];for(int i=0; i<num; i++){to_address[i] = new InternetAddress(addresses.get(i));}message.setRecipients(Message.RecipientType.TO, to_address);//设置抄送⼈final int ccSize = ccAddresses.size();if(ccSize > 0){InternetAddress cc_Address[] = new InternetAddress[ccSize];for(int i=0; i<ccSize; i++){cc_Address[i] = new InternetAddress(ccAddresses.get(i));}message.setRecipients(, cc_Address);}//附件ByteArrayOutputStream baos = new ByteArrayOutputStream();workBook.write(baos);baos.flush();byte[] bt = baos.toByteArray();InputStream is = new ByteArrayInputStream(bt, 0, bt.length);baos.close();/*添加正⽂内容*/Multipart multipart = new MimeMultipart();BodyPart contentPart = new MimeBodyPart();// contentPart.setText(this.message);// contentPart.setHeader("Content-Type", "text/html;charset=UTF-8");contentPart.setContent(this.message, "text/html;charset=UTF-8");multipart.addBodyPart(contentPart);/*添加附件*/MimeBodyPart fileBody = new MimeBodyPart();DataSource source = new ByteArrayDataSource(is, "application/msexcel"); fileBody.setDataHandler(new DataHandler(source));// 中⽂乱码问题fileBody.setFileName(MimeUtility.encodeText(workBookName+".xls"));multipart.addBodyPart(fileBody);//设置主题message.setSubject(title);//设置内容message.setContent(multipart);//设置发送时间message.setSentDate(new Date());//发送邮件message.saveChanges(); //保存邮件信息//设置发送的格式Transport transport = sess.getTransport("smtp");if(this.send_server == null){transport.connect("191.0.0.6", this.mail_from, password);}else{transport.connect(this.send_server, this.mail_from, password);}transport.sendMessage(message, message.getAllRecipients());transport.close();("发送邮件成功");return true;}catch(Exception e){("发送邮件失败,原因可能是"+e.getMessage());return false;}}/**邮箱初始化,发件⼈邮箱、密码及服务器信息的获取* @return正确获取时返回Email对象,否则为null*/public static Email intiEmail(){// Log log = LogFactory.getLog(this.getClass());Email email = new Email();//获取系统的邮箱信息DataSet data = SQL.select(SQL.sql_Array(" select defmailpassword" +",defmailserver,defmailfrom from SystemSet "));if(data.next()){//发件⼈邮箱地址email.setMail_from(data.get("defmailfrom"));//获取并解析邮箱密码email.setPassword(EmailEncoder.DecoderPassword(data.get("defmailpassword")));// ("Password:"+EmailEncoder.DecoderPassword(data.get("defmailpassword"))); //服务器信息email.setSend_server(data.get("defmailserver"));}if(email.getMail_from().equals("")||email.getPassword().equals("")||email.getSend_server().equals("")){// ("发送⼈邮箱错误");// ("From:"+email.getMail_from()+"Password:"+// email.getPassword()+"Server:"+email.getSend_server());return null;}return email;}}。
2023年初级软考《信息处理技术员》考试全真模拟易错、难点汇编贰(答案参考)试卷号:50
2023年初级软考《信息处理技术员》考试全真模拟易错、难点汇编贰(答案参考)(图片大小可自由调整)一.全考点综合测验(共50题)1.【单选题】在Excel 2003 中,若在A1单元格中输入函数“ =LOG10(10^5)”,按回车键后,则A1单元格显示的值为( )。
A.100000B.10C.5D.2正确答案:C2.【单选题】在Excel 中,相对地址在被复制或移动到其他单元格时,其单元格地址() 。
A.不会改变B.部分改变C.全部改变D.不能复制正确答案:B3.【单选题】下列关闭资源管理器的方法不正确的是_______ 。
A.按工具栏上的“ ?”按钮B.单击“文件”菜单中的“关闭”命令C.按Alt+F4 键盘D.单击标题上的系统菜单中的“关闭”命令正确答案:B4.【单选题】在Windows XP中,为保护某文档不被修改,宜将其属性设置为( ) 。
A.只读B.存档C.隐藏D.系统正确答案:A5.【单选题】下列关于有损压缩的叙述中,不正确的是( )。
A.有损压缩是一种可逆压缩B.有损压缩的压缩比高C.有损压缩的数据还原后有一定的损失D. 视频压缩技术标准MPEG是有损压缩正确答案:A6.【单选题】在默认情况下,按快捷键“()”可切换中英文输入方法。
A.Ctrl+空格B.Ctrl+ShiftC.Alt+空格D.Shift+空格正确答案:A7.【单选题】在Word 2003 中,下列关于标尺使用的叙述,不正确的是( )。
A.首行缩进可使光标所在段落的第一行向右缩进B.悬挂缩进可使光标所在段落的所有行按向左或向右的拖动方向缩进C.左缩进可使光标所在段落的整体从左边界向右缩进D.右缩进可使光标所在段落的整体从右边界向左缩进正确答案:B8.【单选题】人们常根据数据做统计推断,以下()统计推断的结论肯定不合理,不正确。
A.某市规定对每条街道每隔20 年翻修一次。
我上班将路过20 条街道,因此推断,每天上班都会遇到某条街道正在翻修B.据统计,世界上任何两人的平均距离为4.74 度(好友关系算是1 度距离,好友的好友是2 度距离)C.据统计,每个快乐的朋友,让你也快乐的概率约增加9%;每个不快乐的朋友,让你快乐的概率约减少7%D.据统计,一个人在社交圈内与其有紧密联正确答案:A9.【单选题】在Windows XP中,为提高计算机访问硬盘的速度,可定期进行( )A.磁盘碎片整理B.磁盘清理C.磁盘扫描D.磁盘压缩正确答案:A10.【单选题】扫描仪的主要技术指标不包括()。
java发送邮件及邮 件附件代码实例
Mail attachment = partSet.get(i);
String attachmentContent = attachment.getContent();
if (null != attachmentContent && 0 < attachmentContent.length()) {
*中查找其相应的MIME类型,如果没找到,则返回
* {@link #defaultAttachmentContentType}
*所指定的默认类型。
*
* @param fileName
*文件名
* @return返回文件对应的MIME类型。
*/
private String getPartContentType(String fileName) {
}
ret = contentTypeMap.get(fileName);
}
if (null == ret) {
ret = defaultAttachmentContentType;
}
return ret;
}
/**
*将给定字符串转换为base64编码的字符串
*
* @param str
*需要转码的字符串
contentTypeMap.put("doc", "application/msword");
contentTypeMap.put("dot", "application/msword");
contentTypeMap.put("docx", "application/msword");
如何用word发邮件
如何用word发邮件Microsoft Office Word是微软公司的一个文字处理器应用程序。
一直以来,Microsoft Office Word 都是最流行的文字处理程序。
那你知道word怎么发邮件。
以下是整理的用word发邮件的操作方法,希望大家认真阅读!1.打开word。
2.点击【文件】菜单。
3.点击下拉菜单中的【新建】。
4.在任务窗口中点击【本机模板】。
5.选择【电子邮件】。
6.点击【确定】。
7.看到工具栏下方出现了电子邮件的各种窗口。
8.输入收件人地址、主题、内容。
9.点击【发送】,按照提示操作就可以发送邮件了。
拓展资料:格式Microsoft Word X (Mac OS X)Microsoft Word在当前使用中是占有巨大优势的文字处理器,这使得Word专用的档案格式Word 文件(.doc)成为事实上最通用的标准。
Word文件格式的详细资料并不对外公开。
Word文件格式不只一种,因为随Word软件本身的更新,文件格式也会或多或少的改版,新版的格式不一定能被旧版的程序读取(大致上是因为旧版并未内建支援新版格式的能力)。
微软已经详细公布Word 97的DOC格式,但是较新的版本资料仍未公开,只有公司内部、某某某府与研究机构能够获知。
业界传闻说一些Word文件格式的特性甚至连微软自己都不清楚。
Microsoft office Word 97到Microsoft office Word 2003之前的Word文件格式都是二进制文件格式。
不久以前,微软声明他们接下来将以XML为基础的档案格式作为他们办公室套装软件的格式。
Word 2003提供WordprocessingML的选项。
这是一种公开的XML档案格式,由丹麦某某某府等机构背书支持。
Word 2003的专业版能够直接处理非微软的档案规格。
跟其它Microsoft Office程序一样,Word可使用固定宏语言(宏语言)来高度定制。
Java实现网易企业邮箱发送邮件
Java实现⽹易企业邮箱发送邮件最近项⽬需要⽤⽹易企业邮箱发送邮件,特意来将实现过程记录⼀下:maven导⼊jar包1 <!-- javax.mai 核⼼包 -->2 <dependency>3 <groupId>javax.activation</groupId>4 <artifactId>activation</artifactId>5 <version>1.1</version>6 </dependency>7 <dependency>8 <groupId>javax.mail</groupId>9 <artifactId>mail</artifactId>10 <version>1.4.5</version>11 </dependency>java 使⽤ javax.mail 实现企业邮箱邮件发送1 import java.util.Properties;2 import javax.mail.internet.InternetAddress;3 import javax.mail.internet.MimeMessage;4 import javax.mail.internet.MimeUtility;5 import org.apache.log4j.Logger;6 import org.springframework.mail.javamail.JavaMailSenderImpl;7 import org.springframework.mail.javamail.MimeMessageHelper;8 import com.sun.mail.util.MailSSLSocketFactory;910public class SendMailSmtp {11private static Logger log = Logger.getLogger(SendTemplateSMS.class);1219public static void sendHtmlMail() {20try{21 String from = "邮箱账号名";//发件⼈昵称展⽰ *22 String[] to ={"接收邮箱1","接收邮箱2"};//接收邮箱23 String subject = "邮件主题";//邮件主题 *24 String text = "邮件内容";25 String host = "";//163企业邮箱smtp *26 String username = "发件的企业邮箱";//企业邮箱 *27 String password= "发件的企业邮箱的授权码";//企业邮箱密码 *2829//设置服务器验证信息30 Properties prop = new Properties();31 prop.setProperty("mail.smtp.auth", "true");32 prop.setProperty("mail.smtp.timeout", "994"); // 加密端⼝(ssl) 可通过 https:///help/client-profile.html 进⾏查询3334 MailSSLSocketFactory sf = new MailSSLSocketFactory();// SSL加密35 sf.setTrustAllHosts(true); // 设置信任所有的主机36 prop.put("mail.smtp.ssl.enable", "true");37 prop.put("mail.smtp.ssl.socketFactory", sf);3839//设置邮件内容40 JavaMailSenderImpl javaMailSend = new JavaMailSenderImpl();41 MimeMessage message = javaMailSend.createMimeMessage();42 MimeMessageHelper messageHelper = new MimeMessageHelper(message, true, "utf-8");43 String nick = MimeUtility.encodeText(from);//设置昵称44 messageHelper.setFrom(new InternetAddress(nick + " <"+username+">"));// 邮件发送者45 messageHelper.setTo(to);46 messageHelper.setSubject(subject);47 messageHelper.setText(text, true);4849//设置邮件服务器登录信息50 javaMailSend.setHost(host);51 javaMailSend.setUsername(username);52 javaMailSend.setPassword(password);53 javaMailSend.setJavaMailProperties(prop);54 ("maillText:" + text);55 javaMailSend.send(message);56 } catch (Exception e) {57// TODO Auto-generated catch block58 log.error(e);59 e.printStackTrace();60 }61 }6263 }注意:1.邮箱密码是开通pop3/smtp服务时所给的授权码,⽽不是你注册邮箱时的真实密码2.检查⾃⼰邮箱是否开通pop3/smtp服务。
POI读取word(word2003和word2007)(转)
POI读取word(word2003和word2007)(转)最近在给客户做系统的时候,⽤户提出需求,要能够导⼊ word ⽂件,现在 microsoft word 有好⼏个版本 97、2003、2007的,这三个版本存储数据的格式上都有相当⼤的差别,⽽现在 97 基本上已经退出市场,⼏乎没有⼈⽤这个版本了,所以在我们的系统中只考虑 2003 版本和 2007 版本的,因为我们只要求能够读取 word 中的⽂字内容即可,其中的⽂字样式、图⽚等信息可以忽略,也不⽤直接操作 word ⽂件,所以我们选择⽤ apache 的 POI 进⾏读取。
读取 2003 版本(.doc)的word⽂件相对来说⽐较简单,只需要 poi-3.5-beta6-20090622.jar 和 poi-scratchpad-3.5-beta6-20090622.jar 两个jar 包即可,⽽ 2007 版本(.docx)就⿇烦多,我说的这个⿇烦不是我们写代码的时候⿇烦,是要导⼊的 jar 包⽐较的多,有如下 7 个之多: 1. openxml4j-bin-beta.jar 2. poi-3.5-beta6-20090622.jar 3. poi-ooxml-3.5-beta6-20090622.jar 4 .dom4j-1.6.1.jar 5. geronimo-stax-api_1.0_spec-1.0.jar 6. ooxml-schemas-1.0.jar 7. xmlbeans-2.3.0.jar 其中 4-7 是 poi-ooxml-3.5-beta6-20090622.jar 所依赖的 jar 包(在poi-bin-3.5-beta6-20090622.tar.gz 中的 ooxml-lib ⽬录下可以找到)。
[java]1. import java.io.File;2. import java.io.FileInputStream;3. import java.io.InputStream;4.5. import org.apache.poi.POIXMLDocument;6. import org.apache.poi.POIXMLTextExtractor;7. import org.apache.poi.hwpf.extractor.WordExtractor;8. import org.apache.poi.openxml4j.opc.OPCPackage;9. import org.apache.poi.xwpf.extractor.XWPFWordExtractor;10.11. /**12. * POI 读取 word 2003 和 word 2007 中⽂字内容的测试类<br />13. * @createDate 2009-07-2514. * @author Carl He15. */16. public class Test {17. public static void main(String[] args) {18. try {19. //word 2003:图⽚不会被读取20. InputStream is = new FileInputStream(new File("c://files//2003.doc"));21. WordExtractor ex = new WordExtractor(is);22. String text2003 = ex.getText();23. System.out.println(text2003);24.25. //word 2007 图⽚不会被读取,表格中的数据会被放在字符串的最后26. OPCPackage opcPackage = POIXMLDocument.openPackage("c://files//2007.docx");27. POIXMLTextExtractor extractor = new XWPFWordExtractor(opcPackage);28. String text2007 = extractor.getText();29. System.out.println(text2007);30.31. } catch (Exception e) {32. e.printStackTrace();33. }34. }35. }如果想下载完整的⽰例代码,可以,这个 rar 包中有 POI 读取word 2003 和 word 2007 所需要的全部 jar 包和 word 2003、word 2007 ⽰例⽂件。
word2003邮件合并
word2003邮件合并Word2003邮件合并前几天用到了word2003的邮件合并,当时遇到了些麻烦,现在抽空做个教程,一来巩固一下这个知识点,二来希望能帮助一些需要用到它的朋友。
Word2003邮件合并是在给很多人发基本同样的东西而且变化很小的情况下可以用到,这样可以大大减轻工作量。
我是以通知书模板的形式来讲解的。
第一步,我们需要建立一个word模板,设置好格式;还需要一个excel表格,里面可以填充数据(如图一)。
特别强调一点,数据源内的每条字段都是有用的,是要打出来的,不需要的打出来的千万不要添加,否则就画蛇添足了,比如有的朋友会在第一列写上序号,然后排序,序号是不打印,有序号的结果就是数据源无法使用,切记。
图二的红色字段都是需要打印的,在邮件合并里可以叫域。
图一图二图三通知书格式(具体啥样记不得了,随便弄的,如图三)第二步在word里依次点击工具信函与邮件邮件合并,会在右侧出现图四: 图四第三步点击下一步:正在启动文档(图四),会出现下图所示,点击浏览(图五),找到excel表格数据源,依次点击确定(图六,图七)。
图五图六图七第四步,编辑列表的话,我们可以在excel表格数据源内编辑,所以可以直接点击下一步撰写信函(图八),选择其他项目(图九) 会出现插入合并域的对话框,如图十,然后我们选择取消。
图八图九第五步,选中word2003通知书模板中的编号12345678900 ,然后选择插入合并域中的编号,然后选择插入,如图十一。
然后同样的道理,选中word2003通知书模板中的姓名张三,然后选择插入合并域中的姓名,然后选择插入,如图十二。
把所有需要打印的内容依次选中,在合并域中选择对应的域,最终结果如图十三。
图十图十一图十二图十三第六步点击预览信函(如图十四),点击下一个按钮(>>),内容会跟着收件人而变化(如图十五,当收件人是3时,word内的数据对应的是excel数据源中的王二)。
java使用outlook发邮件
java使用outlook发邮件要使用Java发送Outlook邮件,您需要使用JavaMail API和Microsoft Exchange服务器。
以下是一个示例代码,可以帮助您开始:```javaimport java.util.Properties;import javax.mail.Message;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;public class SendEmailpublic static void main(String[] args)String port = "587";String password = "your_password";//配置发送邮件的属性Properties props = new Properties(;props.put("mail.smtp.starttls.enable", "true");props.put("mail.smtp.auth", "true");props.put("mail.smtp.host", host);props.put("mail.smtp.port", port);//创建会话对象Session session = Session.getInstance(props, new javax.mail.Authenticatoprotected javax.mail.PasswordAuthentication getPasswordAuthenticatioreturn new javax.mail.PasswordAuthentication(username, password);}});try// 创建MimeMessage对象Message message = new MimeMessage(session);message.setFrom(new InternetAddress(username));message.setSubject("邮件主题");message.setText("邮件内容");//发送邮件Transport.send(message);System.out.println("邮件发送成功");} catch (Exception e)System.out.println("邮件发送失败");e.printStackTrace(;}}```此示例仅发送简单的文本邮件。
JAVA操作WORD
JAVA操作WORDJava操作Word主要有两种方式:一种是使用Apache POI库进行操作,另一种是使用XML模板进行操作。
下面将详细介绍如何通过XML模板实现Java操作Word。
1.准备工作:2. 创建Word模板:首先,创建一个空的Word文档,将其保存为XML格式,作为Word的模板。
可以在Word中添加一些标记或占位符,用于后续替换。
3.导入POI和相关依赖:在Java项目中,导入以下依赖:```xml<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.xmlbeans</groupId><artifactId>xmlbeans</artifactId><version>3.1.0</version></dependency>```4.读取模板文件:使用POI库读取Word模板文件,将其转换为XML格式的字符串,并保存为`template.xml`文件中。
```javaimport ermodel.XWPFDocument;import java.io.FileOutputStream;public class WordTemplateReaderpublic static void main(String[] args) throws ExceptionXWPFDocument document = new XWPFDocument(new FileInputStream("template.docx"));FileOutputStream out = new FileOutputStream("template.xml");document.write(out);out.close(;document.close(;}}```5.数据替换:读取template.xml文件,使用Java中的字符串替换功能,将模板中的占位符替换为实际的数据。
javaMail发送邮件(图片,附件)
Java类库中是带有javamail的!所有不需要再下载。
1)运行例子时会出现:Exception in thread "main" ng.NoClassDefFoundError: com/sun/mail/util/LineOutputStream这样的错误,原因是版本不兼容,后来我没有用java ee 5.0而是用j2ee1.4.自己导入mail.jar包就没有出现错误。
2)运行完书本的例子(文本,包含有图片,附件。
另外图片是分为两种,一是引用外部资源,二是嵌入内部)。
对其有个大概的了解。
下面给个完整的例子,包含有图片和附件的。
public class ComplexMessage {/***@param args*@throws MessagingException*@throws AddressException*@throws IOException*@throws FileNotFoundException*/public static void main(String[] args) throws AddressException,MessagingException, FileNotFoundException, IOException{// TODO Auto-generated method stubSession session = Session.getDefaultInstance(new Properties()); // 设置发送邮件的客户端服务器端环境MimeMessage message=createMessage( session);message.writeTo(new FileOutputStream("d:\\test3.eml"));}public static MimeMessage createMessage(Session session) throws AddressException, MessagingException{String from = "4054702459047@";String to = "4074505429047@";String subject = "test";String data = "<FONT face=宋体color=#0909f7 size=7><SPAN style='ACKGROUND-COLOR: #6911ee'><SPAN style='BACKGROUND-COLOR: #000000'><SPAN style='BACKGROUND-COLOR: #000000'><SPAN style='BACKGROUND-COLOR: #ffffff'><EM>华南理工大学</EM> </SPAN></SPAN></SPAN></SPAN></FONT>"+"<img src='cid:test1.jpg'>";Message message = new MimeMessage(session);// 创建MimeMessage实例对象message.setFrom(new InternetAddress(from));message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));message.setSentDate(new Date());message.setSubject(subject);MimeBodyPart contentPart=createContent(data,"d:\\test.jpg");MimeBodyPart attachPart1=createAttachment("d:\\xml.xml");MimeBodyPart attachPart2=createAttachment("d:\\report13.jasper");MimeMultipart multipart=new MimeMultipart("mixed");multipart.addBodyPart(contentPart);multipart.addBodyPart(attachPart1);multipart.addBodyPart(attachPart2);//这里MimeMessage是由MIME对象的消息头和MimeMultipart组成,而MimeMultipart可由//MimeBodyPart 组成。
POI使用HWPFDocumen...
POI使用HWPFDocumen...[摘要:本身正在做项目过程当中用到懂得析支解word2003战2007,2010等文件内容,以下是代码:上面是局部代码,若是念要全体代码能够收我邮箱,***************************,接心类:PoiExtractContent.java]自己在做项目过程中用到了解析分割word2003和2007,2010等文件内容,以下是代码:下面是部分代码,如果想要全部代码可以发我邮箱,***************************,接口类:PoiExtractContent.javapackage com.peraglobal.extract.poi;import java.util.Map;/*** 使用 POI 解析 WORD 文件的内容信息* @author yongqian.liu* 2015-2-9*/public interface PoiExtractContent<T> {/*** 根据文件路径获得 Document 对象* @param docPath 路径* @return Document*/public T getDocument(String docPath);/*** 解析 word 文档的标题* @param doc Document 对象* @return word 文档中标题public String getTilte(T doc);/*** 获取 word 文档里所有文字内容(不包括图片、表格等格式的内容)* @param doc Document 对象* @return word 文档中文字部分全部内容*/public String getContent(T doc);/*** 获取 word 文档里所有文字内容(不包括图片、表格等格式的内容)* @param docPath doc 对象路径* @return word 文档中文字部分全部内容*/public String getContent(String docPath);/*** 获取 word 文档里面所有图片并另存到指定目录下* @param doc Document 对象* @param picPath 保存图片路径* @param suffix 后缀名*/public void getPictures(T doc, String picPath, String suffix);/*** 获取word 文档里面所有表格* @param doc Document 对象public void getTables(T doc);/*** 获取word 文档中最大的字体* @param doc Document 对象* @return 最大字体*/public int getMaxFontSize(T doc);/*** 获取 word 文档的创建信息* @param docPath doc路径* @return 创建文档的信息*/public Map<String, String> getInfo(String docPath); }2003实现:PoiHwpfExtractContentImpl.java package com.peraglobal.extract.poi.impl;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;import org.apache.poi.hpsf.SummaryInformation;import org.apache.poi.hwpf.HWPFDocument;import org.apache.poi.hwpf.extractor.WordExtractor;import org.apache.poi.hwpf.model.PicturesTable;import org.apache.poi.hwpf.model.StyleDescription;import org.apache.poi.hwpf.model.StyleSheet;import ermodel.CharacterRun;import ermodel.Paragraph;import ermodel.Picture;import ermodel.Range;import ermodel.Table;import ermodel.TableCell;import ermodel.TableIterator;import ermodel.TableRow;import com.peraglobal.extract.poi.PoiExtractContent;import com.peraglobal.extract.util.Const;import com.peraglobal.extract.util.FormatTextUtil;/*** 使用 POI 解析 DOC2003 文件的内容信息* @author yongqian.liu* 2015-2-9*/public class PoiHwpfExtractContentImpl implements PoiExtractContent<HWPFDocument> {/*** 根据文件路径获得 Document 对象* @param docPath 路径* @return Document*/public HWPFDocument getDocument(String docPath) {// hwpfDocument 是专门处理 word 的,在 poi 中还有处理其他office 文档的类HWPFDocument doc = null;try {doc = new HWPFDocument(new FileInputStream(docPath));} catch (Exception e) {e.printStackTrace();}return doc;}/*** 解析 word 文档的标题* @param doc Document 对象* @return 标题*/public String getTilte(HWPFDocument doc) {String title = "\";Range range = doc.getRange();Paragraph p = null;for (int i = 0; i < range.numParagraphs(); i++) {p = range.getParagraph(i);if(p.text() != null && !p.text().equals("") && !p.text().equals("r")){title = p.text().trim();break;}}return title;}/*** 获取 word 文档里所有文字内容(不包括图片、表格等格式的内容)* @param doc Document 对象* @return word 文档中文字部分全部内容*/public String getContent(HWPFDocument doc){String content = "";try {content = doc.getT ext().toString().trim();} catch (Exception e) {e.printStackTrace();}return content.replaceAll("", "");}/*** 获取 word 文档里所有文字内容(不包括图片、表格等格式的内容)* @param docPath doc 对象路径* @return word 文档中文字部分全部内容*/public String getContent(String docPath) {StringBuffer strBuff = new StringBuffer("");try {WordExtractor extractor = new WordExtractor(new FileInputStream(docPath));//extractor.getT extFromPieces();String [] strArray = extractor.getParagraphText();for(int i = 0; i < strArray.length; ++i) {strBuff.append(strArray[i].trim());}} catch (Exception e) {e.printStackTrace();}return strBuff.toString().replaceAll("", "");}/*** 获取 word 文档里面所有图片并另存到指定目录下* @param doc Document 对象* @param picPath 保存图片路径* @param suffix 后缀名*/public void getPictures(HWPFDocument doc, String picPath, String suffix) {Range range = doc.getRange();byte[] dataStream = doc.getDataStream();int numChar = range.numCharacterRuns();PicturesTable pTable = new PicturesTable(doc, dataStream, dataStream);for (int i = 0; i < numChar; ++i) {CharacterRun cuRun = range.getCharacterRun(i);boolean hasPic = pTable.hasPicture(cuRun);if (hasPic) {Picture picture = pTable.extractPicture(cuRun, true);try {picture.writeImageContent(new FileOutputStream(picPath + i + suffix));} catch (Exception e) {e.printStackTrace();}}}}/*** 获取word 文档里面所有表格* @param doc Document 对象*/public void getTables(HWPFDocument doc){Range range = doc.getRange();TableIterator tableIt = new TableIterator(range);while (tableIt.hasNext()) {Table table = (Table)tableIt.next();for(int j=0;j<table.numRows();j++){TableRow tr = table.getRow(j);String content = "";for(int i=0;i<tr.numCells();i++){TableCell cell = tr.getCell(i);for(int m=0;m<cell.numParagraphs();m++){ //获取单元格内容Paragraph para = cell.getParagraph(m);content += para.text().trim() + ";";}}System.out.println(content);}}/*** 获取文章中所有标题集合* @param doc Document* @return*/public List<String> getTitleList(HWPFDocument doc){Range range = doc.getRange();byte[] dataStream = doc.getDataStream();int numP = range.numParagraphs();List<String> titleList = new ArrayList<String>();PicturesTable pTable = new PicturesTable(doc, dataStream, dataStream);for(int i=0;i<numP;i++){Range curRange = range.getParagraph(i);Paragraph paragraph = range.getParagraph(i);CharacterRun cr = curRange.getCharacterRun(0);if(pTable.hasPicture(cr)){ //图片continue;}else{char currentChar = 0;for(int k=0;k<cr.text().length();k++){currentChar = cr.text().charAt(k);if(currentChar != Const.SPACE_ASCII){break;}if(currentChar == Const.ENTER_ASCII){ //回车符continue;}else if(currentChar == Const.SPACE_ASCII){ //空格符continue;}else if(currentChar == Const.TABULATION_ASCII){ //水平制表符continue;}}int numStyles = doc.getStyleSheet().numStyles();int styleIndex = paragraph.getStyleIndex();if (numStyles > styleIndex) {StyleSheet style_sheet = doc.getStyleSheet();StyleDescription style = style_sheet.getStyleDescription(styleIndex);String styleName = style.getName();if(styleName!=null&&styleName.contains("标题")){titleList.add(paragraph.text().trim());System.out.println(paragraph.text().trim());}}}return titleList;}/*** 获取整篇文章中所有标题样式名称* @param doc Document* @return*/public Set<String> getTitleStyleNameSet(HWPFDocument doc){Range range = doc.getRange();byte[] dataStream = doc.getDataStream();int numP = range.numParagraphs();Set<String> titNameSet = new HashSet<String>();PicturesTable pTable = new PicturesTable(doc, dataStream, dataStream);for(int i=0;i<numP;i++){Range curRange = range.getParagraph(i);Paragraph paragraph = range.getParagraph(i);CharacterRun cr = curRange.getCharacterRun(0);if(pTable.hasPicture(cr)){ //图片continue;}else{char currentChar = 0;for(int k=0;k<cr.text().length();k++){currentChar = cr.text().charAt(k);if(currentChar != Const.SPACE_ASCII){break;}}if(currentChar == Const.ENTER_ASCII){ //回车符continue;}else if(currentChar == Const.SPACE_ASCII){ //空格符continue;}else if(currentChar == Const.TABULATION_ASCII){ //水平制表符continue;}}int numStyles = doc.getStyleSheet().numStyles();int styleIndex = paragraph.getStyleIndex();if (numStyles > styleIndex) {StyleSheet style_sheet = doc.getStyleSheet();StyleDescription style = style_sheet.getStyleDescription(styleIndex);String styleName = style.getName();if(styleName!=null&&styleName.contains("标题")){if(styleName.contains(",")){styleName = getFirstStyleName(styleName);}titNameSet.add(styleName);}}}return titNameSet;}/*** 处理标题样式名称的特殊格式,如:“标题 3,标题 3 Char,标题3 Char Char” ,只获取“标题3”* @param styleName 需进行处理的标题样式,如"标题 3,标题3 Char,标题3 Char Char”* @return*/private String getFirstStyleName(String styleName){if ((styleName != null) && (styleName.length() > 0)) {int styleLeng = styleName.split(",").length;if(styleLeng>1){int comma = styleName.indexOf(",");if(comma>-1&&(comma<styleName.length())){return styleName.substring(0,comma);}}}return styleName;}/*** 获取当前文章中最大标题样式名称,如“标题1”* @param doc Document* @return*/public String getMaxTitleStyleName(HWPFDocument doc){ Set<String> titNameSet = getTitleStyleNameSet(doc);Iterator<String> it = titNameSet.iterator();List<Integer> tempLst = new ArrayList<Integer>();while(it.hasNext()){String titName = it.next(); //得到“标题1”、“标题2”try {int curStyleName = Integer.parseInt(titName.substring(2).trim());tempLst.add(curStyleName);} catch (NumberFormatException e) {continue;}}int max = (tempLst.size()==0?0:tempLst.get(0)); for(int i=0;i<tempLst.size();i++){int curSize = tempLst.get(i);if(curSize<max){max = curSize;}}if(max==0){return ""; //文章中不包含任何标题}return "标题 "+max;}/*** 获取word 文档中最大的字体* @param doc Document 对象*/public int getMaxFontSize(HWPFDocument doc) { int fontSize = 0;try {Range range = doc.getRange();for (int i = 0; i < range.numParagraphs(); i++) { Paragraph poiPara = range.getParagraph(i);int j = 0;while (true) {CharacterRun run = poiPara.getCharacterRun(j++); if(fontSize < run.getFontSize()) {fontSize = run.getFontSize();}//字体大小if (run.getEndOffset() == poiPara.getEndOffset()) {break;}}}} catch (Exception e) {e.printStackTrace();}return fontSize;}/*** 获取 word 文档的创建信息* @param docPath doc路径* @return 创建文档的信息*/public Map<String, String> getInfo(String docPath) {try {InputStream is = new FileInputStream(docPath);WordExtractor extractor = new WordExtractor(is);SummaryInformation info = extractor.getSummaryInformation();Map<String, String> mapInfo = new HashMap<String, String>();mapInfo.put("author", info.getAuthor()); // 作者mapInfo.put("title", info.getTitle()); // 标题mapInfo.put("subject", info.getSubject()); // 主题mapInfo.put("keyword", info.getKeywords()); // 关键词mapInfo.put("createdate",FormatTextUtil.dateFormat(info.getCreateDateTime())); // 创建时间mapInfo.put("updatedate",FormatTextUtil.dateFormat(info.getLastSaveDateTime())); // 修改时间} catch (Exception e) {}return null;}}2007实现类:PoiXwpfExtractContentImpl.javapackage com.peraglobal.extract.poi.impl;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import org.apache.poi.POIXMLDocument;import org.apache.poi.POIXMLT extExtractor;import org.apache.poi.POIXMLProperties.CoreProperties;import org.apache.poi.openxml4j.opc.OPCPackage;import org.apache.poi.xwpf.extractor.XWPFWordExtractor;import ermodel.XWPFDocument;import ermodel.XWPFParagraph;import ermodel.XWPFPictureData;import ermodel.XWPFTable;import ermodel.XWPFTableCell;import com.peraglobal.extract.poi.PoiExtractContent;import com.peraglobal.extract.util.FormatTextUtil;/*** 使用 POI 解析 DOCX2007 文件的内容信息* @author yongqian.liu* 2015-2-9*/public class PoiXwpfExtractContentImpl implements PoiExtractContent<XWPFDocument> {/*** 根据文件路径获得 Document 对象* @param docxPath 路径* @return Document*/public XWPFDocument getDocument(String docxPath) {//xwpfDocument是专门处理word的,在poi中还有处理其他office文档的类XWPFDocument docx = null;try {OPCPackage pack = POIXMLDocument.openPackage(docxPath);docx = new XWPFDocument(pack) ;} catch (Exception e) {e.printStackTrace();}return docx;}/*** 解析 word 文档的标题* @param docx Document 对象* @return word 文档中标题*/public String getTilte(XWPFDocument docx) {String title = "\";List<XWPFParagraph> paras = docx.getParagraphs();XWPFParagraph p = null;for (int i = 0; i < paras.size(); i++) {if(p.getText() != null && !p.getText().equals("") && !p.getText().equals("r")){title = p.getText().trim();break;}}return title;}/*** 获取 word 文档里所有文字内容(不包括图片、表格等格式的内容)* @param docx Document 对象* @return word 文档中文字部分全部内容*/public String getContent(XWPFDocument docx) {String content = "";try {List<XWPFParagraph> paras = docx.getParagraphs();for (XWPFParagraph para : paras) {content += para.getText().trim();}} catch (Exception e) {e.printStackTrace();}return content.replaceAll("", "");}/*** 获取 word 文档里所有文字内容(不包括图片、表格等格式的内容)* @param docxPath docx 对象路径* @return word 文档中文字部分全部内容*/public String getContent(String docxPath) {String content = "";try {OPCPackage opcPackage = POIXMLDocument.openPackage(docxPath);POIXMLTextExtractor extractor = new XWPFWordExtractor(opcPackage);content += extractor.getText().trim();} catch (Exception e) {e.printStackTrace();}return content.replaceAll("", "");}/*** 获取 word 文档里面所有图片并另存到指定目录下* @param docx Document 对象* @param picPath 保存图片路径* @param suffix 后缀名*/public void getPictures(XWPFDocument docx, String picPath, String suffix){List<XWPFPictureData> wpdList = docx.getAllPictures();if(wpdList != null && wpdList.size() > 0){for (int i = 0; i < wpdList.size(); i++) {byte[] picByte = wpdList.get(i).getData(); //获取图片数据流FileOutputStream fos = null;try {fos = new FileOutputStream(picPath + i + suffix);} catch (FileNotFoundException e) {e.printStackTrace();}finally{try {fos.write(picByte);} catch (IOException e) {e.printStackTrace();}}}}}/*** 获取word 文档里面所有表格* @param doc Document 对象*/public void getTables(XWPFDocument docx){Iterator<XWPFTable> tableIt = docx.getTablesIterator();while (tableIt.hasNext()) {XWPFTable table = tableIt.next();String rowInfo = "";for(int j = 0; j < table.getRows().size(); j ++){List<XWPFTableCell> cells = table.getRow(j).getTableCells(); // 获得所有列for (int k = 0; k < cells.size(); k++) {rowInfo += cells.get(k).getText().trim() + ";";}}System.out.println(rowInfo);}}/*** 获取word 文档中最大的字体* @param doc Document 对象*/public int getMaxFontSize(XWPFDocument docx) {int fontSize = 0;/* List<XWPFParagraph> paraGraph = docx.getParagraphs();for(XWPFParagraph para :paraGraph ){List<XWPFRun> run = para.getRuns();for(XWPFRun r : run){int i = 0;System.out.println("字体颜色:"+r.getColor());System.out.println("字体名称:"+r.getFontFamily());System.out.println("字体大小:"+r.getFontSize());System.out.println("Text:"+r.getText(i++));System.out.println("粗体?:"+r.isBold());System.out.println("斜体?:"+r.isItalic());if(fontSize < r.getFontSize()){fontSize = r.getFontSize();}}}*/return fontSize;}/*** 获取 word 文档的创建信息* @param docPath docx路径* @return 创建文档的信息*/public Map<String, String> getInfo(String docxPath) {try {InputStream is = new FileInputStream(docxPath);XWPFDocument docx = new XWPFDocument(is);XWPFWordExtractor extractor = new XWPFWordExtractor(docx);CoreProperties coreProps = extractor.getCoreProperties();Map<String, String> mapInfo = new HashMap<String, String>();//mapInfo.put("category", coreProps.getCategory()); //分类mapInfo.put("author", coreProps.getCreator()); //创建者mapInfo.put("title", coreProps.getTitle()); //标题mapInfo.put("subject", coreProps.getSubject()); // 主题mapInfo.put("keyword", coreProps.getKeywords()); // 关键词mapInfo.put("createdate",FormatTextUtil.dateFormat(coreProps.getCreated())); //创建时间mapInfo.put("updatedate",FormatTextUtil.dateFormat(coreProps.getLastPrinted())); // 修改时间} catch (Exception e) {}return null;}}相关推荐感谢关注Ithao123精品文库频道,是专门为互联网人打造的学习交流平台,全面满足互联网人工作与学习需求,更多互联网资讯尽在 IThao123!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
今天做了一个java发送邮件的小例子,总结一下,愿意和大家交换意见。
相关内容:1、要有两个邮箱(一个发送邮件,一个接收邮件)
2、下载两个jar包(mail-1.4.1.jar,activation-1.1.1.jar)
3、编写一个发送邮件的类(SendMail)
原理:程序利用发送邮件的账号(这里是a123456@和密码999999)去登录邮箱服务器(这里是)。
之后向另外一个邮箱(这里是123456@)发送一个邮件,邮件的标题和内容等可以在程序里面设定好
以下代码可以正确运行且发送邮件。
注意修改两个邮箱地址
import java.util.Properties;
import javax.mail.BodyPart;
import javax.mail.Message;
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;
public class SendMail {
private String host= ""; // smtp服务器 ,这里是网易126 邮箱服务器地址
private String user = "a123456"; // 用户名,即发送邮件邮箱
(a123456@)的名称
private String pwd= "999999"; // 密码,a123456@ 在 的登录密码
private String from = "a123456@"; // 发件人地址
private String to = "123456@"; // 收件人地址
private String subject = "hello"; // 邮件标题
public void setAddress(String from, String to, String subject) { this.from = from;
this.to = to;
this.subject = subject;
}
/**
*此方法可以不做修改,直接调用
*@param txt
*/
public void send(String txt) {
Properties props = new Properties();
// 设置发送邮件的邮件服务器的属性(这里使用网易的smtp服务器)
props.put("mail.smtp.host", host);
// 需要经过授权,也就是有户名和密码的校验,这样才能通过验证(一定要有这一条)
props.put("mail.smtp.auth", "true");
// 用刚刚设置好的props对象构建一个session
Session session = Session.getDefaultInstance(props);
// 有了这句便可以在发送邮件的过程中在console处显示过程信息,供调试使
// 用(你可以在控制台(console)上看到发送邮件的过程)
session.setDebug(true);
// 用session为参数定义消息对象
MimeMessage message = new MimeMessage(session);
try {
// 加载发件人地址
message.setFrom(new InternetAddress(from));
// 加载收件人地址
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
// 加载标题
message.setSubject(subject);
// 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件 Multipart multipart = new MimeMultipart();
// 设置邮件的文本内容
BodyPart contentPart = new MimeBodyPart();
contentPart.setText(txt);
multipart.addBodyPart(contentPart);
// 添加附件
//BodyPart messageBodyPart = new MimeBodyPart();
//DataSource source = new FileDataSource(affix);
// 添加附件的内容
//messageBodyPart.setDataHandler(new
DataHandler(source));
// 添加附件的标题
// 这里很重要,通过下面的Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码
//sun.misc.BASE64Encoder enc = new
sun.misc.BASE64Encoder();
//messageBodyPart.setFileName("=?GBK?B?"+
enc.encode(affixName.getBytes()) + "?=");
//multipart.addBodyPart(messageBodyPart);
// 将multipart对象放到message中
message.setContent(multipart);
// 保存邮件
message.saveChanges();
// 发送邮件
Transport transport = session.getTransport("smtp");
// 连接服务器的邮箱
transport.connect(host, user, pwd);
// 把邮件发送出去
transport.sendMessage(message,
message.getAllRecipients());
transport.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
SendMail cn = new SendMail();
// 设置发件人地址、收件人地址和邮件标题
cn.setAddress("a123456@", "123456@", "helloss");
cn.send("hello余云峰");
}
}
注意会出现:
1、如果出现Exception in thread "main" ng.NoClassDefFoundError:
com/sun/mail/util/BASE64EncoderStream
解决办法:下载mail.jar包,添加到lib里就可以了~
2、如果你用myEclipse进行开发的话,运行时可能会出现以下的错误:
Exception in thread "main" ng.NoClassDefFoundError:
com/sun/mail/util/LineInputStream
解决方法:移除myEclipse自带的Java EE 5 Libraries包。
但你可能还需要用到EE包里的servlet 相关类,那可以从Tomcat的lib文件夹中复制servlet-api.jar到project中,用它来代替EE包,一切OK!
本例子下载使用的jar包有
1、mail-1.4.1.jar
2、activation-1.1.1.jar。