English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Spring Java Mail

Die Spring-Framework bietet viele nützliche Schnittstellen und Klassen zum Senden und Empfangen von E-Mails.

org.springframework.mail Das Softwarepaket ist der Root-Paket, das in der Spring-Framework E-Mail-Unterstützung bereitstellt.

Spring Java Mail API

Die in der Spring-Framework unterstützten Schnittstellen und Klassen für Java-E-Mail sind wie folgt:

MailSender-Interface: Es ist das Root-Interface. Es bietet grundlegende Funktionen zum Senden einfacher E-Mails. JavaMailSender-Interface: Es ist ein Unterinterface von MailSender. Es unterstützt MIME-Nachrichten. Es arbeitet hauptsächlich mit MimeMessageHelper Klassen zusammen zu verwenden, um JavaMail zu erstellen MimeMessage , sowie Anhängen usw. Der Spring-Framework empfiehlt die Verwendung von MimeMessagePreparator Mechanismus, um dieses Interface zu verwenden. JavaMailSenderImpl-Klasse: Sie stellt die Implementierung des JavaMailSender-Interfaces bereit. Es unterstützt JavaMail-MimeMessages und Spring SimpleMailMessages. SimpleMailMessage-Klasse: zur Erstellung einfacher E-Mails, einschließlich Absender, Empfänger, Kopie, Betreff und Text der E-Mail. MimeMessagePreparator-Schnittstelle: Es ist ein Callback-Interface zur Vorbereitung von JavaMail MIME-Nachrichten. MimeMessageHelper-Klasse: Es ist eine Hilfsklasse zur Erstellung von MIME-Nachrichten. Sie unterstützt inline-Elemente, wie z.B. Bilder, typische E-Mail-Anhänge und HTML-Textinhalte.

Beispiel zur Sendung von E-Mails über den Gmail-Server in Spring

Verwenden Sie zwei Spring-Mail-Klassen:

SimpleMailMessage Zum Erstellen von Nachrichten. JavaMailSenderImpl Zum Senden von Nachrichten.

Sie müssen die folgenden Dateien erstellen, um E-Mails über das Spring-Framework zu senden.

MailMail.java applicationContext.xml Test.java Sie müssen die Dateien mail.jar und activation.jar laden, um dieses Beispiel auszuführen.

Laden Sie mail.jar und Activation.jar oder besuchen Sie die Oracle-Website, um die neueste Version herunterzuladen.


1)MailMail.java

Dies ist eine einfache Klasse zur Definition der mailSender-Eigenschaft. Wird bei der Laufzeit ein MailSender-Objekt diesem Attribut bereitgestellt.

Im sendMail()-Methoden werden wir Instanzen der Klasse SimpleMailMessage erstellen und die Informationen (z.B. von, an, Betreff und Nachricht) in dieses Objekt speichern.

Hier wird die send()-Methode des MailSender-Interfaces verwendet, um einfache E-Mails zu senden.

package com.w3codebox;
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) {
        //Nachricht erstellen
    SimpleMailMessage message = new SimpleMailMessage();
    message.setFrom(from);
    message.setTo(to);
    message.setSubject(subject);
    message.setText(msg);
        //Nachricht senden
    mailSender.send(message); 
  }
}

2)applicationContext.xml

In dieser xml-Datei erstellen wir ein Bean für die Klasse JavaMailSenderImpl. Wir müssen die Werte der folgenden Eigenschaften definieren:

Host Benutzername Passwort javaMailProperties

Wir werden auch die mailSender-Eigenschaft verwenden, um ein Bean für die MailMail-Klasse zu erstellen. Derzeit wird eine Instanz der Klasse JavaMailSenderImpl im mailSender-Attribut der MailMail-Klasse eingerichtet.

<?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="[email protected]" />
  <property name="password" value="yourgmailpassword" />
  <property name="javaMailProperties">
     <props>
              <prop key="mail.smtp.auth">true</prop>/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.w3codebox.MailMail">
  <property name="mailSender" ref="mailSender" />
