javamail服务器简介

合集下载

邮件客户端使用Java语言和JavaMail库开发的小程序

邮件客户端使用Java语言和JavaMail库开发的小程序

邮件客户端使用Java语言和JavaMail库开发的小程序邮件是现代社会中非常重要的通信工具之一,而邮件客户端则是使用邮件的主要方式之一。

为了提供一个便捷的邮件发送和接收工具,本文将介绍如何使用Java语言和JavaMail库开发一个小型的邮件客户端程序。

一、引言随着互联网的普及,电子邮件已经成为人们日常生活中不可或缺的一部分。

邮件客户端是用于发送和接收电子邮件的软件应用程序。

本文将通过使用Java语言和JavaMail库开发一个小型的邮件客户端程序,来演示如何利用编程语言的力量来简化邮件的处理和管理。

二、准备工作在开始开发之前,我们需要准备一些必要的工作。

首先,我们需要安装Java开发环境(JDK)以及支持邮件功能的JavaMail库。

其次,我们需要一个有效的邮件服务器地址、端口号、用户名和密码,这些信息用于程序连接和认证邮件服务器。

三、创建项目使用Java语言和JavaMail库开发邮件客户端的第一步是创建一个新的Java项目。

我们可以使用任何集成开发环境(IDE)来创建和管理项目,比如Eclipse、IntelliJ IDEA等。

创建项目后,我们需要在项目的依赖项中添加JavaMail库,以便在代码中使用该库提供的功能。

四、连接邮件服务器在程序中连接邮件服务器是发送和接收邮件的基础步骤。

我们可以使用JavaMail库中提供的JavaMailSession类来创建一个与邮件服务器的会话连接。

通过设置邮件服务器地址、端口号、用户名和密码,我们可以建立与邮件服务器的连接,并进行后续的邮件处理操作。

五、发送邮件发送邮件是邮件客户端的主要功能之一。

我们可以使用JavaMail库提供的SMTP协议来发送邮件。

首先,我们需要创建一个MimeMessage对象,用于表示要发送的邮件。

然后,我们可以设置邮件的发送人、接收人、主题、内容等信息。

最后,使用JavaMailSession类中的Transport对象发送邮件。

javamail API文档

javamail API文档

原文:/resource/article/44/44101_JavaMail.html一、JavaMail API简介JavaMail API是读取、撰写、发送电子信息的可选包。

可用它来建立如Eudora、Foxmail、MS Outlook Express一般的邮件用户代理程序(Mail User Agent,简称MUA,而非邮件传输代理MTA)。

从另外一个角度来看,我们这些电子邮件用户日常用MUA程序来读写邮件,而MUA依赖着MTA处理邮件的递送。

二、相关协议一览不依赖于协议的方式发送接收电子信息,只依赖特定协议SMTP、POP、IMAP、MIME、NNTP协议。

1.SMTP(递送邮件机制)简单邮件传输协议SMTP服务器将邮件转发到接收者的SMTP服务器,直至最后被接收者通过POP或者IMAP协议获取。

2.POP(获取邮件机制)邮局协议,目前为第3个版本POP33.IMAP(多目录共享)接收信息的高级协议,目前版本为第4版IMAP4接收新信息,将这些信息递送给用户,维护每个用户的多个目录。

4.MIME邮件扩展内容格式:信息格式、附件格式等等5.NNTP第三方新闻组协议三、安装1.安装JavaMail从/products/javamail/downloads/index.html下载JavaMail mail.jar文件添加到CLASSPATH中2.安装JavaBeans Activation Framework从/products/javabeans/glasgow/jaf.html下载JavaBeans Activation Frameworkactivation.jar文件添加到CLASSPATH中四、初次认识JavaMail API1.了解我们的JavaMail环境A.纵览JavaMail核心类结构JavaMail.jar文件的一些核心类:Session、Message、Address、Authenticator、Transport、Store、Folder。

电子邮件服务器

电子邮件服务器

感 谢 您 的 下 载 16、少年十五二十时,步行夺得胡马骑。。2023年6月14日星期三11时59分39秒23:59:3914 June 2023
17、空山新雨后,天气晚来秋。。下午11时59分39秒下午11时59分23:59:3923.6.14 9、杨柳散和风,青山澹吾虑。。23.6.1423.6.14Wednesday, June 14, 2023
13、乍见翻疑梦,相悲各问年。。23.6.1423.6.1423:59:3923:59:39June 14, 2023
14、他乡生白发,旧国见青山。。2023年6月14日星期三下午11时59分39秒23:59:3923.6.14
15、比不了得就不比,得不到的就不要。。。2023年6月下午11时59分23.6.1423:59June 14, 2023
DNS解析地址 接受110端口连接
接收帐号 密码认证 返回邮箱统计 返回邮件列表 传输邮件 终止服务
7.7.2 服务器程序的安装
1 简介 ArGoSoft Mail Server 该服务器程序属于共享软件,非注册用户连续
运行的时间不超过120分钟,所发送的邮件最 大不超过2M
2. 下载地址
在TCP上,它使用端口25进行传输。SMTP的一个重 要特点是可以在可交互的通信系统中转发邮件。
一个邮件系统的传输包含了用户代理〔user Agent〕。传输代理〔Transfer Agent及接受 代理〔Doelivery A_ gent〕三大局部。
用户代理是一个用户端发信和收信的程序,负 责将信按照一定的标准包装,然后送至邮件服 务器, 将信件发出或由邮件服务器收回。
15、最具挑战性的挑战莫过于提升自我。。2023年6月下午11时59分fri2ng3i.ll6a.p1u4r2us3.:5N9uJllauniaecu1lis4,te2m0p2o3r felis ut cursus.

JavaMail组件简单介绍

JavaMail组件简单介绍

JavaMail组件的简单介绍一、什么是JavaMailJavaMail是Sun发布的用来处理email的API。

它可以方便地执行一些常用的邮件传输。

虽然JavaMail是Sun的API之一,但它目前还没有被加在标准的java开发工具包中(Java Development Kit),这就意味着你在使用前必须另外下载JavaMail文件。

除此以外,你还需要有Sun的JavaBeans Activation Framework (JAF)。

JavaBeans Activation相关的包你可以到sun的官方网站上去下载二、如何使用JavaMail组件在使用JavaMail发送邮件之前,先来看一下在发送邮件过程中主要使用到的几个类以及它们的用处和用法!Session定义了一个基本的邮件会话,所有的基于JavaMail的程序都至少需要一个或全部的对话目标。

Session对象需要一个,Session的构造函数是私有的,你可以通过getDefaultInstance()方法来取得一个单一的可以被共享的默认的Session,如:Properties props=new Properties();……..Session session = Session.getDefaultInstance(props, null);或者,可以使用getInstance()方法来创建一个唯一的Session如:Properties props=new Properties();…….Session session=Session.getInstance(props,null);在多数情况下,整个应用中使用一个共享Session已经足够了;2、创建了Session 对象以后,那么下面就要创建Message对象来发送Session., Message是一个抽象类,再大部分应用中可以使用它的子类可以用如下的方法创建一个Message;Message newMessage = new MimeMessage(sendMailSession);一旦得到了Message,就可以设置它的各个部分。

