Spring Java Mail

Spring框架提供了許多用于發(fā)送和接收郵件的有用接口和類。

org.springframework.mail 軟件包是在Spring框架中提供郵件支持的根軟件包。

Spring Java Mail API

spring框架中Java郵件支持的接口和類如下:

帶有javamail api層次結(jié)構(gòu)的Spring MailSender接口: 它是根接口。它提供了發(fā)送簡單郵件的基本功能。 JavaMailSender接口: 它是MailSender的子接口。它支持MIME消息。它主要與 MimeMessageHelper 類一起使用,以創(chuàng)建JavaMail MimeMessage ,以及附件等。spring框架推薦使用 MimeMessagePreparator 機制來使用此接口。 JavaMailSenderImpl類: 它提供JavaMailSender接口的實現(xiàn)。它支持JavaMail MimeMessages和Spring SimpleMailMessages。 SimpleMailMessage類: 用于創(chuàng)建簡單的郵件,包括從,到,抄送,主題和文本郵件。 MimeMessagePreparator接口: 它是用于準備JavaMail MIME消息的回調(diào)接口。 MimeMessageHelper類: 它是用于創(chuàng)建MIME消息的幫助器類。它支持內(nèi)聯(lián)元素,例如圖像,典型的郵件附件和HTML文本內(nèi)容。

通過Gmail服務(wù)器在Spring中發(fā)送郵件的示例

使用兩個Spring郵件類:

SimpleMailMessage 用于創(chuàng)建消息。 JavaMailSenderImpl 用于發(fā)送消息。

您需要創(chuàng)建以下文件以通過Spring框架發(fā)送電子郵件。

MailMail.java applicationContext.xml Test.java 您需要加載mail.jar和activation.jar文件才能運行此示例。

下載mail.jar和Activation.jar 或訪問Oracle網(wǎng)站以下載最新版本。


1)MailMail.java

這是定義mailSender屬性的簡單類。在運行時將向該屬性提供MailSender對象。

在sendMail()方法中,我們正在創(chuàng)建SimpleMailMessage的實例,并將信息(例如,從,到,主題和消息)存儲到該對象中。

這里使用MailSender接口的send()方法發(fā)送簡單郵件。

package com.nhooo;
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;
 
public class MailMail{
  private MailSender mailSender;
 
  public void setMailSender(MailSender mailSender) {
    this.mailSender = mailSender;
  }
 
  public void sendMail(String from, String to, String subject, String msg) {
        //creating message
    SimpleMailMessage message = new SimpleMailMessage();
    message.setFrom(from);
    message.setTo(to);
    message.setSubject(subject);
    message.setText(msg);
        //sending message
    mailSender.send(message); 
  }
}

2)applicationContext.xml

在此xml文件中,我們?yōu)镴avaMailSenderImpl類創(chuàng)建了一個bean。我們需要定義以下屬性的值:

主機 用戶名 密碼 javaMailProperties

我們還將使用mailSender屬性為MailMail類創(chuàng)建bean?,F(xiàn)在,將在MailMail類的mailSender屬性中設(shè)置JavaMailSenderImpl類的實例。

<?xml version="1.0" encoding="UTF-8"?>
<beans
  xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:p="http://www.springframework.org/schema/p"
  xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
  <property name="host" value="smtp.gmail.com" />
  <property name="username" value="yourgmailid@gmail.com" />
  <property name="password" value="yourgmailpassword" />
  <property name="javaMailProperties">
     <props>
              <prop key="mail.smtp.auth">true</prop>
              <prop key="mail.smtp.socketFactory.port">465</prop>
              <prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
              <prop key="mail.smtp.port">465</prop>
        </props>
  </property>
</bean>
<bean id="mailMail" class="com.nhooo.MailMail">
  <property name="mailSender" ref="mailSender" />
</bean>
</beans>

3)Test.java

該類從applicationContext.xml文件獲取mailMail的bean,并調(diào)用MailMail類的sendMail方法。

package com.nhooo;
import org.springframework.beans.factory.*;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.*;
public class Test { 
public static void main(String[] args) {
  
Resource r=new ClassPathResource("applicationContext.xml");
BeanFactory b=new XmlBeanFactory(r);
MailMail m=(MailMail)b.getBean("mailMail");
String sender="sendergmailid@gmail.com";//write here sender gmail id
String receiver="receiveremailid@gmail.com";//write here receiver id
m.sendMail(sender,receiver,"hi","welcome");
  
System.out.println("success");
}
}

