- 浏览: 195412 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
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 1296json-lib框架需要在jsonconfig里设置 http ... -
转载:JVM性能参数调优实践,不会执行Full GC,网站无停滞
2012-02-17 12:09 2244JVM参数调优是个很头痛 ... -
TaskManager故障分析解决
2012-02-16 19:19 25071.错误 TaskManager,频繁崩溃。 tomcat崩溃 ... -
Java调用linux scp操作 zz
2011-11-01 10:43 1898先来回顾下linux下scp命 ... -
Maven创建Web工程,把Maven项目变成Dynamic Web项目
2011-09-08 10:15 19895http://code.google.com/p/j2eewi ... -
Eclipse的Dynamic Web Project与Maven的的整合
2011-09-08 09:54 1813Eclipse的Dynamic Web Project支持直接 ... -
ADTV项目回忆
2011-06-21 13:38 1278其实是TV AD System 数字电视广告系统。 待续.. ... -
一个swing的小工程
2011-06-13 20:58 2103这个工程用于统计文件或代码行数,原来是帮朋友做的。 第一次用J ... -
Taskmanager项目回忆
2011-02-12 18:08 1078待完成... -
Querydsl有趣的通用查询框架
2011-02-12 11:43 18377说起Querydsl这里不得不 ... -
多态调用顺序
2010-11-04 18:06 940方法调用的优先问题 ,优先级由高到低依次为: this.sho ... -
java截取中英文混合字符串 等宽显示
2010-08-16 12:06 7042import java.io.UnsupportedEnc ... -
Spring no matching editors or conversion strategy found 异常的一种情况
2010-08-09 20:44 8080有人说这样写可以 <tx:advice id=" ... -
Freemarker+Struts2 国际化应用
2010-07-14 15:21 1487Struts2使用FreeMarker作为 ... -
ognl.OgnlException: target is null for setProperty(null,
2010-06-07 20:12 1427出现这样的错误还可能是action的struts.xml没配置 ... -
struts2.x标签if test 的一个字符型值字符串比较
2010-05-06 22:05 5211例如这个语句 要判断struts堆栈里systemSettin ... -
ubuntu,eclipse下svn切换用户的方法
2010-05-06 21:53 2921ubuntu下eclipse使用svn 想更改用户,但上一个用 ... -
zz:Freemarker 内置函数 数字、字符串、日期格式化
2010-01-25 11:42 1629一、Sequence的内置函数 1 ... -
freemarker+struts2+ibatis入门学习摘要
2009-09-09 12:48 1387见附件,初级学习摘要+完整实例project。 欢迎批评指正v ...
相关推荐
1. `Properties props`:这是一个属性对象,用来存储连接邮件服务器的配置信息。其中,`props.put("mail.smtp.starttls.enable", "true")`将启动TLS支持,如果是SSL,则应使用`"mail.smtp.socketFactory.class"`和`...
### JavaMail发送邮件时遇到的问题及解决方法 在使用JavaMail进行邮件发送的过程中,可能会遇到以下几种常见问题:发送成功但收件方未收到邮件、邮件收到后无主题或无收件人信息以及邮件内容出现乱码等情况。本文将...
Session 对象是 JavaMail 库中的一个核心对象,用于配置邮件服务器的连接信息。我们可以使用 Session 对象的 setProperty 方法来设置邮件服务器的主机名和端口号。 在本文中,我们讨论了如何使用 JavaMail 库来代发...
message.setText("这是一封由JavaMail发送的测试邮件。"); // 发送邮件 Transport.send(message); System.out.println("邮件已成功发送!"); } } ``` 在这个例子中,我们创建了一个`Properties`对象来配置SMTP...
JavaMail是一种在Java环境中发送和接收电子邮件的标准API,它提供了丰富的功能来处理复杂的邮件操作。在Struts2框架中集成JavaMail服务,可以方便地在Web应用中实现邮件的发送功能。下面我们将深入探讨JavaMail的...
在Java编程领域,JavaMail API是一个非常重要的工具,它允许开发者通过编程方式发送电子邮件。"常规JavaMail 邮件发送实用类"标题所指的,通常是一个自定义的Java类,封装了JavaMail API的基本操作,使得邮件发送变...
JavaMail 是一个强大的开源库,用于在Java应用程序中发送和接收电子邮件。这个“javamail发送邮件.zip”压缩包显然包含了一个示例项目,演示如何使用JavaMail API发送包含正文文本、图片以及附件的邮件。以下是对这...
JavaMail 是一个强大的开源库,用于在Java应用程序中发送和接收电子邮件。在JavaMail中,发送带有附件的邮件涉及到对MIME(Multipurpose Internet Mail Extensions)标准的理解和使用。MIME扩展了邮件协议,允许在...
James的核心特性之一是其可扩展性,可以通过插件连接到各种数据库,以便存储和管理邮件数据。 JavaMail API是Java平台上的一个标准API,用于处理邮件服务。它提供了丰富的类和接口,可以用来创建、发送、接收和管理...
JavaMail 是一个开源的 Java 库,用于处理电子邮件的发送和接收。它提供了一组 API,使得开发者可以方便地在 Java 应用程序中集成邮件功能。本示例将介绍如何使用 JavaMail 实现发送邮件的功能。 首先,我们需要...
`Transport`用于发送邮件,而`Store`则用于连接邮件服务器并接收邮件。 使用JavaMail API的内容会涵盖实际的代码示例,比如如何创建和发送简单的文本邮件、带有附件的邮件,以及如何接收和读取邮件。这部分还会涉及...
JavaMail 是一个强大的开源库,用于在Java应用程序中发送和接收电子邮件。这个功能通常涉及到SMTP(简单邮件传输协议)和其他相关的互联网邮件协议。在JavaMail中,`mail.jar` 和 `activation.jar` 是两个关键的库...
JavaMail 是一个开源的 Java 库,用于处理电子邮件的发送和接收。它提供了一组 API,使得开发者可以方便地在 Java 应用程序中集成邮件功能。本篇将详细介绍如何利用 JavaMail 实现邮件发送,包括发送、抄送、密送...
JavaMail是一种广泛使用的Java库,用于在应用程序中发送电子邮件。这个标题"JavaMail发送邮件(文本、html、附件)"涵盖了使用JavaMail API发送不同格式邮件的核心功能。下面将详细介绍如何利用JavaMail发送文本、...
JavaMail 是一个强大的开源库,用于在 Java 应用程序中发送和接收电子邮件。要实现定时发送邮件,我们可以结合 JavaMail 和 Java 计时器框架(如文中提到的 Java Timer)。以下是一个详细的步骤来实现这个功能: 1....
JavaMail 是一个开源库,用于在Java应用程序中发送和接收电子邮件。这个库提供了一组API,使得开发者可以方便地处理SMTP、POP3、IMAP等邮件协议。在本篇文章中,我们将深入探讨如何使用JavaMail API来实现邮件的发送...
`Store`类用于连接邮件服务器并获取邮件,而`Folder`类代表邮箱中的文件夹,如“收件箱”、“已发送”等。 以下是接收邮件的一般流程: 1. 创建`Properties`对象,设置IMAP或POP3服务器信息。 2. 创建`Session`...
JavaMail是一种在Java应用程序中发送和接收电子邮件的标准API,它为开发者提供了强大的功能,使得处理邮件变得简单而高效。在JavaMail中,我们主要利用 javax.mail 和 javax.mail.internet 这两个包中的类来实现邮件...
在IT领域,JavaMail API是Java开发者用于处理电子邮件发送与接收的强大工具。通过解析给定文件的标题、描述、标签及部分内容,我们可以深入探讨javamail发送与接收邮件的详细教程,以及如何利用JavaMail API实现邮件...
JavaMail 是一个开源的 Java 库,用于处理电子邮件的发送和接收。它提供了与 SMTP、POP3 和 IMAP 协议交互的接口,是开发基于 Java 的电子邮件应用的基础。回执邮件是邮件服务中的一项功能,它允许发件人在发送邮件...