- 浏览: 118382 次
- 性别:
- 来自: 福州
文章分类
最新评论
-
dengli19881102:
厉害
不以0开头的数字输入框 -
zhangyi462002:
仁兄, 我照着你的代码走下来,为什么启动的时候,就是找不到Bi ...
James+Javamail构建邮件服务(三) -
hwh0919:
james连接sql server 2008怎么写呢
James+Javamail构建邮件服务(五) -
mygia:
如果是很多很多的person,用什么方式来保存好?
对象序列化和反序列化是怎么回事 -
azhqiang:
楼主辛苦了。
不以0开头的数字输入框
8 Javamail的高级应用
8.1 用Javamail实现对邮件的查找
在邮件的高级应用中,当遇到某个帐户中的邮件数非常多的时候,而用户往往只需要对其中的某几封邮件进行处理。倘若要把所有的邮件都取出来,再进行对应信息的判断提取,这无疑将大大加重邮件服务器的负担。为了改善这种状况,Javamail内部提供了一个专门用于邮件查找的包:javax.mail.search。这个包将通过对SearchTerm对象进行设置,而后提交给服务器,服务器端有相应的过滤器,根据SearchTerm对象的设置将邮件过滤的结果传回给客户端。以提高工作效率,减轻服务器端负担。下面就让我们一起来做一个例子说明一下我们应该如何使用search这个包吧。
8.1.1 业务描述
编写一个类,实现对helloworld@localhost邮件中邮件的条件搜索功能。在本例中实现对主题中包含“测试”,发件人是chenfengcn@localhost,的邮件的搜索。
8.1.2 编码实现
本例只展示如何使用Javamail的Search包实现对邮件的搜索功能,在实际应用中,Search包中还存在许多功能相当完备的API,若对这部分内容有兴趣可自行参考Javamail API。
API明细:/javamail-1.4.1/docs/javadocs/javax/mail/search/package-frame.html
9 James邮件服务器的高级应用与配置
9.1 配置邮箱域名
配置config.xml文件,文件位于\apps\james\SAR-INF目录下。在配置文件中找到:
这两项内容,把其中的localhost改成你所要配置的域名即可。
9.2 将用户信息配置为数据库存储方式
James服务器提供了相当完善的配置方案,可选择将用户信息保存在文件、数据库或其他介质中。在默认的情况下,服务器将用户信息以加密形式保存于\james-2.3.1\apps\james
\var\users目录下的文件中。我们可以通过改变其配置信息从而改变用户信息的保存方式。在此仅以MYSQL数据库的配置方式为例说明。
第一步:
将相应数据库的JDBC驱动包复制到lib目录下
即我们需要把mysql-connector-java-3.1.13-bin.jar的MYSQL数据库驱动包复制到\james-2.3.1\lib目录下
第二步:
新建数据库,建立一个用于存放James用户信息的数据库(表不用建,由James自动创建),在这里,我们假设新建的数据库为mail
第三步:
配置config.xml文件,文件位于\apps\james\SAR-INF目录下。打开config.xml,找到以下内容:
把这部分内容修改为:
第四步:
找到MySQL配置位置
首先,去掉data-source标签前后的注释标识(”<!-- -->”),然后按照你的实际情况配置好相应的数据库信息(包括URL、用户名、密码、最大连接数)。然后保存,重新启动James。James会在数据库中自动创建users表用于存放邮箱的用户信息。这样配置以后,我们除了可以通过telnet操作用户信息外,同样可以通过此users表来操作用户信息。
值得注意的是,James的用户密码使用的是SHA单向加密算法,若需添加用户或对用户密码进行修改,则会遇到SHA的加密问题。我们应该如何来解决这个问题呢?查看James的源码中org.apache.james.userrepository包中的DefaultUser.java文件,我们可以发现,James中提供verifyPassword()和setPassword()两个方法,verifyPassword()是用来做密码认证的,而setPassword()则是用来实现密码转换的,即将明文密码转换成密文。通过仔细研究这两个方法,可以很容易地实现将自己的密码进行SHA加密了。
9.3 通过操作数据库实现用户信息操作
在上一节我们讨论了可以将James的用户信息配置到数据库中使用,但会存在SHA加密的问题,在这一节里,我们将讨论如何来解决这个问题,从而真正实现通过操作数据库来操作James服务器的用户信息。
9.3.1 业务描述
本例是基于上一节“将用户信息配置为数据库存储方式”后,通过操作数据库,即:对数据库的信息进行增、删、查、改等操作。本例只实现用户信息的添加,关键在于使用James源码包中提供的SHA加密算法实现用户密码的加密,其余功能跟一般数据库操作无异,故不赘述。
9.3.2 编码实现
用户添加类:AddUserByDB.java
上述程序成功运行后,系统将在数据库添加一条hello用户的记录,那么我们应该如何测试此用户是否真正创建成功并可使用呢?方法有很多,可以使用前面所述的,通过Telnet命令中的listusers来查看,当然,同样也可以使用Foxmail将此用户添加进去,帐户能正常接收到Foxmail发送的邮件即表明此用户可正常使用了。
在此例子编写的过程中要注意以下两点:1、用户信息的后四个属性需要使用('SHA',0,NULL,0,null)此四个默认值,若用错,则新建用户可能不能使用;2、在程序运行过程中,需要使用到james-2.3.1.jar包和相应的数据库驱动包,在程序运行前请确保这些包已添加到相关的位置。
9.4 通过Java调用Telnet实现用户信息操作(未完成)
通过前面的介绍,我们可以很方便地通过Telnet或数据库方式来对James的用户信息进行操作,Telnet是相对外部的较慢的方式,如果我们要实现批量添加或批量修改用户信息,使用外部的Telnet来操作就很难实现了。好在Apache组织提供了在Java里调用Telnet的方法(即:commons-net-1.4.1.jar包),在此,我们主要展示如何使用Apache的net包实现添加一个James服务器用户,当然,你同样可以使用此技术进行查询James里的用户、修改用户信息等James的Telnet命令提供的所有功能。
9.4.1 业务描述
本例将展示如何在Java里调用Telnet命令实现James邮件用户的添加。当然,你同样可以使用此技术执行其他可以使用Telnet进行的操作。
9.4.2 编码实现
AddUserByTelnet.java
10 常见问题与解决
10.1 Javamail常见问题
1、接收或发送邮件时,提示如下报错:
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
at javax.mail.Session.loadProvidersFromStream(Session.java:928)
at javax.mail.Session.access$000(Session.java:174)
at javax.mail.Session$1.load(Session.java:870)
at javax.mail.Session.loadResource(Session.java:1084)
at javax.mail.Session.loadProviders(Session.java:889)
at javax.mail.Session.<init>(Session.java:210)
at javax.mail.Session.getInstance(Session.java:232)
at com.newland.javamail.sample1.ReceiveMail.main(ReceiveMail.java:41)
此问题与J2EE的版本有关,将J2EE的版本换成1.4即解决问题。
有些网站会把其他地方发来的邮件当作垃圾邮件处理而拒收的。或者使用的协议不一样,可以从这两个方面考虑一下。
8.1 用Javamail实现对邮件的查找
在邮件的高级应用中,当遇到某个帐户中的邮件数非常多的时候,而用户往往只需要对其中的某几封邮件进行处理。倘若要把所有的邮件都取出来,再进行对应信息的判断提取,这无疑将大大加重邮件服务器的负担。为了改善这种状况,Javamail内部提供了一个专门用于邮件查找的包:javax.mail.search。这个包将通过对SearchTerm对象进行设置,而后提交给服务器,服务器端有相应的过滤器,根据SearchTerm对象的设置将邮件过滤的结果传回给客户端。以提高工作效率,减轻服务器端负担。下面就让我们一起来做一个例子说明一下我们应该如何使用search这个包吧。
8.1.1 业务描述
编写一个类,实现对helloworld@localhost邮件中邮件的条件搜索功能。在本例中实现对主题中包含“测试”,发件人是chenfengcn@localhost,的邮件的搜索。
8.1.2 编码实现
package com.newland.javamail.sample1; import java.util.ArrayList; import java.util.Properties; import javax.mail.Folder; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.NoSuchProviderException; import javax.mail.Session; import javax.mail.Store; import javax.mail.internet.InternetAddress; import javax.mail.search.AndTerm; import javax.mail.search.FromTerm; import javax.mail.search.SearchTerm; import javax.mail.search.SubjectTerm; /** * 使用Javamail的Search包实现对邮件的搜索功能 * @author Chen.Feng(Kevin)<br> * mail:chenfengcn@yeah.net<br> * qq:67758633 * */ public class SearchMail { private static ArrayList<SearchTerm> list=new ArrayList(); public static void main(String[] args) { //用户信息 String user = "helloworld"; String password = "881213"; // 配置服务器属性 Properties props = new Properties(); props.put("mail.smtp.host", "localhost"); // smtp服务器 props.put("mail.smtp.auth", "true"); // 是否smtp认证 props.put("mail.smtp.port", "25"); // 设置smtp端口 props.put("mail.transport.protocol", "smtp"); // 发邮件协议 props.put("mail.store.protocol", "pop3"); // 收邮件协议 //创建会话 Session session = Session.getInstance(props, null); Store store=null; try { //连接Store store = session.getStore("pop3"); store.connect("localhost", user, password); //打开Folder Folder folder = store.getFolder("inbox"); folder.open(Folder.READ_ONLY); //构造搜索规则 SearchTerm subterm = new SubjectTerm("测试"); SearchTerm fterm = new FromTerm(new InternetAddress("chenfengcn@localhost")); SearchTerm st=new AndTerm(subterm,fterm); Message[] message=folder.search(st); //输出搜索到的邮件的主题 for (int i = 0; i < message.length; i++) { System.out.println(message[i].getSubject()); } } catch (NoSuchProviderException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (MessagingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
本例只展示如何使用Javamail的Search包实现对邮件的搜索功能,在实际应用中,Search包中还存在许多功能相当完备的API,若对这部分内容有兴趣可自行参考Javamail API。
API明细:/javamail-1.4.1/docs/javadocs/javax/mail/search/package-frame.html
9 James邮件服务器的高级应用与配置
9.1 配置邮箱域名
配置config.xml文件,文件位于\apps\james\SAR-INF目录下。在配置文件中找到:
<postmaster>Postmaster@localhost</postmaster> <servernames autodetect="true" autodetectIP="true"> <!-- CONFIRM? --> <servername>localhost</servername> </servernames>
这两项内容,把其中的localhost改成你所要配置的域名即可。
9.2 将用户信息配置为数据库存储方式
James服务器提供了相当完善的配置方案,可选择将用户信息保存在文件、数据库或其他介质中。在默认的情况下,服务器将用户信息以加密形式保存于\james-2.3.1\apps\james
\var\users目录下的文件中。我们可以通过改变其配置信息从而改变用户信息的保存方式。在此仅以MYSQL数据库的配置方式为例说明。
第一步:
将相应数据库的JDBC驱动包复制到lib目录下
即我们需要把mysql-connector-java-3.1.13-bin.jar的MYSQL数据库驱动包复制到\james-2.3.1\lib目录下
第二步:
新建数据库,建立一个用于存放James用户信息的数据库(表不用建,由James自动创建),在这里,我们假设新建的数据库为mail
第三步:
配置config.xml文件,文件位于\apps\james\SAR-INF目录下。打开config.xml,找到以下内容:
<repository name="LocalUsers" class="org.apache.james.userrepository.UsersFileRepository"> <destination URL="file://var/users/"/> </repository>
把这部分内容修改为:
<repository name="LocalUsers" class="org.apache.james.userrepository.JamesUsersJdbcRepository" destinationURL="db://maildb/users"> <sqlFile>file://conf/sqlResources.xml</sqlFile> </repository>
第四步:
找到MySQL配置位置
<!-- Example, connecting to a MySQL database called "mail" on localhost--> <!-- --> <!-- The max value is the maximum number of concurrent connections James will --> <!-- open to this database--> <!-- If you see "SQLException: Giving up... no connections available." in your --> <!-- log files or bounced mail you should increase this value --> <!-- <data-source name="maildb" class="org.apache.james.util.dbcp.JdbcDataSource"> <driver>com.mysql.jdbc.Driver</driver> <dburl>jdbc:mysql://127.0.0.1/mail?autoReconnect=true</dburl> <user>username</user> <password>password</password> <max>20</max> </data-source> -->
首先,去掉data-source标签前后的注释标识(”<!-- -->”),然后按照你的实际情况配置好相应的数据库信息(包括URL、用户名、密码、最大连接数)。然后保存,重新启动James。James会在数据库中自动创建users表用于存放邮箱的用户信息。这样配置以后,我们除了可以通过telnet操作用户信息外,同样可以通过此users表来操作用户信息。
值得注意的是,James的用户密码使用的是SHA单向加密算法,若需添加用户或对用户密码进行修改,则会遇到SHA的加密问题。我们应该如何来解决这个问题呢?查看James的源码中org.apache.james.userrepository包中的DefaultUser.java文件,我们可以发现,James中提供verifyPassword()和setPassword()两个方法,verifyPassword()是用来做密码认证的,而setPassword()则是用来实现密码转换的,即将明文密码转换成密文。通过仔细研究这两个方法,可以很容易地实现将自己的密码进行SHA加密了。
9.3 通过操作数据库实现用户信息操作
在上一节我们讨论了可以将James的用户信息配置到数据库中使用,但会存在SHA加密的问题,在这一节里,我们将讨论如何来解决这个问题,从而真正实现通过操作数据库来操作James服务器的用户信息。
9.3.1 业务描述
本例是基于上一节“将用户信息配置为数据库存储方式”后,通过操作数据库,即:对数据库的信息进行增、删、查、改等操作。本例只实现用户信息的添加,关键在于使用James源码包中提供的SHA加密算法实现用户密码的加密,其余功能跟一般数据库操作无异,故不赘述。
9.3.2 编码实现
用户添加类:AddUserByDB.java
package com.newland.james.user.sample1; import java.security.NoSuchAlgorithmException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import org.apache.james.security.DigestUtil; /** * 通过操作数据库来添加James用户 * * @author Chen.Feng(Kevin)<br> * mail:chenfengcn@yeah.net<br> * qq:67758633 */ public class AddUserByDB { public static void main(String[] args) { // 连接数据库 String driverName = "com.mysql.jdbc.Driver"; String dbURL = "jdbc:mysql://localhost/mail?autoReconnect=true"; String userName = "root"; String userPwd = "881213"; Connection conn = null; try { Class.forName(driverName); conn = DriverManager.getConnection(dbURL, userName, userPwd); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } // 构造并执行SQL语句,关键在于DigestUtil.digestString("881213", "SHA"),实现对密码的SHA加密 // 注:用户信息的后四个属性需要使用('SHA',0,NULL,0,null)此四个默认值,若用错,则新建用户可能不能使用 String sql = ""; try { sql = "insert into users values('hello','" + DigestUtil.digestString("881213", "SHA") + "','SHA',0,NULL,0,null)"; conn.createStatement().executeUpdate(sql); conn.close(); System.out.println("用户添加成功"); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
上述程序成功运行后,系统将在数据库添加一条hello用户的记录,那么我们应该如何测试此用户是否真正创建成功并可使用呢?方法有很多,可以使用前面所述的,通过Telnet命令中的listusers来查看,当然,同样也可以使用Foxmail将此用户添加进去,帐户能正常接收到Foxmail发送的邮件即表明此用户可正常使用了。
在此例子编写的过程中要注意以下两点:1、用户信息的后四个属性需要使用('SHA',0,NULL,0,null)此四个默认值,若用错,则新建用户可能不能使用;2、在程序运行过程中,需要使用到james-2.3.1.jar包和相应的数据库驱动包,在程序运行前请确保这些包已添加到相关的位置。
9.4 通过Java调用Telnet实现用户信息操作(未完成)
通过前面的介绍,我们可以很方便地通过Telnet或数据库方式来对James的用户信息进行操作,Telnet是相对外部的较慢的方式,如果我们要实现批量添加或批量修改用户信息,使用外部的Telnet来操作就很难实现了。好在Apache组织提供了在Java里调用Telnet的方法(即:commons-net-1.4.1.jar包),在此,我们主要展示如何使用Apache的net包实现添加一个James服务器用户,当然,你同样可以使用此技术进行查询James里的用户、修改用户信息等James的Telnet命令提供的所有功能。
9.4.1 业务描述
本例将展示如何在Java里调用Telnet命令实现James邮件用户的添加。当然,你同样可以使用此技术执行其他可以使用Telnet进行的操作。
9.4.2 编码实现
AddUserByTelnet.java
package com.newland.james.user.sample1; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.SocketException; import org.apache.commons.net.telnet.TelnetClient; /** * 通过Java调用Telnet命令添加James用户 * * @author Chen.Feng(Kevin)<br> * mail:chenfengcn@yeah.net<br> * qq:67758633 * */ public class AddUserByTelnet { //设置回车换行 public static final String LINE_SEPARATOR = System.getProperties() .getProperty("line.separator"); public static void main(String[] args) { BufferedReader m_reader; OutputStreamWriter m_writer; TelnetClient m_telnetClient = new TelnetClient(); try { //设置Telnet超时 m_telnetClient.setDefaultTimeout(1000); //设置Telnet服务器地址及端口 m_telnetClient.connect("localhost", 4555); //创建读取缓冲对象 m_reader = new BufferedReader(new InputStreamReader(m_telnetClient .getInputStream())); //创建用于发送Telnet命令对象 m_writer = new OutputStreamWriter(m_telnetClient.getOutputStream()); //不断接收登陆成功的信号,超时抛出异常,则跳至一下条代码执行 try { for (;;) { System.out.println(m_reader.readLine()); } } catch (Exception e) { } //输入James服务器用户名,此为管理员用户名,而非普通用户,默认为root m_writer.write("root" + LINE_SEPARATOR); m_writer.flush(); System.out.println(m_reader.readLine()); //输入root用户密码 m_writer.write("root" + LINE_SEPARATOR); m_writer.flush(); System.out.println(m_reader.readLine()); //输入Telnet命令添加用户 m_writer.write("adduser helloman 881213" + LINE_SEPARATOR); m_writer.flush(); System.out.println(m_reader.readLine()); //输出用户列表 m_writer.write("listusers" + LINE_SEPARATOR); m_writer.flush(); //显示用户列表 try { for (;;) { System.out.println(m_reader.readLine()); } } catch (Exception e) { } } catch (SocketException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
10 常见问题与解决
10.1 Javamail常见问题
1、接收或发送邮件时,提示如下报错:
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
at javax.mail.Session.loadProvidersFromStream(Session.java:928)
at javax.mail.Session.access$000(Session.java:174)
at javax.mail.Session$1.load(Session.java:870)
at javax.mail.Session.loadResource(Session.java:1084)
at javax.mail.Session.loadProviders(Session.java:889)
at javax.mail.Session.<init>(Session.java:210)
at javax.mail.Session.getInstance(Session.java:232)
at com.newland.javamail.sample1.ReceiveMail.main(ReceiveMail.java:41)
此问题与J2EE的版本有关,将J2EE的版本换成1.4即解决问题。
评论
5 楼
hwh0919
2011-12-12
james连接sql server 2008怎么写呢
4 楼
zhangliao613
2010-10-21
你好, 请问你pop3用SearchTerm来过滤邮件的时候, 如果邮件数量比较多, 会不会比较慢, 我发现imap用SearchTerm的时候速度还可以, 但是pop3用SearchTerm的时候比较慢,这个怎么解决的, 望不吝赐教, 感谢~~
3 楼
chenfengcn
2010-10-07
liaoshaoyao 写道
大哥, 请问你有往外发送过邮件没有? 我已经实现了站内的相关操作, 但是发送到站外却不行。 可否指点一二? 谢谢
有些网站会把其他地方发来的邮件当作垃圾邮件处理而拒收的。或者使用的协议不一样,可以从这两个方面考虑一下。
2 楼
juchanghuan
2010-09-30
现在已经实现发送邮件至外网,但是却收不到外网的邮件,能否指导下???谢谢!!
1 楼
liaoshaoyao
2009-09-01
大哥, 请问你有往外发送过邮件没有? 我已经实现了站内的相关操作, 但是发送到站外却不行。 可否指点一二? 谢谢
发表评论
-
强大的Wordpress
2010-12-03 23:44 1123最近,国内的环境是越来越“和谐”了,几乎在所有和网站发 ... -
Quartz任务调度(二)
2009-04-02 22:53 23613 核心概念描述 3.1 Job ... -
James+Javamail构建邮件服务(三)
2009-04-02 22:44 61524 Mailet快速入门 Mailet API是一个用来创 ... -
James+Javamail构建邮件服务(二)
2009-04-02 22:41 42853 Javamail快速入门 进行Javamail开发需要 ... -
Quartz任务调度(一)
2009-03-29 21:41 1695Quartz任务调度 本文 ... -
James+Javamail构建邮件服务(四)
2009-03-29 01:02 34355 Javamail邮件存储逻辑简 ... -
James+Javamail构建邮件服务(一)
2009-03-29 00:49 10407James+Javamail构建邮件服务 本文描述如何使用 ...
相关推荐
### James+Javamail构建邮件服务 #### 关于James与Javamail ##### Apache James Apache James(Java Apache Mail Enterprise Server)是Apache组织的一个子项目,它完全基于Java技术开发,支持多种邮件相关协议,...
James+Javamail构建邮件服务
james+Javamail构建邮件服务有例子,有详解
JavaMail邮件服务是Java开发中用于发送和接收电子邮件的标准库,它基于SMTP(Simple Mail Transfer Protocol)和...同时,掌握这些知识点对于开发企业级应用、构建邮件通知系统或实现自动化邮件处理都是非常重要的。
JavaMail和James是两个在Java环境中处理电子邮件的关键组件。JavaMail是一个开源库,它提供了用于发送、接收和操作电子邮件的标准API。而James(Apache James)则是一个完整的邮件服务器,它支持SMTP、POP3和IMAP...
Apache James是基于Java开发的一款开源邮件服务器,它集成了POP3、SMTP等常见的邮件协议,为企业和学习者提供了构建邮件服务器的便利。本文将详细介绍如何在Linux环境下搭建JavaMail邮箱服务器Apache James。 **...
此外,James可以与其他Apache项目(如Tomcat、Cassandra等)集成,构建更复杂的邮件解决方案。 总的来说,James邮件服务器是一个强大且灵活的开源邮件平台,适用于从小型企业到大型企业的各种规模的组织。其强大的...
1. 使用JavaMail发送邮件:通过`javax.mail.Session`、`javax.mail.Transport`和`javax.mail.internet.MimeMessage`等类,可以构建SMTP客户端,设置发件人、收件人、主题和正文,然后通过Transport.send()方法发送...
根据提供的文件描述部分,JavaMail API不仅仅能够执行一些简单的邮件传输任务,它还能被用来构建功能丰富的邮件客户端应用,类似于Microsoft Outlook。这意味着,JavaMail API可以用来实现从创建邮件、添加附件、...
James_Mail 是一款基于Java开发的B/S模式的电子邮件系统,它提供了一种高效、安全且易于管理的方式来处理电子邮件服务。在这个系统中,用户可以通过Web浏览器进行邮件的收发、管理,极大地提高了工作效率。 ### 一...
在结合James服务器使用时,JavaMail可以作为应用程序与邮件服务器交互的桥梁。 在JavaMail工程实例中,我们通常会涉及到以下几个关键知识点: 1. **JavaMail API**: JavaMail API 包含了一系列的接口和类,如`...
在Java开发领域,构建一个邮件服务器是一项重要的技术实践,这不仅可以用于学习JavaMail API的使用,也可以在实际项目中提供邮件发送和接收服务。本项目是基于纯Java实现的一个邮件服务器,名为James,版本为2.3.1。...
### 基于Java的邮件服务器构建指南 #### 一、引言 本文将详细介绍如何构建一个基于Java的邮件服务器,特别适用于初学者以及资源有限的学习者。文章将涵盖整个搭建过程中的关键技术点,包括Apache James 3.0 的安装...
JavaMail包括`Session`(设置邮件服务器的配置信息)、`Message`(表示邮件对象)、`Address`(表示邮件地址)等核心组件,使开发者能够轻松地构建邮件客户端或服务器端应用。 5. MIME(Multipurpose Internet Mail...
在Java中,我们可以使用开源项目如James、JAMES Server或Apache MINA来构建这样的系统。 4. 安全性:邮件服务器需要确保通信的安全性,通常采用SSL/TLS进行加密,防止数据在传输过程中被截获。开发者需配置服务器...
JavaMailServer,通常指的是Apache James项目,这是一个开源的邮件服务器,...通过理解和掌握其工作原理,你可以有效地利用James构建和管理自己的邮件系统。无论是个人使用还是企业部署,James都是一个值得信赖的选择。
本文主要探讨了如何在Oracle环境下部署企业级JavaMail,包括选用James邮件服务器作为后台服务,以及集成开源的WebMail系统ClaroSync Touch。Oracle数据库作为数据存储的核心,提供了强大的数据管理和事务处理能力,...