搭建Apache James服务器用JAVA发送邮件

来源:互联网 发布:双色球内部数据 编辑:程序博客网 时间:2024/06/05 11:21

 james是apache的一个开源项目,纯java实现。

一、搭建james服务器

1.1、去james官网下载james软件包

http://james.apache.org/download.cgi


1.2、解压运行run.bat启动james服务器




1.3、启动或关闭windows功能中启用Telnet、TFTP 客户端



1.4、命令窗口telnet localhost 4555登录james服务器,输入默认用户名密码root/root登录即可





1.5、adduser【username】【userpassword】命令添加用户,listusers查看已添加的所有用户




二、java中通过james服务器发送邮件


2.1、配置文件config.properties

#邮件配置mail.smtp.host=bert.com.cnmail.smtp.auth=truemail.sender=bert@bert.com.cnmail.sender.username=***mail.sender.password=***

2.2、Constants.java

public final class Constants {public static final String MAIL_SMTP_HOST;public static final String MAIL_SMTP_AUTH;public static final String MAIL_SENDER;public static final String MAIL_SENDER_USERNAME;public static final String MAIL_SENDER_PASSWORD;static{ResourceBundle bundle = ResourceBundle.getBundle("config");MAIL_SMTP_HOST = bundle.getString("mail.smtp.host");//邮件服务器地址MAIL_SMTP_AUTH = bundle.getString("mail.smtp.auth");//邮件服务器开启密码验证标志位MAIL_SENDER = bundle.getString("mail.sender");//发件邮箱MAIL_SENDER_USERNAME = bundle.getString("mail.sender.username");//发件邮箱用户名MAIL_SENDER_PASSWORD = bundle.getString("mail.sender.password");//发件邮箱密码}}

2.3、EmailInfo.java

public class EmailEmailInfoInfo {private String receiver;//收件人private String subject;//邮件主题private String textMessage;//短信内容private String accessoryUrl;//附件文件路径private String accessoryName;//附件名称public String getReceiver() {return receiver;}public void setReceiver(String receiver) {this.receiver = receiver;}public String getSubject() {return subject;}public void setSubject(String subject) {this.subject = subject;}public String getTextMessage() {return textMessage;}public void setTextMessage(String textMessage) {this.textMessage = textMessage;}public String getAccessoryUrl() {return accessoryUrl;}public void setAccessoryUrl(String accessoryUrl) {this.accessoryUrl = accessoryUrl;}public String getAccessoryName() {return accessoryName;}public void setAccessoryName(String accessoryName) {this.accessoryName = accessoryName;}}

2.4、EmailUtil.java

public  class EmailUtil {public static synchronized boolean sendEmail(EmailInfo emailInfo) throws AddressException, MessagingException{InternetAddress[] address = null;String mailServer = Constants.MAIL_SMTP_HOST;String auth = Constants.MAIL_SMTP_AUTH;String authName = Constants.MAIL_SENDER_USERNAME;String authPwd= Constants.MAIL_SENDER_PASSWORD;String from = Constants.MAIL_SENDER;String to = emailInfo.getReceiver();String subject = emailInfo.getSubject();String textMessage = emailInfo.getTextMessage();Properties props = null;props = System.getProperties();props.put("mail.smtp.host",mailServer);props.put("mail.smtp.auth",auth);MySecurity mSec = new MySecurity(authName,authPwd);Session mailSession = Session.getDefaultInstance(props,mSec);mailSession.setDebug(false);Message msg = new MimeMessage(mailSession);msg.setFrom(new InternetAddress(from));address = InternetAddress.parse(to,false);msg.setRecipients(Message.RecipientType.TO, address);msg.setSubject(subject);msg.setSentDate(new Date());msg.setText(textMessage);Multipart multipart = new MimeMultipart();String accessoryUrl = emailInfo.getAccessoryUrl();String accessoryName = emailInfo.getAccessoryName();if(Util.isNotNull(accessoryUrl) && Util.isNotNull(accessoryName)){BodyPart messageBodyPart = new MimeBodyPart();//"D:"+File.separator+"kiding.gif"DataSource dataSource = new FileDataSource(accessoryUrl);messageBodyPart.setDataHandler(new DataHandler(dataSource));messageBodyPart.setFileName(accessoryName);multipart.addBodyPart(messageBodyPart);}BodyPart messageBodyPart = new MimeBodyPart();messageBodyPart.setContent(textMessage,"text/html;charset=GBK");//gbk编码multipart.addBodyPart(messageBodyPart);msg.setContent(multipart);Transport.send(msg,msg.getAllRecipients());return true;}}

2.5、在C:\Windows\System32\drivers\etc目录hosts文件中新增一行配置本地域名



1 0
原创粉丝点击