JavaMail概述

JavaMail概述

JavaMail概述J avaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。

它是Sun 公司发布的用来处理email的API,是一种可选的、用于读取、编写和发送电子消息的包(标准扩展)。

用户可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。

Java Mail是JavaEE平台提供的邮件API。

使用这套API,可以轻松实现邮件的创建,发送和接受。

1.什么是E-mailE-mail是用户间或应用程序间交换信息的Internet标准。

每个用户都有自己的网上邮箱,发送方把信息发送到自己的网上信箱,并声明信息的接收方;该信箱所在的“邮局”会把信息发送到接收方的“邮局”,接收方从接收方的“邮局”中自己的信箱获取信息。

这样就完成了信息从发送方到接收方的传递。

所以,要发送或者接收邮件首先应该有自己的邮箱。

E-mail消息可以包含普通文本,也可以包含更为复杂的多媒体数据类型和图像声音等。

这样,用户就可以交换各种各样的信息。

每个E-mail消息的头信息中都包含消息的发出者、发送的目的地和其他相关信息。

2 E-mail体系结构要完成消息的交互,需要几方面的支持:邮件发送客户端程序、邮件接收客户端程序、邮件发送服务器和邮件接收服务器,此外,还需要相关的通信协议。

邮件发送客户端程序和邮件接收客户端程序可以是相同的,例如经常使用的微软的Outlook既可以发送邮件,也可以接收邮件。

邮件发送服务器和邮件接收服务器也可以是相同的服务器。

在与邮件服务器交互的过程中,主要完成两个动作,把邮件发送到邮件服务器,以及从邮件服务器读取邮件。

邮件发送方通过邮件发送客户端把邮件发送到发送方的邮件服务器,在发送的过程中需要用到SMTP协议。

发送方的邮件服务器把邮件发送到接收方的邮件服务器,使用的协议也是SMTP。

邮件接收方从接收方邮件服务器接收邮件,使用POP3协议或者IMAP协议。

3 E-mail相关的协议简单邮件传输协议(SMTP)在邮件发送方把邮件发送到发送方邮件服务器的时候,需要用到简单邮件传输协议(Simple Mail Transport Protocol,简称SMTP),发送方邮件服务器把邮件发送到接收方邮件服务器的时候,也要用到SMTP。

通过代码实例跟我学JavaMail技术及应用实例(第1部分)

通过代码实例跟我学JavaMail技术及应用实例(第1部分)

1.1通过代码实例跟我学JavaMail技术及应用实例(第1部分)1、使用JSP开发WebMail系统(1)WebMail概述电子邮件(E-mail)是Internet上使用最广泛的服务之一,传统的Email应用模式基于C/S结构,即用户使用客户端的邮件收发工具(如Outlook、Foxmail等)与提供邮件服务的服务器(如、、)通信,在使用客户端邮件工具之前,用户要进行一些必要的设置,如指定邮件服务器的主机地址和通信端口等,这些工作对刚开始上网的用户会有一定的困难。

如果把E-mail和Web结合在一起,即通过Web编程和适当的系统设置,使用户仅仅以访问Web的方式就可以得到和使用完整的邮件服务,这样将极大地方便上网用户,这种系统称为WebMail。

WebMail是目前Internet上最受欢迎的服务之一,也是很多网站必备功能之一。

另外WebMail同样也适用于企业或校园网的应用。

(2)实现WebMail的主要功能该系统提供了获取、阅读、书写、转发、回复、打印、删除及用户管理的功能。

考虑到系统的跨平台性,采用Java及相关技术产品为开发工具,特别是采用JSP作为服务程序,这样对客户端也没有其它要求,同时系统的性能在高负荷下得到进一步提高。

整个WebMail系统全部采用纯Java代码,服务器端每响应一个服务请求启动一个线程,而不像CGI那样启动一个进程。

这样能够节省系统资源,提高系统性能。

2、什么是JavaMail(1)Web方式的邮件电子邮件(E-mail)是Internet上使用最广泛的服务之一,传统的Email应用模式基于C/S结构,即用户使用客户端的邮件收发工具(如Outlook、Foxmail等)与提供邮件服务的服务器(如、、)通信,在使用客户端邮件工具之前,用户要进行一些必要的设置,如指定邮件服务器的主机地址和通信端口等,这些工作对刚开始上网的用户会有一定的困难,如果把E-mail和Web结合在一起,即通过Web编程和适当的系统设置,使用户仅仅以访问Web的方式就可以得到和使用完整的邮件服务,这样将极大地方便上网用户,这种系统称为WebMail。

基于java的邮件服务器以及webmail的搭建

基于java的邮件服务器以及webmail的搭建

基于java的邮件服务器以及webmail的搭建⼀、准备⼯作局域⽹中有两台电脑都⽤Windows XPSP2系统+JDK1.6.0_02,⼀台PCA,⼀台PCB,PCA当服务器,PCB当客户端测试⽤,当然PCA也可同时充当客户端。

Apache James(Java Apache Mail EnterpriseServer)是Apache组织的⼦项⽬之⼀,完全采⽤纯Java技术开发,实现了SMTP、POP3与NNTP等多种邮件相关协议。

James也是⼀个邮件应⽤平台,可以通过Mailet扩充其功能,如Mail2SMS、Mail2Fax等。

James提供了⽐较完善的配置⽅案,尤其是关于邮件内容存储和⽤户信息存储部分,可以选择在⽂件、数据库或其他介质中保存。

James性能稳定、可配置性强,还是开源项⽬,所有源代码不存在版权问题,因此,James在项⽬中的应⽤⽇益⼴泛,现在常⽤版本为2.1,但最新版本2.3已经推出,在本⽂中,我们将仍以james-2.3.1作为介绍蓝本。

⼆、安装与配置James的安装配置过程⾮常简单。

第⼀步:安装JDK并配置JAVA_HOME请使⽤JDK1.3以上版本(在此使⽤jdk1.6.0_02),假设安装在D:installedtoolsJavajdk1.6.0_02,配置java_home在此就不多说了。

