English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
O Spring framework oferece muitas interfaces e classes úteis para enviar e receber e-mails.
org.springframework.mail O pacote é o pacote raiz que fornece suporte ao e-mail no framework Spring.
As interfaces e classes de suporte ao Java e-mail no spring framework são as seguintes:
Interface MailSender: É a interface raiz. Ela fornece funcionalidades básicas para enviar e-mails simples. Interface JavaMailSender: É uma subinterface de MailSender. Ele suporta mensagens MIME. Ele é principalmente usado com MimeMessageHelper classe juntamente para criar JavaMail MimeMessage , além de anexos etc. O spring framework recomenda usar MimeMessagePreparator Mecanismo para usar este interface. Classe JavaMailSenderImpl: Ela fornece uma implementação do interface JavaMailSender. Ela suporta MimeMessages do JavaMail e SimpleMailMessages do Spring. Classe SimpleMailMessage: Usado para criar e-mails simples, incluindo de, para, cópia, assunto e texto do e-mail. Interface MimeMessagePreparator: É uma interface de callback usada para preparar mensagens MIME do JavaMail. Classe MimeMessageHelper: É uma classe auxiliar usada para criar mensagens MIME. Ela suporta elementos inline, como imagens, anexos típicos de e-mail e conteúdo de texto HTML.
Usando duas classes de e-mail do Spring:
SimpleMailMessage Usado para criar mensagens. JavaMailSenderImpl Usado para enviar mensagens.
Você precisa criar os seguintes arquivos para enviar e-mails através do framework Spring.
MailMail.java applicationContext.xml Test.java Você precisa carregar os arquivos mail.jar e activation.jar para executar este exemplo.
Baixe o mail.jar e Activation.jar ou acesse o site da Oracle para baixar a versão mais recente.
1)MailMail.java
Esta é uma classe simples que define a propriedade mailSender. Durante a execução, um objeto MailSender será fornecido para essa propriedade.
No método sendMail(), estamos criando uma instância de SimpleMailMessage e armazenando as informações (por exemplo, de, para, assunto e mensagem) no objeto.
Aqui usamos o método send() da interface MailSender para enviar e-mails simples.
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) { //criando mensagem SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(from); message.setTo(to); message.setSubject(subject); message.setText(msg); //enviando mensagem mailSender.send(message); } }
2)applicationContext.xml
Neste arquivo xml, criamos um bean para a classe JavaMailSenderImpl. Precisamos definir os seguintes valores das propriedades:
Mestre Nome de usuário Senha javaMailProperties
Também usaremos a propriedade mailSender para criar um bean para a classe MailMail. Agora, configuraremos a propriedade mailSender da classe MailMail com uma instância da classe 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="[email protected]" /> <property name="password" value="sua_senha_gmail" /> <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
Esta classe obtém o bean mailMail do arquivo applicationContext.xml e chama o método sendMail da 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 remetente = "[email protected]";//escreva aqui o ID do remetente Gmail String destinatario = "[email protected]";//escreva aqui o ID do destinatário m.sendMail(sender,receiver,"hi","welcome"); System.out.println("success"); } }
Carregue o arquivo jar do spring para core e Java mail Carregue os arquivos mail.jar e activation.jar Altere as propriedades de nome de usuário e senha no arquivo applicationContext.xml e especifique seu ID de e-mail e senha do Gmail. Altere o ID de e-mail do remetente e o ID de e-mail do destinatário no arquivo Test.java. Compile e execute a classe Test
Se você tiver seu próprio site, você pode usar o servidor de e-mail. O arquivo MailMail.java e a classe Test serão os mesmos. Você só precisa alterar o ID de e-mail do remetente no arquivo Test.java. Algumas alterações precisam ser feitas no arquivo applicationContext.xml.
No arquivo applicationContext.xml, estamos usando:
mail.unitedsquaad.com como nome do host. Altere-o. [email protected] como nome de usuário. Altere-o. xxxxx como senha. Altere-a.
<?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>
Você pode usar a classe SimpleMailMessage para enviar e-mails para múltiplos destinatários. A classe SimpleMailMessage setTo(String [] destinatários)O método é usado para enviar a mensagem para múltiplos destinatários. Vamos ver um exemplo simples de código.
.... public void sendMail(String from, String[] to, String subject, String msg) { //criando mensagem SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(from); message.setTo(to);//passando array de destinatários message.setSubject(subject); message.setText(msg); //enviando mensagem mailSender.send(message); } ...
Podemos usar a interface MimeMessagePreparator para enviar mensagens MIME. Ela possui um método prepare(MimeMessage message).
Vamos ver um exemplo simples de código para enviar mensagens 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); } }
Os arquivos applicationContext.xml e Test.java são os mesmos que os fornecidos acima.
Podemos usar a classe MimeMessageHelper para enviar mensagens MIME com anexos no Spring. Recomenda-se usar MimeMessagePreparator.
Vamos ver um exemplo simples de código para enviar uma mensagem MIME com anexos (imagens).
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); // anexar o arquivo FileSystemResource file = new FileSystemResource(new File("c:");/rr.jpg"); helper.addAttachment("mybrothermage.jpg", file);//a imagem será enviada com este nome mailSender.send(message); catch(MessagingException e){e.printStackTrace();} } }
Os arquivos applicationContext.xml e Test.java são os mesmos que os fornecidos acima.