2011-10-18 14 views

答えて

5

あなたは簡単に電子メールを送信するためにSpringのメール抽象化レイヤを使用することができます。 mypackage.MySendMailServiceで、あなたのapplicationContext.xmlを次に

<!-- Mail sender bean --> 
<bean id="mailSender" 
     class="org.springframework.mail.javamail.JavaMailSenderImpl">   
<property name="host" value="my.smtp.host" /> 
<property name="username" value="my_username" /> 
<property name="password" value="my_password" /> 
</bean> 

<!-- Simple mail template --> 
<bean id="basicEmailMessage" 
     class="org.springframework.mail.SimpleMailMessage"> 
    <property name="from"> 
     <value>whateverSenderAddress</value> 
    </property> 
</bean> 

<!-- Your service with sender and template injected --> 
<bean id="mySendMailService" 
     class="mypackage.MySendMailService"> 
    <property name="mailSender"> 
    <ref bean="mailSender" /> 
    </property> 
    <property name="emailTemplate"> 
     <ref bean="basicEmailMessage" /> 
    </property> 
</bean> 

で次のBeanを定義します。

public class SendMailService { 
    private MailSender mailSender; 
    private SimpleMailMessage emailTemplate; 
    public void sendEmail(String to, String from, String subject, String body) 
         throws MailException { 
     SimpleMailMessage message = new SimpleMailMessage(this.emailTemplate); 
     message.setTo(to); 
     message.setFrom(from); 
     message.setSubject(subject); 
     message.setText(body); 
     mailSender.send(message); 
    } 

    public void setMailSender(MailSender mailSender) { 
     this.mailSender = mailSender; 
    } 
    public void setEmailTemplate(SimpleMailMessage emailTemplate) { 
     this.emailTemplate = emailTemplate; 
    } 
} 
+0

ありがとうそれは私が探しているものです – Khalifa

1

Spring MVCは、Webフレームワークであり、それは、電子メールとは何の関係もありません、ありがとうございました。 Springフレームワークのもう一つの部分はメールの送信をサポートしています。 chapter 24 of the ref guideをご覧ください。

3

私はApache Velocityを電子メールのテンプレートシステムとして使用しています。 "VelocityEngine"のインスタンスをSpring Beanとして定義し、それをコントローラに注入することができます。しかし、よりクリーンなソリューションは、メール送信コードをサービスに入れて、あなたのサービスをあなたのコントローラに注入することです。

@Autowired private VelocityEngine velocityEngine; 
    @Autowired private JavaMailSender mailSender; 

     MimeMessagePreparator preparator = new MimeMessagePreparator() { 
        @Override 
        public void prepare(MimeMessage mimeMessage) throws Exception { 
         MimeMessageHelper message = new MimeMessageHelper(mimeMessage); 
         message.setTo("[email protected]"); 
         message.setFrom("[email protected]"); 
         message.setSubject("You got mail!"); 

           Map<String, Object> model = new HashMap<String, Object>(); 
         model.put("param1", new Date()); 

         String text = 
          VelocityEngineUtils.mergeTemplateIntoString(
            velocityEngine, 
            "com/myapp/mailtemplates/email.vm", 
            model 
          ); 

         mimeMessage.setText(text,"utf-8", "html"); 
         mimeMessage.setHeader("Content-Type", "text/html; charset=utf-8"); 
        } 
       }; 

mailSender.send(preparator); 

HashMapを使用して、ベロシティテンプレート内で使用できるパラメータを渡すことができます。 次に、 "JavaMailSender"を使用して電子メールを送信できます。このJavaMailSenderは、Spring Beanとして定義することもできます。

あなたはMailSenderのとこれに似velocityEngine Beanを定義することができます。

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> 
     <property name="host" value="smtp.mail.com" /> 
     <property name="username" value="sender" /> 
     <property name="password" value="password" /> 
     <property name="javaMailProperties"> 
      <props> 
       <!-- Use SMTP-AUTH to authenticate to SMTP server --> 
       <prop key="mail.smtp.auth">true</prop> 
       <!-- Use TLS to encrypt communication with SMTP server --> 
       <!-- <prop key="mail.smtp.starttls.enable">true</prop> --> 
      </props> 
     </property> 
    </bean> 

    <!-- Apache Velocity Email Template Engine --> 
    <bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean"> 
     <property name="velocityProperties"> 
      <value> 
       resource.loader=class 
       class.resource.loader.class=org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader 
      </value> 
     </property> 
    </bean> 
関連する問題