English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Il framework Spring fornisce molte interfacce e classi utili per inviare e ricevere email.
org.springframework.mail Il pacchetto è il pacchetto radice che fornisce supporto per la posta nel framework Spring.
Le interfacce e le classi supportate da Java Mail in Spring framework sono le seguenti:
Interfaccia MailSender: È l'interfaccia radice. Fornisce funzionalità di base per inviare email semplici. Interfaccia JavaMailSender: È un sotto-interfaccia di MailSender. Supporta messaggi MIME. È principalmente utilizzata con MimeMessageHelper insieme con la classe Classe MimeMessage , nonché allegati, ecc. Spring framework consiglia di utilizzare MimeMessagePreparator Mecanismi per utilizzare questa interfaccia. Classe JavaMailSenderImpl: Fornisce un'implementazione dell'interfaccia JavaMailSender. Supporta messaggi MIME JavaMail e SimpleMailMessages di Spring. Classe SimpleMailMessage: Utilizzata per creare email semplici, inclusi mittente, destinatario, copiati, oggetto e testo dell'email. Interfaccia MimeMessagePreparator: È un'interfaccia di callback per preparare messaggi MIME JavaMail. Classe MimeMessageHelper: È una classe di aiuto per creare messaggi MIME. Supporta elementi in linea, come immagini, allegati tipici di posta e contenuto testuale HTML.
Usa due classi di posta Spring:
SimpleMailMessage Per creare messaggi. JavaMailSenderImpl Per inviare messaggi.
Devi creare i seguenti file per inviare email tramite il framework Spring.
MailMail.java applicationContext.xml Test.java Devi caricare i file mail.jar e activation.jar per eseguire questo esempio.
Scarica mail.jar e Activation.jar o visita il sito web di Oracle per scaricare l'ultima versione.
1)MailMail.java
Questa è una semplice classe che definisce l'attributo mailSender. Durante l'esecuzione, fornirà l'oggetto MailSender a questo attributo.
Nel metodo sendMail(), stiamo creando un'istanza di SimpleMailMessage e memorizzando le informazioni (ad esempio, mittente, destinatario, oggetto e messaggio) in questo oggetto.
Qui utilizziamo il metodo send() dell'interfaccia MailSender per inviare una email semplice.
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) { //creazione messaggio SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(from); message.setTo(to); message.setSubject(subject); message.setText(msg); //invio messaggio mailSender.send(message); } }
2)applicationContext.xml
In questo file xml, abbiamo creato un bean per la classe JavaMailSenderImpl. Dobbiamo definire i valori delle seguenti proprietà:
Host Nome utente Password javaMailProperties
Utilizzeremo anche l'attributo mailSender per creare un bean per la classe MailMail. Ora, imposteremo l'istanza della classe JavaMailSenderImpl come valore dell'attributo mailSender della classe MailMail.
<?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 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
Questa classe ottiene il bean mailMail dal file applicationContext.xml e chiama il metodo sendMail della classe MailMail.
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]";//Scrivi qui l'id del mittente gmail String receiver="[email protected]";//Scrivi qui l'id del ricevente m.sendMail(sender,receiver,"hi","welcome"); System.out.println("success"); } }
Carica il file jar di spring per core e Java mail Carica i file mail.jar e activation.jar Modifica le proprietà nome utente e password nell'applicationContext.xml e specifica il tuo ID email e la tua password. Modifica l'ID email dell'inviatore e l'ID email del destinatario nel file Test.java. Compila ed esegui la classe Test
Se hai il tuo sito, puoi utilizzare il server di posta. Le classi MailMail.java e Test saranno le stesse. Devi solo modificare l'ID email dell'inviatore nel file Test.java. Dovrai fare alcune modifiche nell'applicationContext.xml.
Nel file applicationContext.xml, stiamo utilizzando:
mail.unitedsquaad.com come nome dell'host. Modificalo. [email protected] come nome utente. Modificalo. xxxxx come password. Modificalo.
<?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> </props> </property> </bean> <bean id="mailMail" class="MailMail"> <property name="mailSender" ref="mailSender" /> </bean> </beans>
Puoi inviare email a più destinatari utilizzando la classe SimpleMailMessage. La classe SimpleMailMessage permette di setTo(String[] riceventi)Il metodo serve a inviare il messaggio a più destinatari. Vediamo un esempio di codice semplice.
.... public void sendMail(String from, String[] to, String subject, String msg) { //creazione messaggio SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(from); message.setTo(to); //passando un array di destinatari message.setSubject(subject); message.setText(msg); //invio messaggio mailSender.send(message); } ...
Possiamo inviare messaggi MIME utilizzando l'interfaccia MimeMessagePreparator. Ha un metodo prepare(MimeMessage message).
Mostriamo un esempio di codice semplice per inviare un messaggio 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 文件与上面给出的相同。
Possiamo inviare un messaggio MIME con allegato con l'aiuto di MimeMessageHelper della Spring. Si consiglia l'uso di MimeMessagePreparator.
Vediamo un esempio di codice semplice per inviare un messaggio MIME con allegato (immagine).
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 文件与上面给出的相同。