`
zwm
  • 浏览: 272963 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

Spring mail

阅读更多

[整合网络资源] 现在开始,用Spring发一封带有附件与网页的电子邮件:
首先加载Spring框架(略);
完善我们的applicationContext.xml文件,全文如下:

********************************************************************************************
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
 <bean id="mailSender"
  class="org.springframework.mail.javamail.JavaMailSenderImpl">
  <property name="host">
   <value>smtp.163.com</value>
  </property>
  <property name="javaMailProperties">
   <props>
    <prop key="mail.smtp.auth">true</prop>
   </props>
  </property>
  <property name="username">
   <value>51server</value>
  </property>
  <property name="password">
   <value>密码</value>
  </property>
 </bean>
 <!-- 简单的message -->
 <bean id="mailMessage"
  class="org.springframework.mail.SimpleMailMessage">
  <property name="to">
   <value>51server@163.com</value>
  </property>
  <property name="from">
   <value>51server@163.com</value>
  </property>
  <property name="subject"><!-- Email 标题 -->
   <value>我爱亲爱的她</value>
  </property>
 </bean>
 <!-- 测试发送的类 -->
 <bean id="testMailSender" class="com.yourcompany.spring.mail.TestSenderMail">
  <property name="mailMessage">
   <ref bean="mailMessage" />
  </property>
  <property name="mailSender">
   <ref bean="mailSender" />
  </property>
 </bean>
</beans>

******************************************************************

接下来,建立一个SpringIOC管理的bean[TestSenderMail.java]

package com.yourcompany.spring.mail;

import org.springframework.mail.MailException;
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;

public class TestSenderMail {
 private MailSender mailSender;
   private SimpleMailMessage mailMessage;
  
   public TestSenderMail() {
    
   }
  
   public SimpleMailMessage getMailMessage() {
     return mailMessage;
   }
   public void setMailMessage(SimpleMailMessage mailMessage) {
     this.mailMessage = mailMessage;
   }
   public MailSender getMailSender() {
     return mailSender;
   }
   public void setMailSender(MailSender mailSender) {
     this.mailSender = mailSender;
   }
  
   public void sendMail() {
     SimpleMailMessage message = new SimpleMailMessage(mailMessage);
     //设置email内容,
     message.setText("测试Spring 发送Email.");    
     try {
       mailSender.send(message);
     } catch (MailException e) {
       e.printStackTrace();
     }
   }

}

 

**************************************

最后测试类

package com.yourcompany.spring.mail;

import junit.framework.TestCase;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test extends TestCase {
 public void test0(){
  ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
  TestSenderMail ts=(TestSenderMail)context.getBean("testMailSender");
  ts.sendMail();
 }
}

 

下面提供一个与该文章主题吻合的程序,发送一封带有附件与网页的邮件;

package com.yourcompany.spring.mail;

import java.io.File;
import java.util.Properties;

import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;

import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;

public class TestAttachedFile {
 public static void main(String[] args) throws Exception {
  JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();

  // 设定 Mail Server
  senderImpl.setHost("smtp.163.com");

  // SMTP验证时,需要用户名和密码
  senderImpl.setUsername("51server");
  senderImpl.setPassword("密码 ");
  // 不设这个是不能用用户名密码通过验证发的
  Properties prop = new Properties();
  prop.setProperty("mail.smtp.auth", "true");
  senderImpl.setJavaMailProperties(prop);
  // 建立邮件讯息
  MimeMessage mailMessage = senderImpl.createMimeMessage();
  MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,
    true, "GBK");
  // 设定收件人、寄件人、主题与内文
  messageHelper.setTo("51server@163.com");
  messageHelper.setFrom("51server@163.com");
  messageHelper.setSubject("技术之旅(zh):SpringMail+AttachFile.toU");
  messageHelper.setText("<html><head></head><body><h1>你的春天到了吗?"
    + "</h1></body></html>", true);
  // 发附件,这里附件可以多个,只要再NEW一个FILE,再ADD一次,即可
  File file = new File("e:/we.jpg");
  messageHelper.addAttachment(MimeUtility.encodeWord(file.getName()),
    file);
  // 传送邮件
  senderImpl.send(mailMessage);
 }

}

分享到:
评论
5 楼 bxxyzj 2009-02-11  
在网页在打开是同样的问题
4 楼 bxxyzj 2009-02-11  
JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();

  // 设定 Mail Server
  senderImpl.setHost("mail.eastcom-sw.com");

  // SMTP验证时,需要用户名和密码
  senderImpl.setUsername("aaa");
  senderImpl.setPassword("bbb");
  // 不设这个是不能用用户名密码通过验证发的
  Properties prop = new Properties();
  prop.setProperty("mail.smtp.host", "true");
  senderImpl.setJavaMailProperties(prop);
  // 建立邮件讯息
  MimeMessage mailMessage = senderImpl.createMimeMessage();
  MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,
    true, "UTF-8");
  // 设定收件人、寄件人、主题与内文
  messageHelper.setTo("zhoujia@eastcom-sw.com");
  messageHelper.setFrom("zhoujia@eastcom-sw.com");
  messageHelper.setSubject("故障信息报告");
  messageHelper.setText("<html><head></head><body><h1>消息接收,请您查阅附件"
    + "</h1></body></html>", true);
  // 发附件   File files = new File(path+"\\"+"信息报送"+"_"+date+".xls");
  System.out.println("name="+files.getName());

  messageHelper.addAttachment(MimeUtility.encodeWord(files.getName()),
    files);
  // 传送邮件
  senderImpl.send(mailMessage);
3 楼 bxxyzj 2009-02-11  
没有解决啊,找了一天的原因 。 急得很啊。。。   
2 楼 zwm 2009-02-10  
收件人为空,主题为空。----暂时不能解释,是否与FOXMAIL自身有关,尝试使用一下WEB 客户端登录,如网易
内容一堆乱码。-----考虑一下,TOMCAT字符集过滤,设置编码。


继续讨论。
1 楼 bxxyzj 2009-02-10  
下面那个javamail发送的例子,为什么MAIN方法测试是通过,但TOMACT启动后,调用该方法,确有一堆问题,在foxmail中收到的邮件 收件人为空,主题为空,内容一堆乱码,附件也看不到

相关推荐

Global site tag (gtag.js) - Google Analytics