zoukankan      html  css  js  c++  java
  • Spring发送带附件邮件

    下面是一个例子使用Spring通过Gmail SMTP服务器来发送电子邮件附件。为了包含附件的电子邮件,你必须使用 Spring的JavaMailSender及MimeMessage 来代替 MailSender&SimpleMailMessage。
    2.Spring的邮件发件人

    必须使用 JavaMailSender 代替 MailSender 发送附件,并用 MimeMessageHelper 附加的资源。在这个例子中,它会得到 “c:\log.txt” 从文件系统(FileSystemResource)作为电子邮件附件的文本文件。

    除了文件系统,您还可以从URL路径(UrlResource对象),类路径(使用ClassPathResource),InputStream(InputStreamResource)的任何资源......请参考 Spring 的 AbstractResource 类的实现。

    File : MailMail.java

    package com.yiibai.common;
    
    import javax.mail.MessagingException;
    import javax.mail.internet.MimeMessage;
    
    import org.springframework.core.io.FileSystemResource;
    import org.springframework.mail.MailParseException;
    import org.springframework.mail.SimpleMailMessage;
    import org.springframework.mail.javamail.JavaMailSender;
    import org.springframework.mail.javamail.MimeMessageHelper;
    
    public class MailMail
    {
    	private JavaMailSender mailSender;
    	private SimpleMailMessage simpleMailMessage;
    	
    	public void setSimpleMailMessage(SimpleMailMessage simpleMailMessage) {
    		this.simpleMailMessage = simpleMailMessage;
    	}
    
    	public void setMailSender(JavaMailSender mailSender) {
    		this.mailSender = mailSender;
    	}
    	
    	public void sendMail(String dear, String content) {
    	
    	   MimeMessage message = mailSender.createMimeMessage();
    		
    	   try{
    		MimeMessageHelper helper = new MimeMessageHelper(message, true);
    			
    		helper.setFrom(simpleMailMessage.getFrom());
    		helper.setTo(simpleMailMessage.getTo());
    		helper.setSubject(simpleMailMessage.getSubject());
    		helper.setText(String.format(
    			simpleMailMessage.getText(), dear, content));
    			
    		FileSystemResource file = new FileSystemResource("C:\log.txt");
    		helper.addAttachment(file.getFilename(), file);
    
    	     }catch (MessagingException e) {
    		throw new MailParseException(e);
    	     }
    	     mailSender.send(message);
             }
    }

    3. Bean配置文件

    配置 mailSender bean,电子邮件模板,并指定Gmail的SMTP服务器电子邮件的详细信息。

    File : Spring-Mail.xml

    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
    
    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
    	<property name="host" value="smtp.gmail.com" />
    	<property name="port" value="587" />
    	<property name="username" value="yiibai.com@gmail.com" />
    	<property name="password" value="password" />
    		
    	<property name="javaMailProperties">
    		<props>
               	<prop key="mail.smtp.auth">true</prop>
               	<prop key="mail.smtp.starttls.enable">true</prop>
           	</props>
    	</property>
    </bean>
    	
    <bean id="mailMail" class="com.yiibai.common.MailMail">
    	<property name="mailSender" ref="mailSender" />
    	<property name="simpleMailMessage" ref="customeMailMessage" />
    </bean>
    	
    <bean id="customeMailMessage"
    	class="org.springframework.mail.SimpleMailMessage">
    
    	<property name="from" value="from@no-spam.com" />
    	<property name="to" value="to@no-spam.com" />
    	<property name="subject" value="Testing Subject" />
    	<property name="text">
    	<value>
    		<![CDATA[
    			Dear %s,
    			Mail Content : %s
    		]]>
    	</value>
        </property>
    </bean>
    
    </beans>

    4. 运行它

    package com.yiibai.common;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class App 
    {
        public static void main( String[] args )
        {
        	ApplicationContext context = 
                new ClassPathXmlApplicationContext("applicationContext.xml");
        	 
        	MailMail mm = (MailMail) context.getBean("mailMail");
            mm.sendMail("Yiibai", "This is text content");
            
        }
    }

    输出结果

    Dear Yiibai,
     Mail Content : This is text content
     Attachment : log.txt
     
  • 相关阅读:
    实例讲解虚拟机3种网络模式(桥接、nat、Host-only)
    期刊搜索问题——SCI、EI、IEEE和中文期刊
    面向对象分析与设计(C++)课堂笔记
    windows与VMware ubuntu虚拟机实现文件共享
    GDI+在绘制验证码中的使用
    【转】.net中快捷键的使用
    MD5加密“破解”在.NET平台实现最基本的理解
    UE4 Persona 骨架网格物体动画
    从零开始做3D地图编辑器 基于QT与OGRE
    TBB(Intel Threading Building Blocks)学习笔记
  • 原文地址:https://www.cnblogs.com/soundcode/p/6367594.html
Copyright © 2011-2022 走看看