English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
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.
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"); } }
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
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>
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); } ...
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.
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.