第⼆步:下载James,并解压可以到Apache⽹站上下载最新版本james-2.3.1,下载将得到⼀个压缩⽂件james-2.3.1.zip,⼤⼩为4.45M,将此包解压到D:installed toolsjames-2.3.1.第三步:需要使⽤的端⼝:Remote Manager Service started plain:4555POP3 Service started plain:110SMTP Service started plain:25NNTP Service started plain:119检查端⼝4555,110,25,119 是否被占⽤:netstat -an|grep 25netstat -an|grep 110如果被占⽤,linux下⼀般是sendmail程序占⽤,咨询别的应⽤是否使⽤了sendmail,如果没有⽤户在使⽤sendmail就可以停⽌sendmail:ps -eaf|grep sendmailservice sendmail stop直接双击运⾏D:installedtoolsjames-2.3.1 in un.bat,若启动⽆误,将提⽰如下C:Documents andSettingsAdministrator>runUsing PHOENIX_HOME: E:ProgramFilesjames-2.3.1Using PHOENIX_TMPDIR: E:Program Filesjames-2.3.1 empUsingJAVA_HOME:E:Program FilesJavajdk1.6.0_02Phoenix 4.2James Mail Server 2.3.1Remote Manager Service started plain:4555POP3 Service started plain:110SMTP Service started plain:25NNTP Service started plain:119FetchMail Disabled也有可能启动不了,并报JAVA_HOME找不到,如果没有配置JAVA_HOME需要指定JAVA_HOME,或者另⼀⽐较简单的⽅法是在D:installedtoolsjames-2.3.1 in un.bat中指定JAVA_HOME,修改后的run.bat如下:……remrem Determine if JAVA_HOME is set and if so then use itremset JAVA_HOME= D:installed toolsJavajdk1.6.0_02if not "%JAVA_HOME%"=="" goto found_java……修改完后再运⾏run.bat,应该就可以正常启动了,如果再出现什么问题就再去官⽅查找解决了。

第29章 JavaMail

第29章 JavaMail

工程量清单计量规则-铁路工程标准施工招标文件2023年版1. 引言本文档旨在规范和指导铁路工程标准施工招标文件中的工程量清单计量规则。

通过遵循这些规则,可以确保招标过程的公平性和准确性。

2. 计量原则2.1 适用范围本计量规则适用于所有铁路工程标准施工招标文件中的工程量清单计量。

2.2 计量单位工程量清单中通常使用国际通用的计量单位,如米、立方米、吨等,以确保计量结果的一致性和可比性。

2.3 计量精度计量结果应具有足够的精确性和可靠性,以确保合同履行的准确性和公正性。

为此,计量应符合国家和行业相关的计量标准和规定。

3. 计量方法3.1 直接计量在工程量清单中明确列出的项目,可以直接使用实际的计量单位进行计量,例如长度、面积、容积等。

3.2 组合计量对于某些项目,可能需要通过组合计量方式进行计量。

在这种情况下,应根据工程实际情况和技术要求,确定合适的计量方法。

3.3 临时计量在工程施工过程中,可能会遇到一些临时情况,需要进行临时计量。

这些计量结果应经过合同双方的确认,在后续调整合同付款等方面起到依据作用。

4. 计量记录4.1 计量依据计量过程中应准确记录计量依据,包括清单编号、名称、计量单位等信息,以确保计量结果的准确性和可审查性。

4.2 计量记录表为了方便计量数据的管理和跟踪,可以建立计量记录表,记录每个计量项目的具体计量结果、计量时间等信息。

5. 监理与验收5.1 监理在工程施工过程中,应有专门的监理人员对计量过程进行监督和审查,以确保计量结果的准确性和合规性。

5.2 验收完成计量后,相关方应对计量结果进行验收,确保计量结果符合合同约定和技术要求。

6. 结论通过遵循本文档所述的工程量清单计量规则,可以在铁路工程标准施工招标文件中确立准确和公正的计量方法和过程,提高招标过程的透明度和可信度。

以上是《工程量清单计量规则-铁路工程标准施工招标文件2023年版》的概要内容,请在具体使用时参考相关标准和规定进行进一步操作。

java mail详解

java mail详解

java mail详解JavaMail是Java平台上用于发送、接收和管理电子邮件的API。

它提供了一种方便的方式来处理电子邮件,包括发送和接收电子邮件,以及访问和操作邮件服务器。

首先,让我们来看看JavaMail API的一些主要功能和用法。

JavaMail API包括javax.mail包,它提供了发送和接收电子邮件的类和接口。

要发送电子邮件,你需要使用javax.mail.Session类来创建一个会话对象,然后使用javax.mail.internet.MimeMessage类来创建邮件消息。

你可以设置邮件的主题、内容、附件等信息,并使用javax.mail.Transport类的send方法来发送邮件。

另外,JavaMail API也支持接收邮件。

你可以使用javax.mail.Store类来连接到邮件服务器,并使用javax.mail.Folder类来访问邮件文件夹。

通过这些类,你可以检索邮件、读取邮件内容以及执行其他邮件管理操作。

JavaMail API还支持与邮件服务器的安全通信,包括SSL和TLS协议。

你可以使用javax.mail.Session类的属性来配置安全连接参数,以确保与邮件服务器的通信是安全的。

除了基本的发送和接收邮件功能,JavaMail API还提供了一些高级功能,比如处理邮件附件、设置邮件优先级、回复和转发邮件等。

你可以使用javax.mail.internet.MimeBodyPart类来处理邮件附件,使用javax.mail.Flags类来设置邮件标记,以及使用javax.mail.internet.InternetAddress类来表示邮件地址等。

总之,JavaMail API提供了丰富的功能和灵活的接口,使得在Java应用程序中处理电子邮件变得非常方便。

无论是发送简单的文本邮件,还是处理复杂的邮件操作,JavaMail API都能满足你的需求。

希望这些信息能帮助你更好地理解和使用JavaMail API。

JavaMail使用总结

JavaMail使用总结

JavaMail概述SUN公司发布的用来处理EMAIL的API,提供给开发者处理电子邮件相关的编程接口。

它虽是SUN的API,但它还没被加在标准的JAVA开发工具包中,这就意味着你使用前必须另外下载JAVAMAIL文件。

除此之外你还需要SUN的JAVABEANS Activation Framework (JAF)。

Javabeans activation framework运行很复杂,简单的说就是JAVAMAIL的运行必须得依赖于它的支持。

下载安装JAVAMAIL是可选包,项目中需要用到就去官网下载,同时也需要下载JAF。

安装JAVAMAIL只需要把它们直接把它们COPY到lib里(web项目不需要build path,java 项目build path一下)就算安装成功。

所需的两个jar包:JAVAMAIL mail.jar ACTIVATION activation-1.1.jar底层Session,Message,Address,Authenticator,Transport,Store,Folder等。

Session定义了一个基本的邮件会话,它需要从Properties中读取类似于邮件服务器,用户名和密码等信息。

另外很好的实现了JavaMail API的框架有James、Spring Mail。

TipsSMTP:用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

它帮助每台计算机在发送或中转信件时找到下一个目的地。

用来发送或中转发出的电子邮件。

关于ng.NoClassDefFoundError: com/sun/mail/util/LineInputStream解决办法在编写邮件发送相关程序时,会报错!主要原因是javax.mail和javax.activation这两个包已经在javaEE5当中属于基础包了,就是JDK中自带了已经,但是里面的方法与现在外面的mail.jar和activation.jar有一些出入,所以初学者在直接copy别人代码的时候往往会出现上面的错误。

