- 浏览: 85484 次
- 性别:
- 来自: 苏州
最新评论
-
javazeke:
自己支持一下,,,希望下周有help
求oracle11g和10g 双机热备文档 -
javazeke:
kimmking 写道mr_kairy 写道看你的结构 就是 ...
江湖求方案,类似SSO系统的需求 -
javazeke:
yangdefeng95802 写道LZ的图是什么软件画的?真 ...
江湖求方案,类似SSO系统的需求 -
javazeke:
mr_kairy 写道看你的结构 就是 SOA 解决方案。。 ...
江湖求方案,类似SSO系统的需求 -
javazeke:
threestone1026 写道使用cas了
感谢thre ...
江湖求方案,类似SSO系统的需求
javaMail的应用,看网上有好多关于这个应用的示例。我上传只是算一种学习的积累吧。顺
便积累一下点击数,嘿嘿。大多数在这里面的朋友都是在职人员了,我还是一学生。在这里
胡乱写写,为了在毕业时能在简历上写上,个人博客www.javazeke.iteye.com,O(∩_
∩)O哈哈~.........说明我还会一点点东西吧。。。。
搞了好长时间,处理把附件变成模板邮件的资源。最后才发现MimeBodyPart提供这种功能,
真是晕死我了。一开始我笨到自己写流去处理,看来以后要更多的看书,圣人说:博学博爱
嘛!!!
好了,废话连篇。。呵呵,,下面给大家介绍下这么去发这东西
表单: <form action="Send" method="post" name="mail" enctype="multipart/form-data"> 发邮件的地址:<input name="from" value="356354803@qq.com"> 发件箱的密码:<input name="secret"> //这个是必要的,还有这个邮箱必须开通的SMTP/POP3,QQ是可以开通的,126的好像不行。 接受者地址:<input name="to" value="masterjc@126.com"> 主题:<input name="subject" value="dsadfsdadfasdfasss"> 附件:<input type="file" name="file"> 内容:<textarea rows="10" cols="60" name="context">asfdsafsafsadfsafdasdsfafas</ textarea> 提交:<input type="submit"> </form>
下面是处理代码(我就用servlet写的,就没用那些框框架架了,没有框架代码的侵入,下
次复制才复制的爽啊。。。)
import java.io.IOException; import java.io.PrintWriter; import java.text.MessageFormat; import java.util.Date; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; 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; import javax.mail.internet.MimeUtility; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.oreilly.servlet.MultipartRequest; @SuppressWarnings("serial") public class Send extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); request.setCharacterEncoding("gbk"); //封装请求,这个处理很牛,一般人做不到。。。 MultipartRequest re=new MultipartRequest(request,".",1024*1024,"gbk"); // 接收邮件类容 String from = re.getParameter("from"); String to = re.getParameter("to"); String subject = re.getParameter("subject"); //我把内容去掉了,为了是用模板 //String context = re.getParameter("context"); String secret = re.getParameter("secret"); String filePath=re.getFilesystemName("file"); // 邮件的服务器地址,邮件服务器的服务器名 String mailServerName = "smtp.qq.com"; try { // 获得系统属性 Properties prop = System.getProperties(); // 设置属性 prop.setProperty("mail.smtp.host", mailServerName); prop.setProperty("mail.smtp.port", "25"); prop.setProperty("mail.smtp.auth", "true"); String name=from.substring(0,from.indexOf("@")); MyAuthenticator au = new MyAuthenticator(name,secret); // 建立邮件发送的连接 Session session = Session.getDefaultInstance(prop, au); // 创建邮件信息的载体 Message message = new MimeMessage(session); // 设置邮件相关属性 // 设置邮件发送地址 message.setFrom(new InternetAddress(from)); // 点到点的发送 //一对多发送只要改一个地方如下: /** *构建一个群发地址数组 *InternetAddress[] adr=new InternetAddress[toMore.length]; *for(int i=0;i<toMore.length;i++){ * adr[i]=new InternetAddress(toMore[i]); *} *Message的setRecipients方法支持群发。。注意:setRecipients方法是复数和点 *到点不一样 *message.setRecipients(Message.RecipientType.TO,adr); */ message.setRecipient(Message.RecipientType.TO, new InternetAddress(to)); // 设置邮件主题 message.setSubject(subject); // 邮件发送时间 message.setSentDate(new Date()); /* * 取得模板邮件的xml地址,这里用xml好处可大了,可以换行编写啊, * 如果你用properties文件,一个网页文件的内容都写在一行,看着都不舒服 */ String path=this.getServletContext().getRealPath("/")+"mailTemplate\\MyXml.xml"; //这个类下面贴,就几行代码,没什么神奇的 String str=new ReaderXML().read(path); Object[] obj=new Object[]{"zeke","123456","img1"}; //这个MessageFormat是个好东西,不了解的去jdk看看,在java.text下面 str = MessageFormat.format(str, obj); MimeBodyPart mbp1=new MimeBodyPart(); mbp1.setContent(str, "text/html;charset=gbk"); /* * 附件上传的代码,相信大家附件上传都没问题,就是这么才能把它变成模板资源 呢?。。。O(∩_∩)O哈哈~。。。。很easy啦,,我也搞了好久,才发现。 */ MimeBodyPart mbp2=new MimeBodyPart(); FileDataSource fds=new FileDataSource(filePath); DataHandler dh=new DataHandler(fds); mbp2.setDataHandler(dh); //这里很重要,这里是如何把附件变成模板可利用资源这 //相当于给这个附件绑定一个名字 //他到底怎么实现的底层,有几种猜想,不知道是不是, //有一种想法,是不是把这个数据域设成一个消息头,然后在本页面类引用啊 //相当于cookie,不确定,这消息头也腻大了点啊,,O(∩_∩)O哈哈~ //这里要是有前辈看到了,请告诉我一下,先谢谢了。。。 mbp2.setHeader("Content-ID", "img1"); mbp2.setFileName(MimeUtility.encodeText(fds.getName())); Multipart mp=new MimeMultipart(); mp.addBodyPart(mbp1); mp.addBodyPart(mbp2); message.setContent(mp); // 关键。。。。发送 Transport.send(message); } catch (Exception e) { e.printStackTrace(); } out.write("ok"); out.flush(); out.close(); } }
上面提到的读模板件的类
import java.io.File; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class ReaderXML { public String read(String path){ String str=null; str=reader(path); return str; } private String reader(String path){ SAXReader reader=new SAXReader(); String str=null; try { Document d=reader.read(new File(path)); Element e=d.getRootElement(); Element htmle=e.element("html"); str=htmle.asXML(); } catch (DocumentException e) { e.printStackTrace(); } return str; } }
模板文件(.xml)
<?xml version="1.0" encoding="UTF-8"?>
<xml-body>
<html>
<head>
</head>
<body>
<div id="main" style="width:966px; height:330px; text-align:left;
margin:3px 26px; background-color:#F5F5F5; border:1px
#E1E1E1 solid;">
<b>
userName:{0}
<br />
userPass:{1}
<br />
<a href="http://www.google.com">去Google看看</a>
</b>
<img src="cid:{2}" />
</div>
</body>
</html>
</xml-body>
下面这个就不多说了,大家都知道 import javax.mail.PasswordAuthentication; public class MyAuthenticator extends javax.mail.Authenticator { private String strUser; private String strPwd; public String getStrUser() { return strUser; } public void setStrUser(String strUser) { this.strUser = strUser; } public String getStrPwd() { return strPwd; } public void setStrPwd(String strPwd) { this.strPwd = strPwd; } public MyAuthenticator(String user, String password) { this.strUser = user; this.strPwd = password; } protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(strUser, strPwd); } }
到这边所有的内容都贴上了,几个注意点
1.邮箱必须开通的SMTP/POP3,QQ是可以开通的,126的好像不行。
2.附件变成可利用资源,通过MimeBodyPart的setheader方法....上面有详细说明。
发表评论
文章已被作者锁定,不允许评论。
-
求oracle11g和10g 双机热备文档
2010-12-17 22:13 1521项目来了,,需求下来,,怕赔不起,,决定用热备 可怜的我,, ... -
江湖求方案,类似SSO系统的需求
2010-10-16 10:59 1451现有资料,大Boss交代我来弄,说实话,这东东我也不知道怎么 ... -
js array
2010-07-04 11:18 995zhuan zi http://renxiangzyq.i ... -
Ldap之活动目录之userAccountControl
2010-04-22 10:27 3808When you open the properties fo ... -
Ldap之活动目录之属性
2010-04-22 10:19 1908“常规”标签 姓 Sn 名 Givename ... -
Ldap之活动目录介绍三
2010-04-22 10:12 1203安装第二台域控制器 在安装完第一台域控制器后其域名为 n ... -
Ldap之活动目录介绍二
2010-04-22 10:10 1278运行 Active Directory 安 ... -
Ldap之活动目录介绍一
2010-04-22 09:43 2611最近一直在做java通过Ldap去操作活动目录数据的东东,过程 ... -
我迷茫,我应该怎么走。望各位JE大哥指点!
2010-03-26 09:56 1625小弟六月毕业,在学校还算好学生,从大二起接触编程,,那时的编程 ... -
xp桌面回收站恢复
2010-02-21 19:14 831开始-运行gpedit.msc-本地计算机策略-用户配 ... -
MyEclipse7.5注册机
2010-01-25 17:29 930首先感谢提供源码的那位大牛,我只是做成了exe执行文件而已 -
DSA和RSA算法的差异
2009-11-20 19:13 15521978年就出现了这种算法 ... -
仿Google自动补全 jquery
2009-11-20 16:40 2834应大家要求,发一个包,方便大家使用,有问题欢迎e-mail : ... -
对称加密的两种方式
2009-11-18 22:33 1817对称加密,这东东现在 ... -
java简单对象池
2009-11-10 20:53 3939在项目中用到,自己写了个对象池的管理(创建、保留、获取),那种 ... -
仿Google自动补全 jQuery 不含索引处理 2
2009-11-08 14:39 1044Servlet。。。。。。。。。。。。。。。。。 pu ... -
仿Google自动补全 jQuery 不含索引处理
2009-11-08 14:29 1313自动补全 1. 页面有一个文本框,一个自动提示层,一个按 ... -
Java数据库通用查询及封装
2009-11-08 13:54 6243Java数据库通用查询及封装 时常在网上看到,有关Java数据 ... -
Java实现快排的算法
2009-10-14 22:28 2923Java实现快排的算法 public class Quick ... -
Collection List Set Map 区别记忆
2009-10-13 20:15 891一篇对Java集合讲解不错的文档,不是我写的,转过来和大家分享 ...
相关推荐
JSP与JavaMail发送HTML格式... java,javamail发送html邮件..
javaMail发送邮件 发送成功 收不到邮件 或收到邮件无主题无收件人乱码 查看debug 邮件处理过程发现邮件头没有编译, 内容是base64编码,所以邮箱收不到或者收到的是base64编码后的一堆乱码,
本资源是一个集合发送图片,附件,内容,HTML等得JAVAMAIL代码,并且可以同时发送多个附件多个图片,只需填充VO类,即可直接调用并发送邮件,例子已经写好,只要填充上必要值即可,经163,qq,sina测试没有问题,有...
配置好用户名密码以及SMTP服务器就可以直接运行。已包含相关jar
该资源是一个javamail发送邮件的例子,里面集成了别人的文件发送的功能,单次发送邮件只能上传一个附件。是一个测试方法,拿过来改一改邮件的地址和密码就可以使用了
javamail发送邮件实例 javamail 发送邮件 文本编辑器 kindeditor
javamail 邮件发送支持带有图片的html格式和普通文本格式
JavaMail实现邮件发送的简单封装(包括文本、图片、html、附件) 详见http://blog.csdn.net/lyisray/article/details/42002215
里面详细的介绍了JavaMail发邮件(包括单个附件和多个附件)的机制,还有JavaMail正常使用所需要的JAR包,源程序例子经过本人详细且严格的测试,大家下载下来就可以直接使用啦。
此源码是使用javamail发送邮件,可以实现静默发送邮件,可以发送附件资源等。有相应的使用说明,快捷好用
06 使用JavaMail发送带附件的邮件.exe06 使用JavaMail发送带附件的邮件.exe
Javamail发送邮件类库,Java发送邮件需要用到该类库
Struts2框架,javamail发送邮件,可以直接用main()调用,也可通过tomcat,在IE上运行,比较简单易懂。
如何用javamail定时发送邮件
介绍了如何利用javamail实现带附件的邮件发送,附有代码
javamail 发送收取邮件
本资源是一个集合发送图片,附件,内容,HTML等得JAVAMAIL代码,并且可以同时发送多个附件多个图片,只需填充VO类,即可直接调用并发送邮件,例子已经写好,只要填充上必要值即可,经163,qq,sina测试没有问题,有...
javamail实现发送邮件的小例子,简单易会,好用记得给好评哦!
JavaMail邮件发送(带附件)