如何運行此示例

為core和Java郵件加載spring jar文件 加載mail.jar和activation.jar 在applicationContext.xml文件中更改用戶名和密碼屬性,并指定您的gmail ID和密碼。 在Test.java文件中更改發(fā)件人gmail ID和Receivermail ID。 編譯并運行Test類


由主機提供商提供的服務(wù)器在Spring中發(fā)送郵件的示例

如果您有自己的站點,則可以使用郵件服務(wù)器。 MailMail.java和Test類將相同。您只需要在Test.java文件中更改發(fā)件人電子郵件ID。在applicationContext.xml文件中需要進行一些更改。

在applicationContext.xml文件中,我們正在使用:

mail.unitedsquaad.com作為主機名。更改它。 a@unitedsquaad.com作為用戶名。更改它。 xxxxx作為密碼。更改它。

<?xml version="1.0" encoding="UTF-8"?>
<beans
  xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:p="http://www.springframework.org/schema/p"
  xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
  <property name="host" value="mail.unitedsquaad.com" />
  <property name="username" value="a@unitedsquaad.com" />
  <property name="password" value="xxxxx" />
 
  <property name="javaMailProperties">
     <props>
              <prop key="mail.smtp.auth">true</prop>
           </props>
  </property>
</bean>
<bean id="mailMail" class="MailMail">
  <property name="mailSender" ref="mailSender" />
</bean>
 
</beans>

將郵件發(fā)送到多個收件人

您可以借助SimpleMailMessage類將郵件發(fā)送到多個收件人。 SimpleMailMessage類的 setTo(String []接收者)方法用于將消息發(fā)送到多個接收者。讓我們看一下簡單的代碼。

      ....
  public void sendMail(String from, String[] to, String subject, String msg) {
        //creating message
    SimpleMailMessage message = new SimpleMailMessage();
    message.setFrom(from);
    message.setTo(to);//passing array of recipients
    message.setSubject(subject);
    message.setText(msg);
        //sending message
    mailSender.send(message); 
  }
     ...

Spring MimeMessagePreparator示例

我們可以借助MimeMessagePreparator接口發(fā)送mime消息。它有一個方法prepare(MimeMessage message)。

讓我們看一下發(fā)送mime消息的簡單代碼。

  import javax.mail.Message;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessagePreparator;
public class MailMail{
  private JavaMailSender mailSender;
 
  public void setMailSender(JavaMailSender mailSender) {
    this.mailSender = mailSender;
  }
 
  public void sendMail(final String from, final String to,final String subject,final String msg) {
      
    MimeMessagePreparator messagePreparator = new MimeMessagePreparator() {
          
                public void prepare(MimeMessage mimeMessage) throws Exception {
                   mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress(to));
                   mimeMessage.setFrom(new InternetAddress(from));
                   mimeMessage.setSubject(subject);
                   mimeMessage.setText(msg);
                }
        };
        mailSender.send(messagePreparator);
  }
}

applicationContext.xml和Test.java文件與上面給出的相同。


通過Spring MimeMessageHelper示例發(fā)送附件

我們可以在MimeMessageHelper類的幫助下在Spring發(fā)送帶有附件的mime消息。推薦使用MimeMessagePreparator。

讓我們看一下發(fā)送帶有附件(圖像)的mime消息的簡單代碼。

import java.io.File;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
public class MailMail{
  private JavaMailSender mailSender;
 
  public void setMailSender(JavaMailSender mailSender) {
    this.mailSender = mailSender;
  }
 
  public void sendMail(final String from, final String to,final String subject,final String msg) {
    try{
    MimeMessage message = mailSender.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(message, true);
    helper.setFrom(from);
    helper.setTo(to);
    helper.setSubject(subject);
    helper.setText(msg);
    // attach the file
    FileSystemResource file = new FileSystemResource(new File("c:/rr.jpg"));
    helper.addAttachment("mybrothermage.jpg", file);//image will be sent by this name
    mailSender.send(message);
    }catch(MessagingException e){e.printStackTrace();}
  }
}

applicationContext.xml和Test.java文件與上面給出的相同。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清