- 浏览: 382401 次
- 性别:
- 来自: 北京
最新评论
-
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 1844THIS DOCUMENT IS FOR OpeNNMS 1. ... -
OSGI学习笔记(三)
2010-09-09 11:08 1150OSGi依赖性管理 OSGi允许您把您的应用程序分成多个模 ... -
OSGI学习笔记(二)
2010-09-09 11:03 1485开发一个简单的Hello World的OSGi Bundle( ... -
OSGI学习笔记(一)
2010-09-09 10:43 1158OSGi是什么 OSGi亦称做Java语言的动态模块系统,它 ... -
Javarebel小试
2010-09-07 16:49 33431 Javarebel简介 JavaRebel是一个JV ... -
240多个jQuery插件下载地址
2009-08-11 17:24 11967概述 jQuery 是继 prototype 之后又一个优秀 ... -
关于SNMP的RFC文档号
2009-05-04 16:10 4553一. SMIv1Full Standards: ... -
JavaCard CPU的设计与FPGA实现
2009-05-04 14:28 21971 JavaCard简介 智能 ... -
Java Card 技术(三)
2009-05-04 14:17 2605Java Card 应用程序的元素 请记住,Java ... -
Java Card 技术(二)
2009-05-04 14:13 2714本系列文章的第 1 部分介绍了 Java Card 技术的 ... -
Extjs学习笔记(一)
2008-12-15 13:39 1599下载extj :http://extjs.com/deploy ... -
ftp4j之FTP
2008-12-01 10:11 3706The ftp4j library implements a ... -
非阻塞的Socket链接(来自老紫竹)
2008-11-25 11:10 1713import java.io.IOException; ... -
java实现 SSL双向认证
2008-11-24 16:36 31188实现技术:JSSE(Java Security Socket ... -
编码传说
2008-11-21 17:38 1299很久很久以前,有一群人,他们决定用8个可以开合的晶体管来 ... -
使用Log4j进行日志操作
2008-10-16 11:36 1109使用Log4j进行日志操作1. 概述1.1. 背景在应用程序中 ... -
linux 下cpu 内存 磁盘 jvm的使用监控
2008-07-24 13:50 2914java 监控linux CPU 内存 磁盘 JVM: imp ... -
snmp4j获取数据agent实例(三)
2008-07-03 11:43 6687agent代理端例子: import java.util. ... -
snmp4j获取数据实例(二)之SnmpTrap示例
2008-07-03 10:27 6588snmp4j的jar包可以在它的官方网站http://www. ... -
snmp4j获取数据实例(一,Linux SNMP OID’s for CPU,Memory a)
2008-07-03 09:10 9038常用SNMP OID Linux SNMP OID’s f ...
相关推荐
由James Gosling和同事们共同研发,并在1995年正式推出。 Java分为三个体系: JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版) JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平台...
第一单元 java开发 第一章Java简介 一、简介 1.1991年投资诞生,基于C++语言的java。 2.1994年,James Gosling更名为java。 3.1995年5月正式发布。 二、Java开发环境
笔记 学习笔记
对文章《A COMPREHENSIVE REVIEW OF YOLO: FROM YOLOV1 AND BEYOND》进行了翻译和注释,方便做论文、或者研究YOLO技术参考用。实时物体检测已经成为众多邻域应用的关键组成部分,这些领域包括:自动驾驶车辆、机器人...
它由Sun Microsystems(现在是Oracle Corporation)的James Gosling等人在1995年推出,被设计为一种简单、健壮、可移植、多线程、动态的语言。Java的主要特点和优势包括以下几个方面: 跨平台性(Write Once, Run ...
abstract (关键字) 抽象 ['æbstrækt] access vt.访问,存取 ['ækses]'(n.入口,使用权) algorithm n....Annotation [java] 代码注释 [ænәu'teiʃәn] anonymous adj.匿名的[ә'nɒnimәs]'(反义:directly adv....
它由Sun Microsystems(现在是Oracle Corporation)的James Gosling等人在1995年推出,被设计为一种简单、健壮、可移植、多线程、动态的语言。Java的主要特点和优势包括以下几个方面: 跨平台性(Write Once, Run ...
它由Sun Microsystems(现在是Oracle Corporation)的James Gosling等人在1995年推出,被设计为一种简单、健壮、可移植、多线程、动态的语言。Java的主要特点和优势包括以下几个方面: 跨平台性(Write Once, Run ...
学习笔记和精选的此类主题资源清单。 很棒的AI-ML-DL更好的NLP:NLP Java:| NLP Clojure: NLP Kotlin:| NLP Scala: 使用DL4J(CUDA)Dataiku DSS的NLP: Grakn:| Jupyter-Java:| 使用DL4J的MLPMNist: ...
VueLearningProg
java最初由就职用于SUN公司的James Gosling 等人发明. SUN公司全称: Sun Microsystems, 其中SUN 是Stanford University Network的缩写(斯坦福大学网络) SUN 公司在2009年被Oracle (Oracle) 公司以7
示例及笔记,部分资料来源于网络,整理过来仅供参考使用。推荐新手参考 来学习。 简介 Java 是由 Sun Microsystems 公司于1995年5月推出的 Java 面向对象程序设计语言和 Java 平台的总称。由 James Gosling 和同事们...
有兴趣学习Julia,Pluto和应用数学吗? 加入由艾伦·埃德尔曼( Alan Edelman) ,大卫·桑德斯( David P.Sanders ),格randint·桑德森(Grant Sanderson)( 3blue1brown )和詹姆斯·斯洛斯(James Schloss)...
此笔记根据中国大学慕课–数据库系统概论(基础篇)视频记录的。(点击蓝色字体直达该视频地址) 一、第一讲:初识数据库系统 (一)引言 1、数据库系统地发展经历了三次演变? 层次/网状数据库系统 关系数据库系统 ...
JavaScript ES6精品视频教程资料,学习ES6不可多得的好资料
家heroImage heroText标语actionText动作链接特征真的前端之路路漫漫其修远兮学习笔记→ /nav.01.js/标题细节重建博客2020.11.09从Hexo迁移到VuePress标题细节探索前端继续探索前端技术,享受学习的乐趣标题细节记录...
Castagnetto, Nicolas Chaillan, Ron Chmara, James Cox, Sara Golemon, Zak Greant, Szabolcs Heilig, Oliver Hinckel, Hartmut Holzgraefe, Rasmus Lerdorf, Andrew Lindeman, Maxim Maletsky, James Moore, ...