James是Apache的一个开源项目,纯Java实现,Apache james Server作为一个企业级的邮件服务器,对SMTP,POP3,IMAP等邮件协议提供完整的支持。

1.搭建James服务器

Apache James 的官方网站为:http://james.apache.org/,当前 Server 的最新版为 2.3.2版. 安装非常简单,下载后得到apache-james-2.3.2.zip 文件,解压后即可。

在James的bin目录中包含两个重要文件run.bat和run.sh,运行run.bat就可以轻松地启动James邮件服务器。

启动后能在控制台看到如下信息,说明启动成功:

说明:启动前请确保您的JDK环境变量如JAVA_HOME等已经设置好;James 启动时,其SMTP 服务默认在 25 端口启动,POP3 服务默认在 110 端口启动, NNTP 服务默认在 119 端口启动, 请确保这些端口未被占用。比如本系统下就已经安装了Microsoft的 SMTP 服务,造成 James无法启动,解决方法为:开始--->设置--->控制面板--->管理工具--->服务,打开后找到“Simple Mail Transport Protocol(SMTP)”服务项,关闭即可。

5。配置服务

服务器启动后会在本机配置一个默认的服务,这可以用来在本机上本服务器范围内收发邮件,但是邮件发不到163等外网邮箱。我们这里关注的重点就是配置一个能发到外网如163这样的邮箱的邮件,这样才有价值。不过由于本人是在本机上测试,一时不能获取公司的域名参数,无法测试接收外网邮箱(如163)的邮件,见晾,不过做法都是一样的,至少我们可以向外网邮箱发送邮件,局域网内可以收、发邮件。

打开D:\james-2.3.1\apps\james\SAR-INF 下的 config.xml 文件,初次启动James之前,不会有这个文件,只有当James服务启动一次之后才自动构件该文件。

<postmaster>Postmaster@localhost</postmaster>
……
<servernames autodetect="true" autodetectIP="true">   <servername>localhost</servername>
</servernames>   

把localhost该成你自己想要的邮箱域名, 把自动探测IP属性设置为“false”这里假设改成 mail.com ,那么他的邮件地址就是 mail.com修改结果如下:

<postmaster>Postmaster@zhaipuhong.com</postmaster>
……
<servernames autodetect="false" autodetectIP="false">   <servername>mail.com</servername>
</servernames> 

3.创建邮件帐号

使用telnet连接James的Remote Administration Tool。打开一个控制台窗口,输入telnet smtp.163.com

JAMES Remote Administration Tool 2.3.1
Please enter your login and password
Login id:
root
Password:
root
Welcome root. HELP for a list of commands 

创建新用户的命令是:adduser username password

提示用户可以通过“HELP”命令来查询suo9支持的所有命令

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 another email address 转发用户的电子邮件地址到另一个电子邮件地址
showforwarding [username] shows a user's current email forwarding 显示用户的当前邮件转发
unsetforwarding [username] emoves 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 关闭连接 

示例:

public class Mail {private String mailServer,from,to,mailSubject,mailContent;private String username,password;public Mail(){//设置邮件信息//进行认证登录的用户名username="123@163.com";//认证密码password="456";//认证的邮箱对应的邮件服务器mailServer="smtp.163.com";//发件人信息from="123@163.com";//收件人信息to="xxx@126.com";//邮件标题mailSubject="嘿嘿";//邮件内容mailContent="天不错!";}//设置邮件服务器@SuppressWarnings("static-access")
public  void send(){Properties prop=System.getProperties();//指定邮件serverprop.put("mail.smtp.host", mailServer);//是否开启认证prop.put("mail.smtp.auth", "true");//smtp协议的prop.put("mail.smtp.port", "25");//产生Session服务EmailAuthenticator mailauth=new EmailAuthenticator(username, password);Session mailSession=Session.getInstance(prop,(Authenticator)mailauth);try {//封装Message对象Message message=new MimeMessage(mailSession);message.setFrom(new InternetAddress(from)); //发件人message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));//收件人
           message.setSubject(mailSubject);//设置内容(设置字符集处理乱码问题)message.setContent(mailContent,"text/html;charset=gbk");message.setSentDate(new Date());//创建Transport实例,发送邮件Transport tran=mailSession.getTransport("smtp");tran.send(message,message.getAllRecipients());tran.close();} catch (Exception e) {e.printStackTrace();}}
}

使用Spring发送电子邮件

创建SimpleMailMessage

SimpleMailMessage是MailMessage接口的实现类之一。

import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;public class Mail {private MailSender mailSender;public void setMailSender(MailSender mailSender) {this.mailSender = mailSender;}public void send(){SimpleMailMessage message = new SimpleMailMessage();message.setFrom("dzw@mail.com");message.setTo("tom");message.setSubject("问好");message.setText("好久不见,最近好吗?");mailSender.send(message);}
}

applicationContext.xml

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"><property name="host" value="192.168.15.22"></property><!-- 服务器 --><property name="port" value="25"></property><!-- 端口 --><property name="username" value="dzw@mail.com"></property><!-- 用户名 --><property name="password" value="dzw"></property><!-- 密码 --><property name="protocol" value="smtp" ></property><!-- 协议 --><property name="defaultEncoding" value="utf-8"></property><!-- 默认编码 --><property name="javaMailProperties"><props><!-- 设置SMTP服务器需要用户验证  --><prop key="mail.smtp.auth">true</prop></props></property></bean><bean id="mail" class="cn.bdqn.Mail"><property name="mailSender" ref="mailSender"></property></bean><bean id="mailWithAttachment" class="cn.bdqn.MailWithAttachment"><property name="mailSender" ref="mailSender"></property></bean><bean id="mailWithHtml" class="cn.bdqn.MailWithHTML"><property name="mailSender" ref="mailSender"></property></bean></beans>

发送HTML格式的电子邮件

HTMl格式的文本属于MIME类型,需要MimeMessageHelper类的支持

public class MailWithHTML {private JavaMailSender mailSender; //必须使用 JavaMailSenderpublic void setMailSender(JavaMailSender mailSender) {this.mailSender = mailSender;}public void send() throws MessagingException,IOException{MimeMessage mimeMessage = mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "UTF-8");helper.setFrom("dzw@mail.com");helper.setTo("tom");helper.setSubject("欢迎来到员工社区");StringBuffer sb = new StringBuffer();sb.append("<html><head>");sb.append("<meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\">");sb.append("<head><body>");sb.append("<font color='blue' size='5' face='Arial'>");sb.append("尊敬的jerry您好:</font><br/><br/>");sb.append("&nbsp;&nbsp;&nbsp;&nbsp;");sb.append("<font color='black' size='4' face='Arial'>");sb.append("恭喜您在员工社区注册账号成功!请妥善保管您的账号," +"如果登录时忘记密码,可以在网站登录页找回。<br/>");sb.append("<br/><br/>系统管理员</font>");//增加内嵌图片设置sb.append("<br/><img src=\"cid:photo\"></img>");sb.append("</body></html>");helper.setText(sb.toString(),true);//增加内嵌文件ClassPathResource file = new ClassPathResource("/cn/bdqn/attachfiles/Quartz.png");helper.addInline("photo", file);mailSender.send(mimeMessage);}
}

通过setText()设置html参数为true,邮件内容就可以显示HTML页面。在HTML页面中,需要设置content属性,通过“text/html;charset=utf-8”

public class MailWithAttachment {private JavaMailSender mailSender; //必须使用 JavaMailSenderpublic void setMailSender(JavaMailSender mailSender) {this.mailSender = mailSender;}public void send() throws MessagingException,IOException{MimeMessage mimeMessage = mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "UTF-8");helper.setFrom("dzw@mail.com");helper.setTo("tom");helper.setSubject("问好");helper.setText("好久不见,最近好吗?");//添加附件1ClassPathResource file1 = new ClassPathResource("/cn/bdqn/attachfiles/test.doc");helper.addAttachment(file1.getFilename(), file1.getFile());//添加附件2:附件的文件名为中文时,需要对文件名进行编码转换,解决乱码问题ClassPathResource file2 = new ClassPathResource("/cn/bdqn/attachfiles/附件测试文件.doc");helper.addAttachment(MimeUtility.encodeWord(file2.getFilename()),file2.getFile());mailSender.send(mimeMessage);}
}

测试类

public class MailTest {public static void main(String[] args){ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");/*测试简单邮件*/Mail mail = (Mail)context.getBean("mail");mail.send();/*测试带附件的邮件*/try{MailWithAttachment mailWithAttach = (MailWithAttachment)context.getBean("mailWithAttachment");mailWithAttach.send();}catch(Exception e){System.out.print(e.toString());}/*测试HTML格式的邮件*/try{MailWithHTML mailWithHtml = (MailWithHTML)context.getBean("mailWithHtml");mailWithHtml.send();}catch(Exception e){System.out.print(e.toString());}}
}    

搭建james邮件服务器相关推荐

