- 浏览: 388327 次
- 性别:
- 来自: 北京
最新评论
-
liuzhongzhou2721:
不错啊
Snmp4j编程简介之三:Snmp -
ahong520:
我在Keystore.getInstance("JK ...
java实现 SSL双向认证 -
tanghanlin:
好吧,还是支持下
Snmp4j编程简介之三:Snmp -
sjp524617477:
mark
java实现 SSL双向认证 -
dikesky:
您好,看了您的这篇文章学到很多东西。希望您提供一个QQ号(发到 ...
httpclient笔记(二)
Apache James 简称 James, 是 Java Apache Mail Enterprise Server的缩写。James 是100%基于Java的电子邮件服务器。它是一种独立的邮件服务器,并提供了一个完整的电子邮件解决方案,用来收、发电子邮件。
James2.3.1下载(文后提供下载)
javamail-1_4_1.zip(文后提供下载)
启动 James 服务器
双击\james-2.3.1\bin 目录下的 run.bat文件,即可启动 James 服务器。
控制台显示如下:
Using PHOENIX_HOME: F:\项目\James\james-2.3.1rc1 Using PHOENIX_TMPDIR: F:\项目\James\james-2.3.1rc1\temp Using JAVA_HOME: C:\Program Files\Java\jdk1.6.0_03 Phoenix 4.2 James Mail Server 2.3.1rc1 Remote Manager Service started plain:4555 POP3 Service started plain:110 SMTP Service started plain:25 NNTP Service started plain:119 FetchMail Disabled
启动成功。关闭Ctrl + C
说明:启动前请确保您的JDK环境变量如JAVA_HOME等已经设置好;James 启动时,其SMTP 服务默认在 25 端口启动,POP3 服务默认在 110 端口启动, NNTP 服务默认在 119 端口启动, 请确保这些端口未被占用。
服务配置:
打开F:\项目\James\james-2.3.1rc1\apps\james\SAR-INF 下的 config.xml 文件,初次启动James之前,不会有这个文件,只有当James服务启动一次之后才自动构件该文件。
需要修改的地方:
- ……
- <postmaster>Postmaster@localhost</postmaster>
- ……
- <servernames autodetect="true" autodetectIP="true">
- <servername>localhost</servername>
- </servernames>
- ……
…… <postmaster>Postmaster@localhost</postmaster> …… <servernames autodetect="true" autodetectIP="true"> <servername>localhost</servername> </servernames> ……
把localhost该成你自己想要的邮箱域名, 把自动探测IP属性设置为“false”这里假设改成 lixiaobo.com 如果开了一个帐号 leo ,那么他的邮件地址就是 leo@lixiaobo.com (^_^)修改结果如下:
- ……
- <postmaster>Postmaster@lixiaobo.com</postmaster>
- ……
- <servernames autodetect="false" autodetectIP="false">
- <servername>lixiaobo.com</servername>
- </servernames>
- ……
…… <postmaster>Postmaster@lixiaobo.com</postmaster> …… <servernames autodetect="false" autodetectIP="false"> <servername>lixiaobo.com</servername> </servernames> ……
找到
- <mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor">
- <processor> relay-denied </processor>
- <notice>550 - Requested action not taken: relaying denied</notice>
- </mailet>
<mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor"> <processor> relay-denied </processor> <notice>550 - Requested action not taken: relaying denied</notice> </mailet>
将其注释,结果如下:
- <!--mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor">
- <processor> relay-denied </processor>
- <notice>550 - Requested action not taken: relaying denied</notice>
- </mailet-->
<!--mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor"> <processor> relay-denied </processor> <notice>550 - Requested action not taken: relaying denied</notice> </mailet-->
找到下面元素,去掉其注释
<authRequired>true</authRequired>
这样邮箱访问需要帐号验证,你不希望别人用你的帐号收发消息吧……^_^
如此,James服务配置已经完成。
6。创建邮件帐号
创建邮件帐号后,就可以用来收发邮件了。James的账号管理是通过基于Telnet客户机的远程管理器,这点颇为不爽,尤其是我的操作系统下的命令行控制台是不显示telnet命令输入字符的,经常出错。
现在进入命令行控制台,在telnet localhsot 4555 进入James管理器,操作如下:
C:\Documents and Settings>telnet localhost 4555
将进入
JAMES Remote Administration Tool 2.3.1 Please enter your login and password Login id:
默认的登陆id 为root 密码也为 root ,登陆成功后结果如下:
- JAMES Remote Administration Tool 2.3.1
- Please enter your login and password
- Login id:
- Password:
- Welcome root. HELP for a list of commands
JAMES Remote Administration Tool 2.3.1 Please enter your login and password Login id: Password: Welcome root. HELP for a list of commands
创建新用户的命令是:adduser username password
这里创建了两个账户来作为演示使用: leo/123,crb/123
代码示例:
import java.io.IOException; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Folder; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Store; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeUtility; public class HelloJMail { //发送邮件 public static void sendMail() { //String host = "192.168.10.191"; // 指定的smtp服务器,本机的局域网IP // String host = "localhost"; // 本机smtp服务器 String host = "smtp.163.com"; // 163的smtp服务器 String from = "leo@lixiaobo.com"; // 邮件发送人的邮件地址 // String to = "crb@lixiaobo.com"; // 内网邮件接收人的邮件地址 String to = "lixiaobo618@163.com"; // 外网邮件接收人的邮件地址 final String username = "leo"; //发件人的邮件帐户 final String password = "123"; //发件人的邮件密码 // 创建Properties 对象 Properties props = System.getProperties(); // 添加smtp服务器属性 props.put("mail.smtp.host", host); props.put("mail.smtp.auth", "true"); // 创建邮件会话 Session session = Session.getDefaultInstance(props, new Authenticator(){ @Override public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); try { // 定义邮件信息 MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.addRecipient(Message.RecipientType.TO, new InternetAddress( to)); //message.setSubject(transferChinese("我有自己的邮件服务器了")); message.setSubject("I hava my own mail server"); message.setText("From now, you have your own mail server, congratulation!"); // 发送消息 session.getTransport("smtp").send(message); //Transport.send(message); //也可以这样创建Transport对象发送 System.out.println("SendMail Process Over!"); } catch (MessagingException e) { e.printStackTrace(); } } //接受邮件 public static void getMail(){ String host = "localhost"; final String username = "crb"; final String password = "123"; // 创建Properties 对象 Properties props = new Properties(); // 创建邮件会话 Session session = Session.getDefaultInstance(props, new Authenticator(){ @Override public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); try { // 获取邮箱的pop3存储 Store store = session.getStore("pop3"); store.connect(host, username, password); // 获取inbox文件 Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_ONLY); //打开,打开后才能读取邮件信息 // 获取邮件消息 Message message[] = folder.getMessages(); for (int i=0, n=message.length; i<n; i++) { System.out.println(i + ": " + message[i].getFrom()[0] + "\t" + message[i].getSubject()); try { message[i].writeTo(System.out); } catch (IOException e) { e.printStackTrace(); } } // 关闭资源 folder.close(false); store.close(); } catch (MessagingException e) { e.printStackTrace(); } System.out.println("GetMail Process Over!"); } //邮件主题中文字符转换 public static String transferChinese(String strText){ try{ strText = MimeUtility.encodeText(new String(strText.getBytes(), "GB2312"), "GB2312", "B"); }catch(Exception ex){ ex.printStackTrace(); } return strText; } public static void main(String[] args) { HelloJMail.sendMail(); // HelloJMail.getMail(); } }
- javamail-1_4_1.zip (2.4 MB)
- 下载次数: 85
- james-binary-2.3.1rc1.zip (7.3 MB)
- 下载次数: 88
- config.rar (14.6 KB)
- 下载次数: 61
评论
如果不能,有第三方的东西来实现么?
请问有没有编程式的添加帐号的方法?
你的问题我理解为,动态变换邮箱账号,来发送邮件。当然可以采用编程的方式实现。
james具体有什么作用啊? 只能实现发邮件吗? 楼主能给解释一下吗?
Apache James 简称 James, 是 Java Apache Mail Enterprise Server的缩写。James 是100%基于Java的电子邮件服务器。它是一种独立的邮件服务器,并提供了一个完整的电子邮件解决方案,用来收、发电子邮件。
只能实现发邮件吗?
楼主能给解释一下吗?
发表评论
-
OpenNMS® 安裝指南
2011-03-10 16:20 1913THIS DOCUMENT IS FOR OpeNNMS 1. ... -
OSGI学习笔记(三)
2010-09-09 11:08 1209OSGi依赖性管理 OSGi允许您把您的应用程序分成多个模 ... -
OSGI学习笔记(二)
2010-09-09 11:03 1539开发一个简单的Hello World的OSGi Bundle( ... -
OSGI学习笔记(一)
2010-09-09 10:43 1203OSGi是什么 OSGi亦称做Java语言的动态模块系统,它 ... -
Javarebel小试
2010-09-07 16:49 34251 Javarebel简介 JavaRebel是一个JV ... -
240多个jQuery插件下载地址
2009-08-11 17:24 12051概述 jQuery 是继 prototype 之后又一个优秀 ... -
关于SNMP的RFC文档号
2009-05-04 16:10 4639一. SMIv1Full Standards: ... -
JavaCard CPU的设计与FPGA实现
2009-05-04 14:28 22651 JavaCard简介 智能 ... -
Java Card 技术(三)
2009-05-04 14:17 2676Java Card 应用程序的元素 请记住,Java ... -
Java Card 技术(二)
2009-05-04 14:13 2767本系列文章的第 1 部分介绍了 Java Card 技术的 ... -
Extjs学习笔记(一)
2008-12-15 13:39 1637下载extj :http://extjs.com/deploy ... -
ftp4j之FTP
2008-12-01 10:11 3741The ftp4j library implements a ... -
非阻塞的Socket链接(来自老紫竹)
2008-11-25 11:10 1753import java.io.IOException; ... -
java实现 SSL双向认证
2008-11-24 16:36 31296实现技术:JSSE(Java Security Socket ... -
编码传说
2008-11-21 17:38 1351很久很久以前,有一群人,他们决定用8个可以开合的晶体管来 ... -
使用Log4j进行日志操作
2008-10-16 11:36 1188使用Log4j进行日志操作1. 概述1.1. 背景在应用程序中 ... -
linux 下cpu 内存 磁盘 jvm的使用监控
2008-07-24 13:50 2991java 监控linux CPU 内存 磁盘 JVM: imp ... -
snmp4j获取数据agent实例(三)
2008-07-03 11:43 6737agent代理端例子: import java.util. ... -
snmp4j获取数据实例(二)之SnmpTrap示例
2008-07-03 10:27 6664snmp4j的jar包可以在它的官方网站http://www. ... -
snmp4j获取数据实例(一,Linux SNMP OID’s for CPU,Memory a)
2008-07-03 09:10 9113常用SNMP OID Linux SNMP OID’s f ...
相关推荐
### 韩顺平编写的Java学习笔记概览 #### Java平台分类与运行机制 - **J2SE(Java 2 Platform, Standard Edition)**: 标准版Java开发平台,适用于桌面应用程序开发。 - **J2EE(Java 2 Platform, Enterprise ...
JAVA学习笔记最新ppt版1 JAVA 是一种面向对象的程序语言,具有更高的跨平台可能性。它是 Sun 公司 GreenProject 中撰写 Star7 应用程序的一个程序语言,由 James Gosling 创造。Java 的特性包括简单、面向对象、...
### Java学习笔记知识点详解 #### Java 平台与开发概述 - **Java平台分类:** - **J2SE(Java SE):** 标准版,适用于桌面应用程序开发。 - **J2EE(Java EE):** 企业版,专为Web应用和服务端应用程序设计。 -...
### JDK 6.0 学习笔记精要 #### 一、Java 概览 - **Java 的起源与发展** - Java 最初是由 Sun Microsystems 的 Green Project 开发出来的,最初是为了设计 Star7 应用程序而创建的一种编程语言。 - 名称由来:...
韩顺平 Java 从入门到精通视频教程学习笔记整理(齐全) 本资源是韩顺平 Java 从入门到精通视频教程的学习笔记,涵盖了 Java 基础知识、面向对象编程、图形界面开发、数据库编程、文件IO流编程、网络编程、多线程...
根据提供的信息,我们可以总结出以下关于Flex学习笔记中的关键技术知识点: ### 1. Flex 基础设置 在Flex开发中,通常会涉及到基础样式的设置。例如,在给定的部分内容中提到了字体大小、颜色及背景色的设置。虽然...
在这个“Java学习笔记,疯狂讲义”中,我们可以期待涵盖Java的基础到高级概念。 首先,基础部分会讲解Java的历史和特点,包括其创始人James Gosling,以及为什么Java被称为“一次编写,到处运行”的语言。接下来,...
### JAVA学习笔记知识点详解 #### 一、计算机概述 1. **计算机**:电子设备,用于处理信息。 2. **计算机硬件**: - **中央处理器(CPU)**:计算机的大脑,负责处理指令。 - **内存(RAM)**:临时存储数据,...
Java学习笔记:全面掌握Java编程的核心知识与技能 在当今的软件开发领域,Java作为一种流行的、功能强大的面向对象编程语言,被广泛应用于各种场景,包括Web应用、移动应用、企业级应用等。本篇Java学习笔记旨在为...
Java 从入门到精通学习笔记整理 本资源摘要信息中,我们将从 Java 的基本概念到高级开发技术进行详细的介绍,涵盖了 Java 平台、Java 开发平台、Java 程序的运行机制、Java 编程语言的特点、Java 语言的基本语法、...
### Java课堂笔记学习 #### 软件定义与软件开发 - **软件**:软件是运行在硬件之上的一组指令集,这些指令集能够完成特定的功能。软件开发过程包括设计和编码两个主要阶段。 #### 编程语言的重要性 - **编程语言...
Python与Java对比学习笔记 Python与Java是两种流行的编程语言,它们都有其自己的优缺点和应用场景。本笔记旨在通过对比学习Python与Java,帮助读者更好地理解和选择适合自己的编程语言。 Python语言概述 ...