`
avery_leo
  • 浏览: 382401 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

James学习笔记

    博客分类:
  • JAVA
阅读更多

 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服务启动一次之后才自动构件该文件。

 

需要修改的地方:

 

Java代码 复制代码
  1. ……    
  2. <postmaster>Postmaster@localhost</postmaster>    
  3. ……    
  4. <servernames autodetect="true" autodetectIP="true">    
  5.     <servername>localhost</servername>    
  6. </servernames>    
  7. ……   
…… 
<postmaster>Postmaster@localhost</postmaster> 
…… 
<servernames autodetect="true" autodetectIP="true"> 
	<servername>localhost</servername> 
</servernames> 
…… 

  

  

        把localhost该成你自己想要的邮箱域名, 把自动探测IP属性设置为“false”这里假设改成 lixiaobo.com 如果开了一个帐号 leo ,那么他的邮件地址就是 leo@lixiaobo.com (^_^)修改结果如下:

 

Xml代码 复制代码
  1. ……    
  2. <postmaster>Postmaster@lixiaobo.com</postmaster>    
  3. ……    
  4. <servernames autodetect="false" autodetectIP="false">    
  5.     <servername>lixiaobo.com</servername>    
  6. </servernames>    
  7. ……  
…… 
<postmaster>Postmaster@lixiaobo.com</postmaster> 
…… 
<servernames autodetect="false" autodetectIP="false"> 
	<servername>lixiaobo.com</servername> 
</servernames> 
……

   

        找到

Xml代码 复制代码
  1. <mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor">    
  2.     <processor> relay-denied </processor>    
  3.     <notice>550 - Requested action not taken: relaying denied</notice>    
  4. </mailet>  
<mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor"> 
	<processor> relay-denied </processor> 
	<notice>550 - Requested action not taken: relaying denied</notice> 
</mailet>

   

        将其注释,结果如下:

Xml代码 复制代码
  1. <!--mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor">    
  2.     <processor> relay-denied </processor>    
  3.     <notice>550 - Requested action not taken: relaying denied</notice>    
  4. </mailet-->  
<!--mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor"> 
	<processor> relay-denied </processor> 
	<notice>550 - Requested action not taken: relaying denied</notice> 
</mailet-->

    

         找到下面元素,去掉其注释

Xml代码 复制代码
  1. <authRequired>true</authRequired>  
<authRequired>true</authRequired>

  

 

         这样邮箱访问需要帐号验证,你不希望别人用你的帐号收发消息吧……^_^

        

         如此,James服务配置已经完成。

 

 

        6。创建邮件帐号

        创建邮件帐号后,就可以用来收发邮件了。James的账号管理是通过基于Telnet客户机的远程管理器,这点颇为不爽,尤其是我的操作系统下的命令行控制台是不显示telnet命令输入字符的,经常出错。

 

        现在进入命令行控制台,在telnet localhsot 4555 进入James管理器,操作如下:

 复制代码
  1. C:\Documents and Settings>telnet localhost 4555   
C:\Documents and Settings>telnet localhost 4555 

  

 

        将进入

 复制代码
  1. JAMES Remote Administration Tool 2.3.1 Please enter your login and password Login id:  
JAMES Remote Administration Tool 2.3.1 Please enter your login and password Login id:

   

 

        默认的登陆id 为root 密码也为 root ,登陆成功后结果如下:

 复制代码
  1. JAMES Remote Administration Tool 2.3.1    
  2. Please enter your login and password    
  3. Login id:    
  4. Password:    
  5. 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();
	}

}

 

 

分享到:
评论
5 楼 stenlylee 2009-03-12  
请问一下,James能实现多域名管理么?
如果不能,有第三方的东西来实现么?
4 楼 avery_leo 2009-02-27  
shaker_86 写道

请问有没有编程式的添加帐号的方法?

你的问题我理解为,动态变换邮箱账号,来发送邮件。当然可以采用编程的方式实现。
3 楼 shaker_86 2009-02-17  
请问有没有编程式的添加帐号的方法?
2 楼 avery_leo 2008-12-01  
jakey0613 写道

james具体有什么作用啊? 只能实现发邮件吗? 楼主能给解释一下吗?

Apache James 简称 James, 是 Java Apache Mail Enterprise Server的缩写。James 是100%基于Java的电子邮件服务器。它是一种独立的邮件服务器,并提供了一个完整的电子邮件解决方案,用来收、发电子邮件。
1 楼 jakey0613 2008-11-27  
james具体有什么作用啊?
只能实现发邮件吗?
楼主能给解释一下吗?

相关推荐

    java学习笔记非常基础推荐用时10min

    由James Gosling和同事们共同研发,并在1995年正式推出。 Java分为三个体系: JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版) JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平台...

    java学习笔记

    第一单元 java开发 第一章Java简介 一、简介 1.1991年投资诞生,基于C++语言的java。 2.1994年,James Gosling更名为java。 3.1995年5月正式发布。 二、Java开发环境

    note:学习笔记

    笔记 学习笔记

    中文翻译学习笔记-YOLO的全面评述:从YOLOv1到YOLOv8

    对文章《A COMPREHENSIVE REVIEW OF YOLO: FROM YOLOV1 AND BEYOND》进行了翻译和注释,方便做论文、或者研究YOLO技术参考用。实时物体检测已经成为众多邻域应用的关键组成部分,这些领域包括:自动驾驶车辆、机器人...

    记录各种学习笔记(算法、Java、数据库、并发.zip

    它由Sun Microsystems(现在是Oracle Corporation)的James Gosling等人在1995年推出,被设计为一种简单、健壮、可移植、多线程、动态的语言。Java的主要特点和优势包括以下几个方面: 跨平台性(Write Once, Run ...

    整理后java开发全套达内学习笔记(含练习)

    abstract (关键字) 抽象 ['æbstrækt] access vt.访问,存取 ['ækses]'(n.入口,使用权) algorithm n....Annotation [java] 代码注释 [ænәu'teiʃәn] anonymous adj.匿名的[ә'nɒnimәs]'(反义:directly adv....

    记录各种学习笔记(算法、Java、数据库、并发......).zip

    它由Sun Microsystems(现在是Oracle Corporation)的James Gosling等人在1995年推出,被设计为一种简单、健壮、可移植、多线程、动态的语言。Java的主要特点和优势包括以下几个方面: 跨平台性(Write Once, Run ...

    关于学习笔记整理,包括Linux、Java、数据结构和算法,和一些IT工具的使用.zip

    它由Sun Microsystems(现在是Oracle Corporation)的James Gosling等人在1995年推出,被设计为一种简单、健壮、可移植、多线程、动态的语言。Java的主要特点和优势包括以下几个方面: 跨平台性(Write Once, Run ...

    令人敬畏的人工智能,机器学习和深度学习。 学习笔记和精选的此类主题资源清单。-Python开发

    学习笔记和精选的此类主题资源清单。 很棒的AI-ML-DL更好的NLP:NLP Java:| NLP Clojure: NLP Kotlin:| NLP Scala: 使用DL4J(CUDA)Dataiku DSS的NLP: Grakn:| Jupyter-Java:| 使用DL4J的MLPMNist: ...

    VueLearningProg:我的VueJS学习笔记

    VueLearningProg

    java7hashmap源码-java_study_note:java零基础学习笔记

    java最初由就职用于SUN公司的James Gosling 等人发明. SUN公司全称: Sun Microsystems, 其中SUN 是Stanford University Network的缩写(斯坦福大学网络) SUN 公司在2009年被Oracle (Oracle) 公司以7

    java8源码-learning_java:学习Java示例及笔记

    示例及笔记,部分资料来源于网络,整理过来仅供参考使用。推荐新手参考 来学习。 简介 Java 是由 Sun Microsystems 公司于1995年5月推出的 Java 面向对象程序设计语言和 Java 平台的总称。由 James Gosling 和同事们...

    Pluto.jl:JuliaJulia的简单React笔记本

    有兴趣学习Julia,Pluto和应用数学吗? 加入由艾伦·埃德尔曼( Alan Edelman) ,大卫·桑德斯( David P.Sanders ),格randint·桑德森(Grant Sanderson)( 3blue1brown )和詹姆斯·斯洛斯(James Schloss)...

    数据库系统概论(基础篇)-笔记

    此笔记根据中国大学慕课–数据库系统概论(基础篇)视频记录的。(点击蓝色字体直达该视频地址) 一、第一讲:初识数据库系统 (一)引言 1、数据库系统地发展经历了三次演变? 层次/网状数据库系统 关系数据库系统 ...

    ES6精品视频教程笔记.rar

    JavaScript ES6精品视频教程资料,学习ES6不可多得的好资料

    vuepress_blog

    家heroImage heroText标语actionText动作链接特征真的前端之路路漫漫其修远兮学习笔记→ /nav.01.js/标题细节重建博客2020.11.09从Hexo迁移到VuePress标题细节探索前端继续探索前端技术,享受学习的乐趣标题细节记录...

    php中文手册

    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, ...

Global site tag (gtag.js) - Google Analytics