[JavaMail]8 详解Message和MIME

[JavaMail]8 详解Message和MIME

A.0、MIMEMultipurpose Internet Mail Extension(多功能Internet 邮件扩充服务)它是一种多用途网际邮件扩充协议,在1992年最早应用于电子邮件系统,但后来也应用到浏览器。

服务器会将它们发送的多媒体数据的类型告诉浏览器,而通知手段就是说明该多媒体数据的MIME类型,从而让浏览器知道接收到的信息哪些是MP3文件,哪些是Shockwave文件等等。

服务器将MIME标志符放入传送的数据中来告诉浏览器使用哪种插件读取相关文件。

MIME能够支持非ASCII字符、二进制格式附件等多种格式的邮件消息。

这个标准被定义在; RFC 2045,; RFC 2046,; RFC 2047,; RFC 2048,; RFC 2049等RFC中。

由RFC 822转变而来的RFC 2822,规定电子邮件标准并不允许在邮件消息中使用7位ASCII字符集以外的字符。

正因如此,一些非英语字符消息和二进制文件,图像,声音等非文字消息都不能在电子邮件中传输。

MIME规定了用于表示各种各样的数据类型的符号化方法。

MIME意为多功能Internet邮件扩展,它设计的最初目的是为了在发送电子邮件时附加多媒体数据,让邮件客户程序能根据其类型进行处理。

然而当它被HTTP协议支持之后,它的意义就更为显著了。

它使得HTTP传输的不仅是普通的文本,而变得丰富多彩。

由于MIME类型与文档的后缀相关,因此服务器使用文档的后缀来区分不同文件的MIME类型,服务器中必须定义文档后缀和MIME类型之间的对应关系。

而客户程序从服务器上接收数据的时候,它只是从服务器接受数据流,并不了解文档的名字,因此服务器必须使用附加信息来告诉客户程序数据的MIME类型。

服务器在发送真正的数据之前,就要先发送标志数据的MIME类型的信息,这个信息使用Content-type关键字进行定义,例如对于HTML文档,服务器将首先发送以下(Content-type: text/html)MIME标识信息,这个标识并不是真正的数据文件的一部分。

JavaWeb学习总结(五十二)——使用JavaMail创建邮件和发送邮件

JavaWeb学习总结(五十二)——使用JavaMail创建邮件和发送邮件

JavaWeb学习总结(五⼗⼆)——使⽤JavaMail创建邮件和发送邮件⼀、RFC882⽂档简单说明 RFC882⽂档规定了如何编写⼀封简单的邮件(纯⽂本邮件),⼀封简单的邮件包含邮件头和邮件体两个部分,邮件头和邮件体之间使⽤空⾏分隔。

邮件头包含的内容有:1. from字段 --⽤于指明发件⼈2. to字段 --⽤于指明收件⼈3. subject字段 --⽤于说明邮件主题4. cc字段 -- 抄送,将邮件发送给收件⼈的同时抄送给另⼀个收件⼈,收件⼈可以看到邮件抄送给了谁5. bcc字段 -- 密送,将邮件发送给收件⼈的同时将邮件秘密发送给另⼀个收件⼈,收件⼈⽆法看到邮件密送给了谁 邮件体指的就是邮件的具体内容。

⼆、MIME协议简单介绍 在我们的实际开发当中,⼀封邮件既可能包含图⽚,⼜可能包含有附件,在这样的情况下,RFC882⽂档规定的邮件格式就⽆法满⾜要求了。

MIME协议是对RFC822⽂档的升级和补充,它描述了如何⽣产⼀封复杂的邮件。

通常我们把MIME协议描述的邮件称之为MIME邮件。

MIME协议描述的数据称之为MIME消息。

对于⼀封复杂邮件,如果包含了多个不同的数据,MIME协议规定了要使⽤分隔线对多段数据进⾏分隔,并使⽤Content-Type头字段对数据的类型、以及多个数据之间的关系进⾏描述。

三、使⽤JavaMail创建邮件和发送邮件 JavaMail创建的邮件是基于MIME协议的。

因此可以使⽤JavaMail创建出包含图⽚,包含附件的复杂邮件。

