- 浏览: 192220 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
ywbrj042:
互联网项目用处不大
Querydsl有趣的通用查询框架 -
qupei2u:
試過刪了還是不行~
ubuntu,eclipse下svn切换用户的方法 -
huixia0010:
感谢分享,已经转载到了我的博客,并附上了本文链接,非常感谢
php截取等长UFT8中英文混合字串 -
aiou:
mymoola 写道请问能不能在整理一下,看到写着有些代码不要 ...
旁门左道做joomla多级分类一 -
aiou:
imlyj 写道我的不行。有一个方法,可以让之前的用户的密码先 ...
ubuntu,eclipse下svn切换用户的方法
改编自网络
其中附件部分没有测试
调用:
你说反了,现在是相同用户发送不同内容
下面你可以创建任意多个邮件
其中附件部分没有测试
import java.util.Date; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.mail.Address; import javax.mail.Authenticator; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.NoSuchProviderException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; public class SendMail { private Session session; //会话 private Transport transport; //发送邮件 private final String MAIL_SMTP_HOST = "mail.smtp.host"; private final String MAIL_SMTP_AUTH = "mail.smtp.auth"; private static Properties props = new Properties(); static{ if (props == null) { props = System.getProperties(); } } public SendMail(String userName,String password,String host,boolean needAuth) { init(userName,password,host,needAuth); } /** * 初始化<code> Session, Transport </code> */ private void init(String userName,String password, String host, boolean needAuth ) { SmtpAuth sa = null; if(needAuth){ sa = new SmtpAuth(userName, password); // 需要经过授权,也就是有户名和密码的校验,这样才能通过验证(一定要有这一条) props.put(MAIL_SMTP_AUTH, "true"); }else{ props.put(MAIL_SMTP_AUTH, "false"); } // 设置发送邮件的邮件服务器的属性(这里使用网易的smtp服务器) props.put(MAIL_SMTP_HOST, host); // 用刚刚设置好的props对象构建一个session session = Session.getDefaultInstance(props, sa); try { transport = session.getTransport("smtp"); // 连接服务器的邮箱 transport.connect(host, userName, password); } catch (NoSuchProviderException e) { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } System.out.println("与 " + host + " 成功建立会话"); } /** * <b>登录验证</b> */ class SmtpAuth extends Authenticator { private String user, password; public SmtpAuth(String getuser, String getpassword) { user = getuser; password = getpassword; } @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(user, password); } } /** * 构造邮件的内容 * * @return * @throws AddressException * @throws MessagingException */ public Message createMessage(String from,String to, String title, String content, String cc,boolean isContentFlag,boolean isAffixFlag,boolean isMimeContent,String affix,String affixName) throws AddressException, MessagingException { // 用session为参数定义消息对象 MimeMessage message = new MimeMessage(session); // 加载发件人地址 message.setFrom(new InternetAddress(from)); message.setSentDate(new Date()); // 加载收件人地址 message.addRecipients(Message.RecipientType.TO, getAddress(to)); if (cc != null) message.addRecipients(Message.RecipientType.CC, getAddress(cc)); // 加载标题 message.setSubject(title); if (isContentFlag || isAffixFlag) { // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件 Multipart multipart = new MimeMultipart(); if (isContentFlag) { // 设置邮件的文本内容 MimeBodyPart contentPart = new MimeBodyPart(); if (isMimeContent) contentPart.setContent(content,"text/html;charset=GBK"); else contentPart.setText(content); multipart.addBodyPart(contentPart); } if (isAffixFlag) { // 添加附件 BodyPart affixBody = new MimeBodyPart(); DataSource source = new FileDataSource(affix); // 添加附件的内容 affixBody.setDataHandler(new DataHandler(source)); // 添加附件的标题这里很重要,通过下面的Base64编码的转换可以保证你的 // 中文附件标题名在发送时不会变成乱码 sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder(); String fileName = "=?GBK?B?"+enc.encode(affixName.getBytes()) + "?="; affixBody.setFileName(fileName); multipart.addBodyPart(affixBody); } // 将multipart对象放到message中 message.setContent(multipart); } // 保存邮件 message.saveChanges(); return message; } /** * 发送邮件,包含:邮件正文、(1个附件) * * @param debug * 调试设置 */ public void send(Message message) { // 有了这句便可以在发送邮件的过程中在console处显示过程信息,供调试使 // 用(你可以在控制台(console)上看到发送邮件的过程) session.setDebug(true); try { transport.sendMessage(message, message.getAllRecipients()); } catch (AddressException e) { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } } /** * 关闭资源 * * @throws MessagingException */ public void close() throws MessagingException { if (null != transport) try{ transport.close(); System.out.println("成功关闭会话"); }catch (Exception e) { transport = null; } } public Address[] getAddress(String address) throws AddressException{ Address[] addr = InternetAddress.parse(address); return addr; } public Address[] getAddress(String[] address) throws AddressException { Address[] addrs = new InternetAddress[address.length]; for (int i = 0; i < address.length; i++) addrs[i] = new InternetAddress(address[i]); return addrs; } }
调用:
//建立连接 SendMail sendMail = new SendMail(Config.getSmtpName(), Config.getSmtpPassword(), Config.getSmtpHost(), true); //发送邮件,可以发送任意多次 Message message = sendMail.createMessage(Config.getSmtpFrom(), email, title, body, null, true, false, true,"",""); sendMail.send(message); //最后关闭连接 sendMail.close();
评论
2 楼
aiou
2010-11-26
lzg406 写道
这个貌似只能够处理:不同的用户发送相同的内容的邮件
你说反了,现在是相同用户发送不同内容
下面你可以创建任意多个邮件
//发送邮件,可以发送任意多次 Message message = sendMail.createMessage(Config.getSmtpFrom(), email, title, body, null, true, false, true,"",""); sendMail.send(message);
1 楼
lzg406
2010-11-25
这个貌似只能够处理:不同的用户发送相同的内容的邮件
发表评论
-
借助Spring监听接口为数据库初始化数据
2012-03-31 09:36 0在做WEB项目时,经常在 ... -
json遇到java关键字
2012-03-23 10:58 1188json-lib框架需要在jsonconfig里设置 http ... -
转载:JVM性能参数调优实践,不会执行Full GC,网站无停滞
2012-02-17 12:09 2185JVM参数调优是个很头痛 ... -
TaskManager故障分析解决
2012-02-16 19:19 24391.错误 TaskManager,频繁崩溃。 tomcat崩溃 ... -
Java调用linux scp操作 zz
2011-11-01 10:43 1855先来回顾下linux下scp命 ... -
Maven创建Web工程,把Maven项目变成Dynamic Web项目
2011-09-08 10:15 19808http://code.google.com/p/j2eewi ... -
Eclipse的Dynamic Web Project与Maven的的整合
2011-09-08 09:54 1773Eclipse的Dynamic Web Project支持直接 ... -
ADTV项目回忆
2011-06-21 13:38 1233其实是TV AD System 数字电视广告系统。 待续.. ... -
一个swing的小工程
2011-06-13 20:58 2047这个工程用于统计文件或代码行数,原来是帮朋友做的。 第一次用J ... -
Taskmanager项目回忆
2011-02-12 18:08 1041待完成... -
Querydsl有趣的通用查询框架
2011-02-12 11:43 18298说起Querydsl这里不得不 ... -
多态调用顺序
2010-11-04 18:06 898方法调用的优先问题 ,优先级由高到低依次为: this.sho ... -
java截取中英文混合字符串 等宽显示
2010-08-16 12:06 6988import java.io.UnsupportedEnc ... -
Spring no matching editors or conversion strategy found 异常的一种情况
2010-08-09 20:44 8025有人说这样写可以 <tx:advice id=" ... -
Freemarker+Struts2 国际化应用
2010-07-14 15:21 1441Struts2使用FreeMarker作为 ... -
ognl.OgnlException: target is null for setProperty(null,
2010-06-07 20:12 1342出现这样的错误还可能是action的struts.xml没配置 ... -
struts2.x标签if test 的一个字符型值字符串比较
2010-05-06 22:05 5166例如这个语句 要判断struts堆栈里systemSettin ... -
ubuntu,eclipse下svn切换用户的方法
2010-05-06 21:53 2828ubuntu下eclipse使用svn 想更改用户,但上一个用 ... -
zz:Freemarker 内置函数 数字、字符串、日期格式化
2010-01-25 11:42 1589一、Sequence的内置函数 1 ... -
freemarker+struts2+ibatis入门学习摘要
2009-09-09 12:48 1297见附件,初级学习摘要+完整实例project。 欢迎批评指正v ...
相关推荐
javaMail发送邮件 发送成功 收不到邮件 或收到邮件无主题无收件人乱码 查看debug 邮件处理过程发现邮件头没有编译, 内容是base64编码,所以邮箱收不到或者收到的是base64编码后的一堆乱码,
javamail实现的163邮箱发送到腾讯邮件的示例、 已经javamail的详细API级demo!
如何用javamail定时发送邮件
javamail发送邮件实例 javamail 发送邮件 文本编辑器 kindeditor
基于javamail1.4实现邮件发送,支持多收件人、抄送人、多附件等
JavaMail实现邮件发送功能,可发送、抄送、密送多人,支持多附件的发送。配置相关参数后可直接调用发送邮件
介绍了如何利用javamail实现带附件的邮件发送,附有代码
此源码是使用javamail发送邮件,可以实现静默发送邮件,可以发送附件资源等。有相应的使用说明,快捷好用
该资源是一个javamail发送邮件的例子,里面集成了别人的文件发送的功能,单次发送邮件只能上传一个附件。是一个测试方法,拿过来改一改邮件的地址和密码就可以使用了
javamail批量发送邮件
Struts2框架,javamail发送邮件,可以直接用main()调用,也可通过tomcat,在IE上运行,比较简单易懂。
用javaMail实现公司内网邮箱邮件发送,包括邮件附件,邮件发送人和抄送人
javamail实现发送邮件的小例子,简单易会,好用记得给好评哦!
Javamail发送邮件类库,Java发送邮件需要用到该类库
纯java发送简单邮件的功能,支持嘱性文件的配置,可配多人接收,多个附件,简单。。。
如何用javamail定时发送邮件.doc
javamail发送邮件;支持群发、单次发送;文本发送,html发送
javamail所需要的两个jar包。mail.jar,activation.jar 博文链接:https://javeye.iteye.com/blog/153827
javamail 回执邮件资料
JSP与JavaMail发送HTML格式... java,javamail发送html邮件..