SpringMail etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
SpringMail etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

25 Ocak 2021 Pazartesi

SpringMail Kullanımı

Giriş 
1. JavaMailSender arayüzü autowire edilir
2. e-posta içeriği hazırlanır. 

- e-posta göndermek için direkt javax.mail.internet.MimeMessage arayüzü veya
MimeMessagePreparator kullanılır.
- javax.mail.internet.MimeMessage kullanılacaksa bu arayüzü gerçekleştiren sınıf SimpleMailMessage
SimpleMailMessage sınıfını doldurmak için ya kendi verdiği setter'lar kullanılır ya da MimeMessageHelper kullanılabilir.

3. JavaMailSender sınıfının send() metodu kullanılarak e-posta gönderilir.

Maven
Şu satırı dahil ederiz
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

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);

15 Mayıs 2019 Çarşamba

SpringMail MimeMessagePreparator Arayüzü

Giriş
Şu satırı dahil ederiz.
import org.springframework.mail.MailException;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.mail.javamail.MimeMessagePreparator;
Kullanım
Şöyle yaparız.
JavaMailSender mailSender = ...;

MimeMessagePreparator preparator = ...;

mailSender.send(preparator);
prepare metodu - MimeMessage
Bu arayüz Functional olduğu için lambda ile yapılabilir. Bu metodun aslında bir özelliği yok. Asıl işi yapan MimeMessageHelper sınıfı.

Örnek
Şöyle yaparız.
MimeMessagePreparator preparator = mimeMessage -> {
  MimeMessageHelper message = new MimeMessageHelper(mimeMessage);
  String emailAddr = sample.getEmailAddrs();
  message.setTo(emailAddr);
  
  message.setFrom("noreply@nomadlogicapp.com","noreply@nomadlogicapp.com");
  message.setSubject("Test Email From Juju Console");
  StringWriter out = new StringWriter();
  ...
  message.setText(str,true);
};

14 Aralık 2018 Cuma

SpringMail MimeMessageHelper Sınıfı

Giriş
Şu satırı dahil ederiz. Bu sınıf constructor içinde kendisine parametre olarak geçilen javax.mail.internet.MimeMessage nesnesini doldurmak için kolaylıklar sağlar.
import org.springframework.mail.javamail.MimeMessageHelper;
Kullanım
Örnek
Şöyle yaparız
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message);
//Populate message with help of helper
javaMailSender.send(message);
constructor - MimeMessage
Örnek
Şöyle yaparız.
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message);
helper.setFrom(systemEmail);
helper.setTo(mailBacklog.getToAddress());
if(mailBacklog.getSubject() != null) {
  helper.setSubject(mailBacklog.getSubject());
}
helper.setText(mailBacklog.getMessage());
javaMailSender.send(message);
setFrom metodu
Şöyle yaparız.
MimeMessageHelper message = new MimeMessageHelper(mimeMessage);
String emailAddr = ...;
message.setTo(emailAddr);

message.setFrom("noreply@nomadlogicapp.com","noreply@nomadlogicapp.com");
message.setSubject("Test Email From Juju Console");

message.setText(str,true);
setText metodu
Birinci parametre text, ikinci parametre html metnidir.

Örnek
Şöyle yaparız
import org.springframework.mail.MailException;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.mail.javamail.MimeMessagePreparator;
import org.springframework.stereotype.Service;

@Service
public class EmailService {

  private String emailFromAddress = ...;

  private String emailReplyToAddress = ...;

  @Autowired
  private JavaMailSender emailSender;

  public void sendEmail(String recipient, String subject, EmailContentDto content)
throws MailException {
    MimeMessagePreparator messagePreparator = mimeMessage -> {
      MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true);
      messageHelper.setFrom(emailFromAddress);
      messageHelper.setReplyTo(emailReplyToAddress);
      messageHelper.setTo(recipient);
      messageHelper.setSubject(subject);
      messageHelper.setText(content.getText(), content.getHtml());
    };
    emailSender.send(messagePreparator);
  }
}