- 浏览: 905441 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (263)
- J2EE (9)
- Spring (11)
- Hibernate (11)
- Struts (5)
- opensource (19)
- Hadoop (28)
- 架构设计 (8)
- 企业应用 (10)
- SNMP (8)
- SSO (4)
- webservice (11)
- RPC (2)
- 编程语言 (0)
- Java (30)
- Javascript (5)
- NoSQL (11)
- 数据库 (0)
- oracle (8)
- MySQL (3)
- web (1)
- Android (2)
- Linux (15)
- 软件工具 (15)
- 项目构建 (11)
- 测试工具 (2)
- Exception (19)
- 杂谈 (4)
- Groovy (5)
- Nodejs (1)
- MacOSX (4)
最新评论
-
fighhin:
decode(BinaryBitmap,java.util.M ...
条形码/二维码之开源利器ZXing图文介绍 -
u013489005:
追问:楼主,请问有中文文档么?我的邮箱是frankgray@s ...
Java表达式计算引擎:Expr4J -
u013489005:
感谢博主 需要引入的包是import java.io.*;im ...
Java表达式计算引擎:Expr4J -
calosteward:
感谢楼主分享。。 Zxing 我听说过的。__________ ...
条形码/二维码之开源利器ZXing图文介绍 -
u013810758:
judasqiqi 写道感谢楼主!想请问楼主一下这个生成的图片 ...
Java实现二维码QRCode的编码和解码
blog迁移至:http://www.micmiu.com
J2EE JavaMailhttp://java.sun.com/products/javamail
JavaMail API是一种可选的、能用于读取、编写和发送电子消息的包(标准扩展)。您可使用这种包创建邮件用户代理(Mail User Agent ,MUA) 类型的程序,它类似于Eudora、Pine及Microsoft Outlook这些邮件程序。其主要目的不是像发送邮件或其他邮件传输代理(Mail Transfer Agent,MTA)类型的程序那样用于传输、发送和转发消息。换句话说,用户可以与MUA类型的程序交互,以阅读和撰写电子邮件。MUA依靠MTA处理实际的发送任务。
常用的四种协议:
由于JavaMail API分开了提供程序和其他部分,所以您可以轻松地为附加协议添加支持。Sun公司提供第3方提供程序清单,这些提供程序要利用 Sun公司不支持的少见的协议。在这份清单中,您将会看到对NNTP(网络新闻传输协议)[新闻组]、S/MIME(安全多用途的网际邮件扩充协议)及其他协议的提供支持的第3方提供程序。
下面为发送Email的具体实例代码:
J2EE JavaMailhttp://java.sun.com/products/javamail
JavaMail API是一种可选的、能用于读取、编写和发送电子消息的包(标准扩展)。您可使用这种包创建邮件用户代理(Mail User Agent ,MUA) 类型的程序,它类似于Eudora、Pine及Microsoft Outlook这些邮件程序。其主要目的不是像发送邮件或其他邮件传输代理(Mail Transfer Agent,MTA)类型的程序那样用于传输、发送和转发消息。换句话说,用户可以与MUA类型的程序交互,以阅读和撰写电子邮件。MUA依靠MTA处理实际的发送任务。
常用的四种协议:
- ·SMTP 简单邮件传输协议(SMTP)是用于传送电子邮件的机制。在JavaMail API环境中,您的基于JavaMail的程序将与您公司或Internet服务提供商(ISP)的SMTP服务器通信。该SMTP服务器将会把消息转发给用作接收消息的SMTP服务器,最后用户可通过POP或IMAP协议获取该消息。由于支持身份验证,所以不需要SMTP服务器是一种开放的转发器,但需要确保SMTP服务器配置正确。JavaMail API中没有集成用于处理诸如配置服务器以转发消息或添加/删除电子邮件帐户这一类任务的功能。
- ·POP POP的含义是邮局协议,当前的版本为3,也称作POP3,该协议是在RFC 1939中定义的。POP是Internet上的大多数人用来接收邮件的机制。它为每个用户的每个邮箱定义支持,这是它所做的全部工作,也是大多数问题的根源。在使用POP协议时,人们熟悉的很多功能,如查看收到了多少新邮件消息的功能,POP根本不支持。这些功能都内置到诸如Eudora或Microsoft Outlook之类的邮件程序中,能为您记住接收的上一封邮件,以及计算有多少新邮件这类信息。因此,使用JavaMail API时,如果想获取这类信息,将需要由自己进行计算。
- ·IMAP IMAP是用于接收消息的更加高级的协议,它是在RFC 2060中定义的。IMAP的含义是“Internet消息访问协议”,当前版本是第4版,也称作IMAP4。使用IMAP时,您的邮件服务器必须支持该协议。您不能只是简单地把程序转变为支持IMAP,而不是支持POP,就指望能支持IMAP中的一切。假定您的邮件服务器支持IMAP,那么基于JavaMail的程序就可利用在服务器上拥有多个文件夹的用户,并且这些文件夹可以被多个用户共享的功能。
- ·MIME MIME的含义是“多用途的网际邮件扩充协议”。它不是一种邮件传输协议,相反,它定义传输的内容:消息的格式、附件等。许多文档都定义了MIME协议,包含:RFC 822、RFC 2045、RFC 2046和RFC 2047。作为JavaMail API的用户,一般不需要担心这些格式。但是,这些格式确实存在,并为您的程序所用。
由于IMAP协议具有更高级的功能,您也许会想IMAP应该被每一个人使用,但事实不是这样。因为IMAP会加重邮件服务器的负荷,它需要服务器接收新消息,发送消息给请求的用户,并在多个文件夹中为每个用户维护这些消息。而这要集中备份,因而长期下去用户的文件夹会变得越来越大,当磁盘空间用光了时,每个人都会遭受损失。而使用POP协议时,已保存消息可以解除服务器的重负。
由于JavaMail API分开了提供程序和其他部分,所以您可以轻松地为附加协议添加支持。Sun公司提供第3方提供程序清单,这些提供程序要利用 Sun公司不支持的少见的协议。在这份清单中,您将会看到对NNTP(网络新闻传输协议)[新闻组]、S/MIME(安全多用途的网际邮件扩充协议)及其他协议的提供支持的第3方提供程序。
下面为发送Email的具体实例代码:
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.PasswordAuthentication; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMultipart; import javax.mail.internet.MimeUtility; /** * java send mail demo * @author Michael sun */ public class JavaMailSend { /** * send mail * @param subject * @param from * @param to * @param text * @param filenames * @param mimeType */ private void sendmail(String subject, String from, String[] to, String text, String[] filenames, String mimeType) { try { Properties props = new Properties(); String smtp = "smtp.163.com"; // 设置发送邮件所用到的smtp String servername = "xxxx"; String serverpaswd = "xxxx"; javax.mail.Session mailSession = null; // 邮件会话对象 javax.mail.internet.MimeMessage mimeMsg = null; // MIME邮件对象 props = java.lang.System.getProperties(); // 获得系统属性对象 props.put("mail.smtp.host", smtp); // 设置SMTP主机 props.put("mail.smtp.auth", "true"); // 是否到服务器用户名和密码验证 // 到服务器验证发送的用户名和密码是否正确 SmtpAuthenticator myEmailAuther = new SmtpAuthenticator(servername, serverpaswd); // 设置邮件会话 注意这里将认证信息放进了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 (null != from && !"".equals(from)) { InternetAddress sentFrom = new InternetAddress(from); mimeMsg.setFrom(sentFrom); // 设置发送人地址 } 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(); // messageBodyPart.setText(UnicodeToChinese(text)); messageBodyPart1.setContent(text, mimeType); // 附件传输格式 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]; String displayname = filenames[i].split(";")[1]; // 得到数据源 FileDataSource fds = new FileDataSource(filename); // BodyPart添加附件本身 messageBodyPart2.setDataHandler(new DataHandler(fds)); // BodyPart添加附件文件名 messageBodyPart2.setFileName(MimeUtility .encodeText(displayname)); multipart.addBodyPart(messageBodyPart2); } mimeMsg.setContent(multipart); // 设置信件头的发送日期 mimeMsg.setSentDate(new Date()); mimeMsg.saveChanges(); // 发送邮件 transport.send(mimeMsg); transport.close(); System.out.println("发送到成功!!!"); } catch (Exception e) { e.printStackTrace(); } } /** * @param args */ public static void main(String[] args) throws Exception { String title = "title";// 所发送邮件的标题 String from = "xxxx@163.com";// 从那里发送 String sendTo[] = { "xxx@test.com.cn" };// 发送到那里 // 邮件的文本内容,可以包含html标记则显示为html页面 String content = "test java send mail !!!!!!<br><a href=\"http://sjsky.iteye.com/\">My blog</a>"; // 所包含的附件,及附件的重新命名 String fileNames[] = { "d:\\test\\test.png;test.png" }; JavaMailSend test = new JavaMailSend(); try { // MailSender mailsender = new MailSender(); test.sendmail(title, from, sendTo, content, fileNames, "text/html;charset=gb2312"); } catch (Exception ex) { ex.printStackTrace(); } } /** * Smtp认证 */ class SmtpAuthenticator extends Authenticator { String username = null; String password = null; /** * SMTP身份验证 * @param username * @param password */ public SmtpAuthenticator(String username, String password) { super(); this.username = username; this.password = password; } /** * @return pass */ public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(this.username, this.password); } } }
发表评论
-
$JAVA_HOME环境变量在Mac OS X中设置的问题
2014-01-19 20:31 1604系统版本:Mac OS X 10.9.1 在 ... -
JBoss IIOP实现CORBA/IIOP访问EJB的示例
2014-01-17 14:08 590目录 概述 特性 示例演示 详见:http:// ... -
JavaIDL开发CORBA实例演示
2013-10-25 15:51 499目录: 概述 开发步骤 创建Java项目 -
OpenORB开发CORBA的实例介绍
2013-10-25 15:50 1237目录: 概述 开发步骤 -
java读取控制台输入的几种方法
2013-10-24 09:01 1023java读取控制台输入的 ... -
OSX系统中各种JDK的路径说明
2013-10-15 08:50 611不同厂商发布的JDK,在OSX下的安装路径是不同的。以我本机 ... -
Java 完美判断中文字符
2012-11-23 17:23 1002详见:http://www.micmiu.com/ ... -
java自带的MD5、SHA1算法演示
2012-06-04 10:23 3035详见:http://www.micmiu.com/lang ... -
解决java网络编程IPv6问题
2012-04-05 13:38 1350详见:http://www.micmiu.com/lang/j ... -
swing中Label添加下划线几种方法(含完美版本)
2011-09-30 11:57 3267blog迁移至 :http://www.micmiu. ... -
Java实现给图片添加水印
2011-08-21 12:21 15735blog迁移至 :http://www.m ... -
Java对象序列化ObjectOutputStream和ObjectInputStream示例
2011-08-01 14:14 13621blog迁移至 :http://www.m ... -
proxool连接池介绍
2011-06-29 08:42 3859blog迁移至:http://www.micmiu.c ... -
c3p0配置介绍
2011-06-28 08:56 6563blog迁移至 :http://www.micmiu. ... -
apache-DBCP基本配置介绍
2011-06-27 00:04 13294blog迁移至:http://www ... -
JAVA中IP和整数相互转化介绍
2011-06-22 18:36 4745blog迁移至 :http://www.micmiu. ... -
JAVA线程池ThreadPoolExecutor
2011-06-21 19:00 8919blog迁移至:http://www.micmiu.c ... -
Java 获取当前Classpath
2011-06-19 11:50 8076blog迁移至:http://www ... -
Array和Collection相互转换以及copy深度的小测
2011-06-18 18:46 2211blog迁移至:http://www.micmiu.c ... -
扫描指定包下的类(包括jar文件里的类)
2011-05-27 12:56 5946blog迁移至:http://www.micmiu.c ...
相关推荐
java mail发送邮件应用的jar,还有一个activation也要一起引用
利用Java mail发送邮件,用到的一些类,一些方法,写的很简陋
java Mail 发送邮件及邮件附件 java Mail 发送邮件及邮件附件
使用 java mail 发送邮件
java mail 发送邮件源代码以及所需要的两个架包。 附件代码以腾讯企业邮箱发送邮件为例子,其它邮箱只要支持SMTP服务即可。只要懂点JAVA就能看懂。
MAIL. JAVA POP3 SMTP imap 发送邮件
用java mail发邮件源码,支持多种邮局,支持单发和群发。
包含文件: activation.jar mail.jar SendMail.java
Java实现发送邮件脚本。以及需要调用的全部Jar包。
为了以后使用java发送邮件的需要。结合网上案例做了一个demo程序。javamail发送邮件确实是一个比较麻烦的问题。该demo 程序可以直接用于邮件的发送.
java 发送邮件 spring发送邮件Mail
只需简单赋几个值便可实现发送邮件,里边有源代码、全有注释,可直接在main方法内测试发送,非常易学实用
java mail发送qq邮件的一个例子,谢谢大家的支持
也许很多 同道遇到和我一样的问题,建了个web项目,写一堆代码,结果一运行老是报错!!!上网查了查,知道了原因,修改了还是不行。...如果还没有成功,你可以给我发邮件973203075@qq.com,我可以把项目也给你!!
JavaMail用到的jar包,一共3个。下载之后要放到libs目录下,然后右击工程,选择Builder Path--》Configure Build Path,Libraries,Add JARs,选择工程目录下的libs下的jar包。
java发送附件mail, 包阔多附件,文本mail,以及网页mail.
基于javax.mail的邮件发送测试工具