Enviar Mails Con Spring

De Dos Ideas.
Saltar a: navegación, buscar


Entre las muchas cosas que nos provee Spring Framework también esta una librería para el envió de mail. Esta se encuentra en el paquete org.springframework.mail

Para el envió de mail usaremos la interface MailSender y la clase SimpleMailMessage.

MailSender se encargara de hacer el send del mensaje con la ayuda del servidor que le hayamos configurado.

SimpleMailMessage contendra todo lo que tenga que ver con el mail (from, to , texto, subject..)

Ejemplo

Lo primero que haremos es crear un archivo de configuración para el mail.

Archivo application-mail.xml

<beans>
   <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
       <property name="host" value="smtp.dosideas.com"/>
   </bean>
   <bean id="templateMessage" class="org.springframework.mail.SimpleMailMessage">
       <property name="from" value="zim@gmail.com"/>
       <property name="subject" value="Dos Ideas: Un mail de prueba"/>
   </bean>
   <bean id="dao.EnvioMailDAO" class="com.dosideas.dao.sender.MailDaoImpl">
       <property name="mailSender" ref="mailSender"/>
       <property name="templateMessage" ref="templateMessage"/>
   </bean>
</beans>

En este archivo de configuración lo que hacemos es:

  1. Setear al mailSender el host ("smtp.dosideas.com"),
  2. Setear al templateMessage el from y el subject. Esto es opcional.
  3. Agregar al dao el mailSender y templateMessage como atributos para que cuando usemos el dao estos vengan cargados con los valores que le configuramos.

La clase MailDaoImpl

Ahora lo único que nos queda es usar nuestro Dao.

public class MailDaoImpl implements MailDao {
    private MailSender mailSender;
    private SimpleMailMessage templateMessage;
    //getters y setters...
    public void enviarMail(String textoMensaje,String destinatario) {
        //creamos un SimpleMailMessage apartir del que configuramos.
        SimpleMailMessage msg = new !SimpleMailMessage(this.templateMessage);
        msg.setText(textoMensaje );
        msg.setTo(destinatario);
        this.mailSender.send(msg);
    }
}

Ver también