</bean>
</beans>

3)Test.java

Diese Klasse liest den Bean "mailMail" aus der Datei "applicationContext.xml" aus und ruft die Methode "sendMail" der Klasse "MailMail" auf.

package com.w3codebox;
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="[email protected]";//Schreiben Sie hier den Absender-Gmail-ID
String receiver="[email protected]";//Schreiben Sie hier den Empfänger-ID
m.sendMail(sender,receiver,"hi","willkommen");
  
System.out.println("success");
}
}

Wie führt man dieses Beispiel aus

Laden Sie die Spring-JAR-Dateien für core und Java Mail Laden Sie mail.jar und activation.jar Ändern Sie die Benutzername- und Passwort-Attribute im applicationContext.xml und geben Sie Ihre Gmail-ID und Ihr Passwort an. Ändern Sie den Absender-Gmail-ID und den Empfänger-Gmail-ID im Datei Test.java. Kompilieren und die Test-Klasse ausführen


Beispiel für die Sendung von E-Mails über den von Ihrem Hosting-Provider bereitgestellten Server in Spring

Wenn Sie Ihre eigene Website haben, können Sie den E-Mail-Server verwenden. MailMail.java und die Test-Klasse sind gleich. Sie müssen nur die Absender-E-Mail-ID im Datei Test.java ändern. Es müssen einige Änderungen im applicationContext.xml vorgenommen werden.

In der Datei applicationContext.xml verwenden wir:

mail.unitedsquaad.com als Hostname. Ändern Sie es. [email protected] als Benutzername. Ändern Sie es. xxxxx als Passwort. Ändern Sie es.

<?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="[email protected]"> />
  <property name="password" value="xxxxx"> />
 
  <property name="javaMailProperties">
     <props>
              <prop key="mail.smtp.auth">true</prop>/prop>
           </props>
  </property>
</bean>
<bean id="mailMail" class="MailMail">
  <property name="mailSender" ref="mailSender" />
</bean>
 
</beans>

MIME-Nachrichten an mehrere Empfänger senden

Sie können MIME-Nachrichten an mehrere Empfänger senden, indem Sie die SimpleMailMessage-Klasse verwenden. Die SimpleMailMessage-Klasse setTo(String []Empfänger)Diese Methode wird verwendet, um Nachrichten an mehrere Empfänger zu senden. Lassen Sie uns einen einfachen Code betrachten.

      ....
  public void sendMail(String from, String[] to, String subject, String msg) {
        //Nachricht erstellen
    SimpleMailMessage message = new SimpleMailMessage();
    message.setFrom(from);
    message.setTo(to);//Übergabe eines Arrays von Empfängern
    message.setSubject(subject);
    message.setText(msg);
        //Nachricht senden
    mailSender.send(message); 
  }
     ...

Spring MimeMessagePreparator Beispiel

Wir können MIME-Nachrichten mit dem MIMEMessagePreparator-Interface senden. Es hat eine Methode prepare(MimeMessage message).

Lassen Sie uns einen einfachen Code zum Senden eines MIME-Nachrichtens betrachten.

  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);
  }
}

Die applicationContext.xml- und Test.java-Dateien sind wie oben angegeben.


Senden eines Anhängens mit dem Beispiel von Spring MimeMessageHelper

Mit Hilfe der Klasse MimeMessageHelper können wir in Spring mime-Nachrichten mit Anhängen senden. Es wird empfohlen, MimeMessagePreparator zu verwenden.

Lassen Sie uns ein einfaches Beispiel für die Übermittlung einer mime-Nachricht mit Anhängen (Bilder) betrachten.

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);
    // Datei anhängen
    FileSystemResource file = new FileSystemResource(new File("c:",/rr.jpg"));
    helper.addAttachment("mybrothermage.jpg", file);//Das Bild wird unter diesem Namen gesendet
    mailSender.send(message);
    catch(MessagingException e){e.printStackTrace();}
  }
}

Die applicationContext.xml- und Test.java-Dateien sind wie oben angegeben.