28 Nisan 2020 Salı

SpringMail JavaMailSender Arayüzü

Giriş
Açıklaması şöyle
The JavaMailSender is a class provided by Spring Boot Starter Mail and configured using a properties file.

Spring  JavaMail ile birleştirmek için şu sınıfları sunuyor.
1.MailSender Interface
2.JavaMailSender Interface
3.JavaMailSenderImpl Class
4.SimpleMailMessage Class
5.MimeMessagePreparator Interface
6.MimeMessageHelper Class

Bu arayüz org.springframework.mail.MailSender arayüzünden kalıtır. Açıklaması şöyle.
It is sub-interface of MailSender. It supports MIME messages and is used with MimeMessageHelper class. It is used for creating JavaMail MimeMessage. MimeMessagePreparator mechanism is recommended for the use of this interface.
Bu sınıfın host,username,password,javaMailProperties alanları doldurulur daha sonra send() metodu çağrılır.

Örnek
Bazı kodlarda şöyle yapılıyor ancak MailSender arayüzünden kalıtan başka arayüz olmadığı için direkt JavaMailSender arayüzü de kullanılabilir.
public class FooImpl implements Foo {
  private MailSender mailSender;
  ...
}
Şöyle yaparız.
@Service
public class EmailService {

  @Autowired
  private JavaMailSender mailSender;
  ...
}
createMimeMessage metodu
Şöyle yaparız.
MimeMessage message = mailSender.createMimeMessage();
send metodu - MimeMessage
javax.mail.internet.MimeMessage nesnesi gönderir.

Örnek - Sadece Metin
Şöyle yaparız.  Spring javax.mail.internet.MimeMessage sınıfından kalıtan org.springframework.mail.SimpleMailMessage sınıfını sağlar. Bu sınıf ile eklenti gönderilemez.
SimpleMailMessage mailMessage = new SimpleMailMessage();
mailMessage.setFrom("some mail");
mailMessage.setSubject(title);
mailMessage.setText(body);
String to = ...;
mailMessage.setTo(to);
mailSender.send(mailMessage);
Örnek
Daha karmaşık (örneğin eklenti içeren) mesajlar göndermek için MimeMessageHelper kullanılabilir. Şöyle yaparız.
MimeMessage message = sender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message);

helper.setText("Test body");
helper.setSubject("Test subject");
helper.setTo("mail@gmail.com");
sender.send(message);
send metodu - MimeMessagePreparator
org.springframework.mail.javamail.MimeMessagePreparator callback olarak kullanılan bir arayüz.

Örnek
Şöyle yaparız.
MimeMessagePreparator messagePreparator = ...;
mailSender.send(messagePreparator);

Hiç yorum yok:

Yorum Gönder