3.1、JavaMail API的简单介绍3.2、创建邮件发送测试项⽬3.3、发送⼀封只包含⽂本的简单邮件1package me.gacl.main;23import java.util.Properties;4import javax.mail.Message;5import javax.mail.Session;6import javax.mail.Transport;7import javax.mail.internet.InternetAddress;8import javax.mail.internet.MimeMessage;910/**11* @ClassName: Sendmail12* @Description: 发送Email13* @author: 孤傲苍狼14* @date: 2015-1-12 下午9:42:5615*16*/17public class Sendmail {1819/**20 * @param args21 * @throws Exception22*/23public static void main(String[] args) throws Exception {2425 Properties prop = new Properties();26 prop.setProperty("mail.host", "");27 prop.setProperty("mail.transport.protocol", "smtp");28 prop.setProperty("mail.smtp.auth", "true");29//使⽤JavaMail发送邮件的5个步骤30//1、创建session31 Session session = Session.getInstance(prop);32//开启Session的debug模式,这样就可以查看到程序发送Email的运⾏状态33 session.setDebug(true);34//2、通过session得到transport对象35 Transport ts = session.getTransport();36//3、使⽤邮箱的⽤户名和密码连上邮件服务器,发送邮件时,发件⼈需要提交邮箱的⽤户名和密码给smtp服务器,⽤户名和密码都通过验证之后才能够正常发送邮件给收件⼈。

JSP课件-14JavaMail

JSP课件-14JavaMail

18
ACCP V4.0
总结 2-2
Multipart 消息是 Message 类的对象.其内容类型设置为 Multipart Multipart 消息可以有多个 Bodypart Bodypart 既可以为纯文本,也可以为附件
19
ACCP V4.0

3
ACCP V4.0
JavaMail API
JavaMail 用于通过网络或 Internet 发送和接收邮件
JavaMail API
抽象类的 集合
跨平台和跨 协议
提供发送和接 收 JavaMail 的 功能
SMTP 服务 器用于发送 邮件
POP3 和 IMAP 服务器用于接收 邮件
4
ACCP V4.0Fra bibliotek6ACCP V4.0
Folder 类
Folder 类定义存取 备份 附加 删除信息等方法 可以只读 类定义存取,备份 附加,删除信息等方法 备份,附加 删除信息等方法,可以只读 模式(READ_ONLY),读写模式打开文件夹 模式 读写模式打开文件夹 (READ_WRITE)
Folder 类
子文件夹 包含消息 抽象类 关闭状态
第十三章 JavaMail
ACCP V4.0
目标
使用 JavaMail API发送和接收邮件
2
ACCP V4.0
邮件协议
SMTP:简单邮件传送协议,Simple Mail Transfer Protocol协议定义了发送电子邮件的规范. POP3:Post office Protocol version3 邮局协议第 三版,协议定义了接收邮件的规范 IMAP:Internet Messager Access Protocol,因特尔 消息访问服务,比POP3更强大.

2013-3-20jmail服务器简介

2013-3-20jmail服务器简介

JavaMail详细介绍33.1 JavaMail简介JavaMail,顾名思义,提供给开发者处理电子相关的编程接口。

它是Sun发布的用来处理email的API。

它可以方便地执行一些常用的传输。

我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。

虽然JavaMail是Sun的API之一,但它目前还没有被加在标准的java开发工具包中(Java Development Kit),这就意味着你在使用前必须另外下载JavaMail文件。

除此以外,你还需要有Sun的JavaBeans Activation Framework (JAF)。

JavaBeans Activation Framework的运行很复杂,在这里简单的说就是JavaMail的运行必须得依赖于它的支持。

在Windows 2000下使用需要指定这些文件的路径,在其它的操作系统上也类似。

JavaMail是可选包,因此如果需要使用的话你需要首先从java.sun.下载。

目前最新版本是JavaMail1.4,使用JavaMail的时候需要Javabean Activation Framework的支持,因此你也需要下载JAF。

安装JavaMail只是需要把他们加入到CLASSPATH中去,如果你不想修改CLASSPATH的话,可以直接把他们的jar包直接copy到JAVA_HOME/lib/ext 下。

这样JavaMail就安装好了。

JavaMail包中用于处理电子的核心类是:Session,Message,Address,Authenticator,Transport,Store,Folder等。

Session定义了一个基本的会话,它需要从Properties中读取类似于服务器,用户名和密码等信息。

33.2 收发协议POP3(Post Office Protocol 3)即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的服务器和下载电子的电子协议。

java中javamail收发邮件实现方法

java中javamail收发邮件实现方法

java中javamail收发邮件实现⽅法概述1、邮件相关的标准⼚商所提供的 JavaMail 服务程序可以有选择地实现某些邮件协议,常见的邮件协议包括:SMTP(Simple Mail Transfer Protocol) :即简单邮件传输协议,它是⼀组⽤于由源地址到⽬的地址传送邮件的规则,由它来控制信件的中转⽅式。

POP3(Post Office Protocol – Version 3) :即邮局协议版本 3 ,⽤于接收电⼦邮件的标准协议。

IMAP(Internet Mail Access Protocol) :即 Internet 邮件访问协议。

是 POP3 的替代协议。

这三种协议都有对应 SSL 加密传输的协议,分别是 SMTPS , POP3S 和 IMAPS 。

MIME(Multipurpose Internet Mail Extensions) :即多⽤途因特⽹邮件扩展标准。

它不是邮件传输协议。

但对传输内容的消息、附件及其它的内容定义了格式。

2、JavaMail 简介JavaMail 是由 Sun 发布的⽤来处理 email 的 API 。

它并没有包含在 Java SE 中,⽽是作为 Java EE 的⼀部分。

mail.jar :此 JAR ⽂件包含 JavaMail API 和 Sun 提供的 SMTP 、 IMAP 和 POP3 服务提供程序;activation.jar :此 JAR ⽂件包含 JAF API 和 Sun 的实现。

JavaMail 包中⽤于处理电⼦邮件的核⼼类是: Properties 、 Session 、 Message 、 Address 、 Authenticator 、 Transport 、 Store 等。

3、邮件传输过程如上图,电⼦邮件的处理步骤如下:创建⼀个 Session 对象。

Session 对象创建⼀个 Transport 对象 /Store 对象,⽤来发送 / 保存邮件。

JAVA邮件服务API详解

JAVA邮件服务API详解

JavaMail(JAVA邮件服务) API详解一、JavaMail API简介JavaMail API是读取、撰写、发送电子信息的可选包。

我们可用它来建立如Eudora、Foxmail、MS Outlook Express一般的邮件用户代理程序(Mail User Agent,简称MUA)。

而不是像sendmail或者其它的邮件传输代理(Mail Transfer Agent,简称MTA)程序那样可以传送、递送、转发邮件。

从另外一个角度来看,我们这些电子邮件用户日常用MUA程序来读写邮件,而MUA依赖着MTA处理邮件的递送。

在清楚了到MUA与MTA之间的关系后,让我们看看JavaMail API是如何提供信息访问功能的吧!JavaMail API被设计用于以不依赖协议的方式去发送和接收电子信息,这个API被分为两大部分:基本功能:如何以不依赖于协议的方式发送接收电子信息,这也是本文所要描述的,不过在下文中,大家将看到这只是一厢情愿而已。

第二个部分则是依赖特定协议的,比如SMTP、POP、IMAP、NNTP协议。

在这部分的JavaMail API是为了和服务器通讯,并不在本文的内容中。

二、相关协议一览在我们步入JavaMail API之前,先看一下API所涉及的协议。

以下便是大家日常所知、所乐于使用的4大信息传输协议:SMTPPOPIMAPMIME当然,上面的4个协议,并不是全部,还有NNTP和其它一些协议可用于传输信息,但是由于不常用到,所以本文便不提及了。

理解这4个基本的协议有助于我们更好的使用JavaMail API。

然而JavaMail API是被设计为与协议无关的,目前我们并不能克服这些协议的束缚。

确切的说,如果我们使用的功能并不被我们选择的协议支持,那么JavaMail API并不可能如魔术师一样神奇的赋予我们这种能力。

1.SMTP简单邮件传输协议定义了递送邮件的机制。

在下文中,我们将使用基于Java-Mail的程序与公司或者ISP的SMTP服务器进行通讯。

JavaMail_javaWeb

JavaMail_javaWeb

// // // // //
定义绑定地址 邮件服务器名称 发件人email 收件人email 邮件+"北京魔乐科技软件学院。";
// 邮件内容
java.util.Properties props = null ; props = System.getProperties(); // 设定Mail服务器和所使用的传输协议 props.put("mail.smtp.host", mailserver); props.put("mail.smtp.auth", "true"); MySecurity msec = new MySecurity("lxh", "mldnjava"); // 创建验证用户对象 Session mailSession = Session .getDefaultInstance(props, msec); // 产生新的Session mailSession.setDebug(false); // 不需要调试 Message msg = new MimeMessage(mailSession); // 创建新的邮件信息 msg.setFrom(new InternetAddress(from)); // 设定传送邮件的发信人 address = InternetAddress.parse(to, false); // 设定传送邮件至收信人的信箱 msg.setRecipients(Message.RecipientType.TO, address);// 设定邮件发送方式 msg.setSubject(subject); // 设定邮件的标题 msg.setSentDate(new Date()); // 设定发送时间 msg.setText(messageText); // 设置文字信息 Transport.send(msg, msg.getAllRecipients()); // 发送邮件

JavaEE5学习笔记04-JavaMail使用总结

JavaEE5学习笔记04-JavaMail使用总结

JavaEE5学习笔记04-JavaMail使用总结刘岩Email:suhuanzheng7784877@1.JavaMail简介其实利用JavaMail API发送邮件本身没什么,在Java Web系统中也可以将自的Foxmail。

因为它确实为您屏蔽了底层的通讯协议、发送细节等等。

2.常用接口JavaMail常用的接口有如下几个1.javax.mail.Session:代表一次邮件会话。

2.javax.mail.Transport3.此类用于邮件的读取、写、监视、查找等等操作如下操作4.javax.mail.Folder用于组织邮件,代表邮件系统的一个文件夹。

5.javax.mail.MimeMessage实际的邮件对象它下属性bte[] content:邮件内容的字节数组InternetHeaders header:邮件的文件头对象它还有如下方法Void addFrom():设置发件人Void addHeader():设置邮件头信息Void addRecipients():增加收件地址Address[] getFrom():返回邮件发件人地址列表Void setContent():设置Email的内容6.javax.mail.Address制定人发件人、收件人地址,它也是一个抽象类,他有一个InternetAddress 子类。

7.javax.mail.Multipart用于保存电子邮件的内容的容器,它定义了添加、删除、获得电子邮件内容的方法。

他也是抽象类,有一个子类叫做MimeMultipart。

8.javax.mail.BodyPart以上代码示例出现了MimeBodyPart,他是BodyPart的子类,代表邮件内容的一部分,既可以代表邮件正文、也可以代表邮件的附件。

上面是描绘了一个普通的字符串。

9.javax.activation.DataHandler10.javax.activation.FileDataSource一般是附件文件对象,可以用于给邮件增加附件。

JavaMailJavaMail配置属性

JavaMailJavaMail配置属性

JavaMailJavaMail配置属性属性名含义er SMTP的缺省⽤户名。

mail.smtp.host要连接的SMTP服务器。

mail.smtp.port要连接的SMTP服务器的端⼝号,如果connect没有指明端⼝号就使⽤它,缺省值25。

mail.smtp.auth缺省是false,如果为true,尝试使⽤AUTH命令认证⽤户。

mail.transport.protocol要装⼊session的协议(smtp、pop3、imap、nntp)。

mail.smtp.connectiontimeout Socket连接超时值,单位毫秒,缺省值不超时。

mail.smtp.timeout Socket I/O超时值,单位毫秒,缺省值不超时。

mail.smtp.from SMTP MAIL使⽤的Email地址,⽤来设置邮件的return地址。

缺省是Message.getFrom()或InternetAddress.getLocalAddress()。

注意:er优先使⽤mail.smtp.localhost localhost名,缺省是 InetAddress.getLocalHost().getHostName()。

如果JDK和name service正确配置,⼀般不需设置。

mail.host邮件交互的主机。

mail.smtp.ehlo如果为false,那么不会尝试使⽤EHLO命令登录,缺省是true。

通常EHLO命令失败,会倒退到HELO命令。

这个属性只有在服务器没有fail EHLO属性或没有实现EHLO属性。

er登录邮件服务器的⽤户名(发送邮件时需要)。

mail.from发件⼈地址(发送邮件时需要)。

SMTP协议⽀持的所有属性:Name Type Descriptioner String Default user name for SMTP.mail.smtp.host String The SMTP server to connect to.mail.smtp.port int The SMTP server port to connect to, if the connect() method doesn’t explicitly specify one. Defaults to 25.mail.smtp.connectiontimeout int Socket connection timeout value in milliseconds. This timeout is implemented by .Socket. Default is infinite timeout.mail.smtp.timeout int Socket read timeout value in milliseconds. This timeout is implemented by .Socket. Default is infinite timeout.mail.smtp.writetimeout int Socket write timeout value in milliseconds. This timeout is implemented by using a java.util.concurrent.ScheduledExecutorService per connection that schedules a thread to close the socket if the timeout expires. Thus, the overhead of using this timeout is one thread per connection. Default is infinite timeout.mail.smtp.from String Email address to use for SMTP MAIL command. This sets the envelope return address. Defaults to msg.getFrom() or InternetAddress.getLocalAddress(). NOTE: er was previously used for this.mail.smtp.localhost String Local host name used in the SMTP HELO or EHLO command. Defaultsto InetAddress.getLocalHost().getHostName(). Should not normally need to be set if your JDK and your name service are configured properly.mail.smtp.localaddress String Local address (host name) to bind to when creating the SMTP socket. Defaults to the address picked by the Socket class. Should not normally need to be set, but useful with multi-homed hosts where it’s important to pick a particular local address to bind to.mail.smtp.localport int Local port number to bind to when creating the SMTP socket. Defaults to the port number picked by the Socket class.mail.smtp.ehlo boolean If false, do not attempt to sign on with the EHLO command. Defaults to true. Normally failure of the EHLO command will fallback to the HELO command; this property exists only for servers that don’t fail EHLO properly or don’t implement EHLO properly.mail.smtp.auth boolean If true, attempt to authenticate the user using the AUTH command. Defaults to false.mail.smtp.auth.mechanisms String If set, lists the authentication mechanisms to consider, and the order in which to consider them. Only mechanisms supported by the server and supported by the current implementation will be used. The default is “LOGIN PLAIN DIGEST-MD5 NTLM”, which includes all the authentication mechanisms supported by the current implementation except XOAUTH2.mail.smtp.auth.login.disable boolean If true, prevents use of the AUTH LOGIN command. Default is false. mail.smtp.auth.plain.disable boolean If true, prevents use of the AUTH PLAIN command. Default is false. mail.smtp.auth.digest-md5.disable boolean If true, prevents use of the AUTH DIGEST-MD5 command. Default is false.mail.smtp.auth.digest-md5.disable boolean If true, prevents use of the AUTH DIGEST-MD5 command. Default is false. mail.smtp.auth.ntlm.disable boolean If true, prevents use of the AUTH NTLM command. Default is false. mail.smtp.auth.ntlm.domain String The NTLM authentication domain.mail.smtp.auth.ntlm.flags int NTLM protocol-specific flags. See for details.mail.smtp.auth.xoauth2.disable boolean If true, prevents use of the AUTHENTICATE XOAUTH2 command. Because the OAuth 2.0 protocol requires a special access token instead of a password, this mechanism is disabled by default. Enable it by explicitly setting this property to “false” or by setting the “mail.smtp.auth.mechanisms” property to “XOAUTH2”.mail.smtp.submitter String The submitter to use in the AUTH tag in the MAIL FROM command. Typically used by a mail relay to pass along information about the original submitter of the message. See also the method of . Mail clients typically do not use this.mail.smtp.dsn.notify String The NOTIFY option to the RCPT command. Either NEVER, or some combination of SUCCESS, FAILURE, and DELAY (separated by commas).mail.smtp.dsn.ret String The RET option to the MAIL command. Either FULL or HDRS.mail.smtp.allow8bitmime boolean If set to true, and the server supports the 8BITMIME extension, text parts of messages that use the “quoted-printable” or “base64” encodings are converted to use “8bit” encoding if they follow the RFC2045 rules for 8bit text.mail.smtp.sendpartial boolean If set to true, and a message has some valid and some invalid addresses, send the message anyway, reporting the partial failure with a SendFailedException. If set to false (the default), the message is not sent to any of the recipients if there is an invalid recipient address.mail.smtp.sasl.enable boolean If set to true, attempt to use the javax.security.sasl package to choose an authentication mechanism for login. Defaults to false.mail.smtp.sasl.mechanisms String A space or comma separated list of SASL mechanism names to try to use.mail.smtp.sasl.authorizationid String The authorization ID to use in the SASL authentication. If not set, the authentication ID (user name) is used.mail.smtp.sasl.realm String The realm to use with DIGEST-MD5 authentication.ecanonicalhostname boolean If set to true, the canonical host name returned by is passed to the SASL mechanism, instead of the host name used to connect. Defaults to false.mail.smtp.quitwait boolean If set to false, the QUIT command is sent and the connection is immediately closed. If set to true (the default), causes the transport to wait for the response to the QUIT command.mail.smtp.reportsuccess boolean If set to true, causes the transport to include an for each address that is successful. Note also that this will cause a to be thrown from the methodof even if all addresses were correct and the message was sent successfully.mail.smtp.socketFactory SocketFactory If set to a class that implements the .SocketFactory interface, this class will be used to create SMTP sockets. Note that this is an instance of a class, not a name, and must be set using the putmethod, not the setProperty method.mail.smtp.socketFactory.class String If set, specifies the name of a class that implementsthe .SocketFactory interface. This class will be used to create SMTP sockets.mail.smtp.socketFactory.fallback boolean If set to true, failure to create a socket using the specified socket factory class will cause the socket to be created using the .Socket class. Defaults to true.mail.smtp.socketFactory.port int Specifies the port to connect to when using the specified socket factory. If not set, the default port will be used.mail.smtp.ssl.enable boolean If set to true, use SSL to connect and use the SSL port by default. Defaults to false for the “smtp” protocol and true for the “smtps” protocol.mail.smtp.ssl.checkserveridentity boolean If set to true, check the server identity as specified by . These additional checks based on the content of the server’s certificate are intended to prevent man-in-the-middle attacks. Defaults to false.mail.smtp.ssl.trust String If set, and a socket factory hasn’t been specified, enables use of a . If set to “*”, all hosts are trusted. If set to a whitespace separated list of hosts, those hosts are trusted. Otherwise, trust depends on the certificate the server presents.mail.smtp.ssl.socketFactory SSLSocketFactory If set to a class that extends the .ssl.SSLSocketFactory class, this class will be used to create SMTP SSL sockets. Note that this is an instance of a class, not a name, and must be set using theput method, notthe setProperty method.mail.smtp.ssl.socketFactory.class String If set, specifies the name of a class that extendsthe .ssl.SSLSocketFactory class. This class will be used to create SMTP SSL sockets.mail.smtp.ssl.socketFactory.port int Specifies the port to connect to when using the specified socket factory. If not set, the default port will be used.Name Type Descriptionset, the default port will be used.mail.smtp.ssl.protocols string Specifies the SSL protocols that will be enabled for SSL connections. The property value is a whitespace separated list of tokens acceptable tothe .ssl.SSLSocket.setEnabledProtocolsmethod.mail.smtp.ssl.ciphersuites string Specifies the SSL cipher suites that will be enabled for SSL connections. The property value is a whitespace separated list of tokens acceptable tothe .ssl.SSLSocket.setEnabledCipherSuitesmethod.mail.smtp.starttls.enable boolean If true, enables the use of the STARTTLS command (if supported by the server) to switch the connection to a TLS-protected connection before issuing any login commands. Note that an appropriate trust store must configured so that the client will trust the server’s certificate. Defaults to false.mail.smtp.starttls.required boolean If true, requires the use of the STARTTLS command. If the server doesn’t support the STARTTLS command, or the command fails, the connect method will fail. Defaults to false.mail.smtp.socks.host string Specifies the host name of a SOCKS5 proxy server that will be used for connections to the mail server. (Note that this only works on JDK 1.5 or newer.)mail.smtp.socks.port string Specifies the port number for the SOCKS5 proxy server. This should only need to be used if the proxy server is not using the standard port number of 1080.mail.smtp.mailextension String Extension string to append to the MAIL command. The extension string can be used to specify standard SMTP service extensions as well as vendor-specific extensions. Typically the application should use the method to verify that the server supports the desired service extension. See and other RFCs that define specific extensions.erset boolean If set to true, use the RSET command instead of the NOOP command in the method. In some cases sendmail will respond slowly after many NOOP commands; use of RSET avoids this sendmail issue. Defaults to false.mail.smtp.noop.strict boolean If set to true (the default), insist on a 250 response code from the NOOP command to indicate success. The NOOP command is used by the method to determine if the connection is still alive. Some older servers return the wrong response code on success, some servers don’t implement the NOOP command at all and so always return a failure code. Set this property to false to handle servers that are broken in this way. Normally, when a server times out a connection, it will send a 421 response code, which the client will see as the response to the next command it issues. Some servers send the wrong failure response code when timing out a connection. Do not set this property to false when dealing with servers that are broken in this way.Name Type Description。

深思软件基于java邮件系统解决方案

深思软件基于java邮件系统解决方案

深思软件基于java邮件系统解决方案随着电子邮件成为人们日常办公和沟通的重要方式,邮件系统也成为了企业不可或缺的工具。

在建立邮件系统时,选择适当的邮件系统方案对企业来说至关重要。

Java邮件系统是针对邮件相关应用程序开发的一套API,可用于发送、接收邮件,解析邮件等。

深思软件基于Java邮件系统,提供了一种完整的邮件系统解决方案,旨在帮助企业提高邮件传输的效率和安全性。

一、Java邮件系统概述Java Mail是SUN公司为Java平台设计的邮件API,旨在提供一个用于在Java平台上发送和接收电子邮件的标准方式。

Java Mail API提供了一系列的API,使得邮件消息的创建、发送、接收、过滤及解析等操作变得简单易行。

Java Mail API是由JavaMail和JavaBeans Activation Framework(JAF)两个组件构成,JavaMail是实现邮件传输的核心组件,而JAF则是处理邮件消息内容类型的一组标准。

二、深思软件基于Java邮件系统解决方案1. 邮件服务器深思软件邮件系统完整的架构包括邮件服务器、企业邮箱、移动邮箱等多个组件,其中邮件服务器是整个系统最核心的组件。

深思软件基于Java邮件系统开发的邮件服务器可以高效地接收和投递邮件。

邮件服务器支持POP3、IMAP、SMTP等协议,可以将用户的邮件消息存储在本地的邮件存储设备中,并支持多种邮件存储方式(例如文件系统、数据库、邮件存储设备等)。

2. 企业邮箱深思软件邮件系统中的企业邮箱是基于WEB的企业级电子邮件系统,支持多种邮箱规格和容量,方便企业用户查看、发送和接收邮件。

企业邮箱提供了可配置的用户身份验证、远程管理、安全设置等功能,保护企业用户的机密信息。

此外,企业邮箱还支持日历、通讯录等多种功能,从而支持企业办公的整体流程。

3. 移动邮箱深思软件邮件系统的移动邮箱是专门针对移动设备(例如智能手机或平板电脑)设计的邮件系统。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

JavaMail详细介绍33.1 JavaMail简介JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。

它是Sun发布的用来处理email的API。

它可以方便地执行一些常用的邮件传输。

我们可以基于JavaMail 开发出类似于Microsoft Outlook的应用程序。

虽然JavaMail是Sun的API之一,但它目前还没有被加在标准的java开发工具包中(Java Development Kit),这就意味着你在使用前必须另外下载JavaMail文件。

除此以外,你还需要有Sun的JavaBeans Activation Framework (JAF)。

JavaBeans Activation Framework的运行很复杂,在这里简单的说就是JavaMail的运行必须得依赖于它的支持。

在Windows 2000下使用需要指定这些文件的路径,在其它的操作系统上也类似。

JavaMail是可选包,因此如果需要使用的话你需要首先从下载。

目前最新版本是JavaMail1.4,使用JavaMail的时候需要Javabean Activation Framework的支持,因此你也需要下载JAF。

安装JavaMail只是需要把他们加入到CLASSPATH中去,如果你不想修改CLASSPATH的话,可以直接把他们的jar包直接copy到JAVA_HOME/lib/ext 下。

这样JavaMail就安装好了。

JavaMail包中用于处理电子邮件的核心类是:Session,Message,Address,Authenticator,Transport,Store,Folder等。

Session定义了一个基本的邮件会话,它需要从Properties中读取类似于邮件服务器,用户名和密码等信息。

33.2 邮件收发协议POP3(Post Office Protocol 3)即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。

它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。

通过SMTP协议所指定的服务器,我们就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。

SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转你发出的电子邮件。

33.3 James服务器Apache James(Java Apache Mail Enterprise Server)是Apache组织的子项目之一,完全采用纯Java技术开发,实现了SMTP、POP3与NNTP等多种邮件相关协议。

James 是一个邮件应用平台,可以通过Mailet扩充其功能,如Mail2SMS、Mail2Fax等。

James 提供了比较完善的配置方案,尤其是关于邮件内容存储和用户信息存储部分,可以选择在文件、数据库或其他介质中保存。

James性能稳定、可配置性强,还是开源项目,所有源代码不存在版权问题,因此,James在项目中的应用日益广泛。

33.3.1 启动JAMES我们可以从Apache James 的官方站点下载到我们所需要的James服务器及源码James服务器(ZIP版)下载地址:/james/server/binaries/james-binary-2.3.1.zip 将james-binary-2.3.1.zip解压到纯英文目录下运行bin目录下的run.bat(在运行之前请确保您的Java环境变量已配置成功,否则将提示运行失败) 图33.1表示James服务器已启动成功:图33.1 启动james服务服务器启动成功后,将自动在apps目录下根据james.sar文件生成相应的James发布文件包。

33.3.2 用Telnet管理用户用cmd进入MS-DOS,输入telnet localhost 4555 (注:localhost是邮件服务器名,4555是管理端口,可在\apps\james\SAR-INF\config.xml文件中配置,在此我们使用其默认配置) 然后输入用户名和密码(在配置文件config.xml中,默认为用户名:root密码:root) 如图33.2所示说明登陆成功:图33.2 用root用户登陆登陆成功后,我们就可以开始对用户信息进行增、删、查、改等操作了。

常用的用户信息操作命令参见下表:Currently implemented commands: 常用实现命令help display this help 显示帮助信息listusers display existing accounts 显示现有账户countusers display the number of existing accounts 显示现有账户数量adduser [username] [password] add a new user 添加一个新用户verify [username] verify if specified user exist 核实指定用户是否存在deluser [username] delete existing user 删除存在的用户setpassword [username] [password] sets a user's password 设置用户密码setalias [user] [alias] locally forwards all email for 'user' to 'alias' 设置邮箱别名showalias [username] shows a user's current email alias 显示别名unsetalias [user] unsets an alias for 'user' 删除用户别名setforwarding [username] [emailaddress] forwards a user's email to anotheremail address 转发用户的电子邮件地址到另一个电子邮件地址showforwarding [username] shows a user's current email forwarding 显示用户的当前邮件转发unsetforwarding [username] removes a forward 删除转发user [repositoryname] change to another user repository 改变另一个用户库shutdown kills the current JVM (convenient when James is run as a daemon) 关闭当前的服务quit close connection 关闭连接我们可以输入命令:adduser chenfengcn 881213来添加一个的邮件用户,则其用户名为:chenfengcn,密码为:881213,邮箱地址为:chenfengcn@localhost(用户名后的域名跟服务器配置的域名相同)33.4 JavaMail API简介打开JavaMail.jar文件,我们将发现在javax.mail的包下面存在着一些核心类:Session、Message、Address、Authenticator、Transport、Store、Folder。

而且在javax.mail.internet包中还有一些常用的子类。

Session类定义了基本的邮件会话。

就像Http会话那样,我们进行收发邮件的工作都是基于这个会话的。

Session对象利用了java.util.Properties对象获得了邮件服务器、用户名、密码信息和整个应用程序都要使用到的共享信息。

Session类的构造方法是私有的,所以我们可以使用Session类提供的getDefaultInstance()这个静态工厂方法获得一个默认的Session对象:Properties props = new Properties();// fill props with any informationSession session = Session.getDefaultInstance(props, null);或者使用getInstance()这个静态工厂方法获得自定义的Session:Properties props = new Properties();// fill props with any information Session session = Session.getInstance(props, null);Message:当我们建立了Session对象后,便可以被发送的构造信息体了。

在这里SUN提供了Message类型来帮助开发者完成这项工作。

由于Message是一个抽象类,大多数情况下,我们使用javax.mail.internet.MimeMessage这个子类,该类是使用MIME类型、MIME信息头的邮箱信息。

信息头只能使用US-ASCII字符,而非ASCII字符将通过编码转换为ASCII的方式使用。

为了建立一个MimeMessage对象,我们必须将Session对象作为MimeMessage构造方法的参数传入:MimeMessage message = new MimeMessage(session);注意:对于MimeMessage类来讲存在着多种构造方法,比如使用输入流作为参数的构造方法。

在建立了MimeMessage对象后,我们需要设置它的各个part,对于MimeMessage类来说,这些part就是MimePart接口。

最基本的设置信息内容的方法就是通过表示信息内容和米么类型的参数调用setContent()方法:message.setContent("Hello", "text/plain");然而,如果我们所使用的MimeMessage中信息内容是文本的话,我们便可以直接使用setText()方法来方便的设置文本内容。

相关文档
最新文档