  1. James邮件服务器搭建

    James邮件服务器搭建 本人亲测搭建局域网的James邮件服务器 现在的最新版本是:Apache James 3.0-beta5,可惜试过了并不好使,会报一堆的错误,解决也不好解决,然后就是用了2. ...

  2. 邮件发送--局域网中配置James邮件服务器(二)

    邮件服务器软件有很多种,这里为大家介绍James邮件服务器的搭建与使用.James是属于Apache的一个开源项目,是Apache组织构建的一个可移植的.安全的.100%纯Java实现的企业级邮件服务 ...

  3. RedHat el5.0 搭建 Postfix 邮件服务器系统一

    RedHat el5.0 搭建 Postfix 邮件服务器系统                        (postfix+cyrus-sasl2+courier-authlib+courier- ...

  4. linux 下邮件服务器,Linux 下搭建Postfix邮件服务器

    Linux 下搭建Postfix邮件服务器详解: 1.首先关闭sendmail服务 service sendmail stop 2.chkconfig sendmail off(关闭开机自启动) 3. ...

  5. james邮件服务器的用户信息添加

    通过我的上一篇博客http://blog.csdn.net/luosheng1125/article/details/9162877我们了解了james邮件服务器的安装,启动和配置,但是要想真正的使用 ...

  6. 安装搭建zimbra邮件服务器(dns域名解析)

    安装搭建zimbra邮件服务器(yum搭建,dns搭建) 简介: Zimbra与众不同的特点是其"Zimlet"网络服务提供了更多的电子邮件功能.例如,人们可以简单地用鼠标点击电子 ...

  7. Linux搭建Postfix邮件服务器

    第一章:实验环境和目标 1.实验环境 Vm虚拟机安装CentOs7系统 CentOs7的IP地址:192.168.81.133 Win7客户端(测试用),有Xshell或者SecureCRT工具 2. ...

  8. Linux中搭建 Postfix 邮件服务器

    搭建背景:公司决定搭建邮件服务器,实现内部和外部交流的电子化,因为Linux系统稳定.安全性较好,该公司决定在Linux系统中搭建postfix邮件服务器,邮件服务器mail.pengqi.com能够 ...

  9. 阿里云ECS CentOS6.5搭建iRedMail邮件服务器

    阿里云ECS CentOS6.5搭建iRedMail邮件服务器 0 . 注册域名:例:geekds.com 然后:进入你申请域名的网站(如万网或新网),域名管理–>我的域名–>管理–> ...

最新文章

  1. 分享个网盘,个人觉得很不错!
  2. 不投降就是成功 --- 我看《新喜剧之王》
  3. python流程控制-Python流程控制
  4. UI复习练习_优酷布局
  5. csharp语言_电脑绝技教你22天学精Csharp之第五天
  6. RubyGem version error: rack(1.0.0 runtime)
  7. ark服务器修改龙属性代码,方舟生存进化修改恐龙颜色指令代码
  8. 【SENCHA TOUCH】picker的使用
  9. 复旦计算机对口,2019年长宁区公办初中划片电脑派位对口入学方式
  10. 谷歌中国推出10款有趣的小工具
  11. cad安装日志文件发生错误_CAD 2012 安装出错,错误log文件如下,该怎么修复 在线等。...
  12. 已知计算组合的公式如下,用递归算法写出一个计算组合Cmn的值的函数zh(m,n),并写出主函数调用该函数。
  13. Pandas+Pyecharts | 招聘信息数据可视化
  14. HBuildx中使用vant的ui框架
  15. HNOI 2014 Day1 米特运输
  16. 版本管理:RCS之命令基础篇
  17. 电信运营商瓶颈凸显,期寄区块链带来新增长
  18. Xcode 9 下为适配 iPhoneX 导致对 iOS 10 不兼容问题
  19. 知+是什么,知乎知+怎么开通?
  20. WMS系统后端开发-货位管理

热门文章

  1. .net OADate 转javascript的Datetime js 5位 日期 转换
  2. DWR操作java对象
  3. 11_HTML5_Local_Storage本地存储
  4. Bootstrap学习(一):Bootstrap简介
  5. 使用python标准库urllib2访问网页
  6. 为什么Hadoop将一定会是分布式计算的未来?
  7. OCP DBA考证轻松过关详解(ZT)
  8. 电脑小白和黑客的对白
  9. 【转】61条面向对象设计的经验原则
  10. 被投毒的管道:研究员探索CI环境中的攻击方法