Java Web Application 自架构 六 邮件服务器与资源存储

本文介绍如何在Web应用程序中配置邮件服务器,包括设置JavaMailSender实例、配置邮件参数及发送测试邮件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     这篇里,做一些简单轻松的配置,邮件服务器的连接与资源的存储。

       第一篇的架构中就有提到,通常在开发Web程序时,要连接的外部辅助系统不仅仅只是数据库,还有很多其他的系统需要连接,故而将业务层下面一层叫做Pin, 来做与外部系统的数据交互。这里就列举一些:比如LDAP 服务器,即轻量级目录访问协议的服务器,简单而言是一种优化了读操作的数据库;用来连接其他Web或非Web程序的Web-Service ;邮件服务器;资源管理服务器等等。

      很明显,我们的架构是:业务逻辑(Business)层将业务数据模型(Entity)传递给Pin层,Pin层将Entity解析为外部系统能够接受的形式后交由外部系统使用或帮助本系统代管;反方向地,Pin层将外部系统的数据读到并封装成本系统的Entity 后交给Business层做相应处理。

LDAP和Web-Service将会放在后面的两篇。这里,配置两个简单的:邮件服务器,资源管理服务器


       1,邮件服务器。用法很容易想到,我们都见过很多的邮件服务器的Web Application,因为

      这里笔者就不再废话连篇,上代码:

在@Configuration的ApplicationContext.java文件中ApplicationContext 类体中加入:

 

Java代码 复制代码  收藏代码
  1. @Bean  
  2. public JavaMailSender mailSender() {   
  3.         Properties parameters = WebConfiguration.getSysParams();   
  4.     JavaMailSenderImpl jms = new JavaMailSenderImpl();   
  5.     jms.setHost((String) parameters.get("mail.smtp.host"));   
  6.     jms.setUsername((String) parameters.get("mail.smtp.username"));   
  7.     jms.setPassword((String) parameters.get("mail.smtp.password"));   
  8.     jms.setDefaultEncoding((String) parameters.get("mail.smtp.encoding"));   
  9.     jms.setPort(Integer.parseInt((String) parameters.get("mail.smtp.port")));   
  10.     jms.setProtocol((String) parameters.get("mail.transport.protocol"));   
  11.     jms.setJavaMailProperties(parameters);   
  12.     return jms;   
  13. }  
@Bean
public JavaMailSender mailSender() {
        Properties parameters = WebConfiguration.getSysParams();
	JavaMailSenderImpl jms = new JavaMailSenderImpl();
	jms.setHost((String) parameters.get("mail.smtp.host"));
	jms.setUsername((String) parameters.get("mail.smtp.username"));
	jms.setPassword((String) parameters.get("mail.smtp.password"));
	jms.setDefaultEncoding((String) parameters.get("mail.smtp.encoding"));
	jms.setPort(Integer.parseInt((String) parameters.get("mail.smtp.port")));
	jms.setProtocol((String) parameters.get("mail.transport.protocol"));
	jms.setJavaMailProperties(parameters);
	return jms;
}

 

 

      JavaMailSender类在org.springframework.context-support-x.x.x.RELEASE.jar包中,不要忘记导此包入WEB-INF/lib下

      当然,还要有JavaMail API的类库,在Spring文档http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/mail.html中写的是

mail.jar和activation.jar

      由于activation.jar即JAF已经成为标准的Java组件而被包含在1.6版本以上的JDK中,所以1.6版本以上的JDK不再需要activation.jar,然后新版的JavaMail API应该是6个jars.分别为:mail.jar mailapi.jardsn.jap imap.jar pop3.jarsmtp.jar

 

Parameters 自然还在sysParams.properties文件中去写。

Plain代码 复制代码  收藏代码
  1. mail.store.protocol=pop3   
  2. mail.transport.protocol=smtp   
  3. mail.smtp.encoding=utf-8  
  4. mail.smtp.host=127.0.0.1  
  5. mail.smtp.port=25  
  6. mail.smtp.username=root   
  7. mail.smtp.password=root   
  8. mail.smtp.socketFactory.port=465  
  9. mail.smtp.auth=true   
  10. mail.smtp.timeout=10000  
  11. mail.smtp.starttls.enable=true   
  12. mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory  
mail.store.protocol=pop3
mail.transport.protocol=smtp
mail.smtp.encoding=utf-8
mail.smtp.host=127.0.0.1
mail.smtp.port=25
mail.smtp.username=root
mail.smtp.password=root
mail.smtp.socketFactory.port=465
mail.smtp.auth=true
mail.smtp.timeout=10000
mail.smtp.starttls.enable=true
mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory

 

      而后,在pin层新建接口IMailPin.java, 在pin.imap下新建该接口实现类SpringMailPin.java

      代码如下:

Java代码 复制代码  收藏代码
  1. package com.xxxxx.webmodel.pin.impl;   
  2.   
  3. import java.io.Serializable;   
  4.   
  5. import javax.annotation.Resource;   
  6. import javax.mail.Message.RecipientType;   
  7. import javax.mail.MessagingException;   
  8. import javax.mail.internet.InternetAddress;   
  9. import javax.mail.internet.MimeMessage;   
  10.   
  11. import org.springframework.mail.javamail.JavaMailSender;   
  12. import org.springframework.mail.javamail.JavaMailSenderImpl;   
  13. import org.springframework.stereotype.Component;   
  14.   
  15. import com.xxxxx.webmodel.pin.IMailPin;   
  16.   
  17. @Component  
  18. public class SpringMailPin implements IMailPin,Serializable {   
  19.        
  20.     private static final long serialVersionUID = -1313340434948728744L;   
  21.     private JavaMailSender mailSender;   
  22.   
  23.     public JavaMailSender getMailSender() {   
  24.         return mailSender;   
  25.     }   
  26.     @Resource  
  27.     public void setMailSender(JavaMailSender mailSender) {   
  28.         this.mailSender = mailSender;   
  29.     }   
  30.     @Override  
  31.     public void testMail() {   
  32.         JavaMailSenderImpl jms = (JavaMailSenderImpl)this.mailSender;   
  33.         System.out.println(jms.getHost());   
  34.         MimeMessage mimeMsg =jms.createMimeMessage();   
  35.         try {   
  36.                    mimeMsg.setSubject("Test James");   
  37.             mimeMsg.setFrom(new InternetAddress("xxxxxx@tom.com"));   
  38.             mimeMsg.setRecipient(RecipientType.TO, new Inter-netAddress("xxxxx@live.com"));   
  39.             mimeMsg.setRecipient(RecipientType.CC, new Inter-netAddress("xxxxxx@yahoo.com"));   
  40.             mimeMsg.setRecipient(RecipientType.BCC, new Inter-netAddress("xxxxx@mail.com"));   
  41.             mimeMsg.setText("Hello");   
  42. //          MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMsg, true, "utf-8");   
  43. //          mimeMessageHelper.setFrom("hitmit1314@tom.com");   
  44. //          mimeMessageHelper.setTo("palmtale@live.com");   
  45. //             
  46. //          mimeMessageHelper.setCc("palmtale@yahoo.com");   
  47. //          mimeMessageHelper.setBcc("palmtale@mail.com");   
  48. //          mimeMessageHelper.setSubject("Test mail");   
  49. //          mimeMessageHelper.setText("Hi, Hello", true);   
  50.             mailSender.send(mimeMsg);   
  51.         } catch (MessagingException e) {   
  52.             e.printStackTrace();   
  53.         }   
  54.            
  55.     }   
  56. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值