Spring Boot Email Uygulama Örneği

Spring Boot
Spring Dersleri

Spring Boot Dersleri‘ne devam ediyoruz.

Spring Boot kullanarak bir email uygulaması yapacağız. Bu uygulama bu zamana kadar gördüğümüz konuların bir özeti olacak nitelikte olacaktır. Spring Boot uygulamamız maven projesi olacaktır. Bağımlılıklarımıza bakalım.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.burakkutbay</groupId>
    <artifactId>mailexample</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>mailexample</name>
    <description>Email project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

Spring Boot uygulamamızda mail gönderimi için gerekli olan bağımlılığımız,

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

bağımlılığıdır.

Mail gönderme işlemini gerçekleştirecek olan controller classımızı oluşturalım.

@Controller
public class MailController {

    @Autowired
    private JavaMailSender mailSender;

    public String sendMail() {
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage);

        try {
            messageHelper.setTo("emailadress");
            messageHelper.setText("içerik:)");
            messageHelper.setSubject("Konu");
        } catch (MessagingException e) {
            e.printStackTrace();
            return "Error...";
        }
        mailSender.send(mimeMessage);
        return "Mail Sent!";
    }
}

Controller classımızda JavaMailSender kütüphanemiz mailimizi gönderecek olan kütühanemizdir. MimeMessage ve MimeMessageHelper mailimizin içeriğini oluşturmada yardımcı olacak kütüphanedir. MimeMessageHelper’in setTo , setText ve setSubject değerlerini kullanarak mail içeriğimizi giriyoruz.

mailSender.send diyerek gönderme işlemini sağlıyoruz.

Mail göndermek için gerekli sunucu ve port ayarlarını ise application.properties dosyasından ayarlamaktayız.

spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=emailadress
spring.mail.password=password
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.connectiontimeout=5000
spring.mail.properties.mail.smtp.timeout=5000
spring.mail.properties.mail.smtp.writetimeout=5000

Bu ayarlara bakacak olursak;

  • host: Mail serverin adresi
  • port: Serverin mail portuı
  • username: gönderme hizmetini kullanacağız email
  • password: parolanız
  • starttls: şifreleme işlemli için gereken parametre
  • timeout parametreleri ise belirlenen süreden fazla sürer ise disconnect işlemi olması için gereken süre ayarıdır.

Programımızı çalıştıracak olan ana classımızı oluşturalım.

@SpringBootApplication
public class MailexampleApplication implements CommandLineRunner {

    @Autowired
    private MailController mailController;

    public static void main(String[] args) {
        SpringApplication.run(MailexampleApplication.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        mailController.sendMail();
    }
}

Programı çalıştırdığımızda mail işleminin gerçekleşmesi için CommandLineRunner implementasyonu kullandık. Implement ettiğimiz run metodunun içerisinde program çalıştığı zaman çalışacak işlemleri yazabiliyoruz. Mail gönderme işleminin programı çalıştırdığımız anda işlemesi için Run motdunun içerisinde çalıştırarak mail gönderme işlemini yazabiliyoruz.


Projenin Kaynak Kodlarını Github Üzerinden Görünlüte
 

Önceki Ders: application.properties Dosyası Nedir ve Özellikleri Spring Boot Dersleri Sonraki Ders: Spring Boot Actuator Nedir? Kullanımı

 

Leave a Reply

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Burak KUTBAY 2010 - 2019
%d blogcu bunu beğendi: