
pom.xml
4.0.0 org.blog.test email-by-gmail-project 0.1.0 org.springframework.boot spring-boot-starter-parent 1.3.1.RELEASE org.springframework.boot spring-boot-starter-web org.projectlombok lombok 1.16.6 ch.qos.logback logback-core 1.1.3 ch.qos.logback logback-classic ch.qos.logback logback-access org.springframework spring-context-support 1.8
application.properties
============================================ # Email Info ============================================ mail.host=smtp.gmail.com mail.port=587 mail.username=test_account@gmail.com mail.password=test_password
mail.password value is the app password of google 2-step verification
Email.java
package org.blog.test.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Email {
private String sender;
private String recipient;
private String subject;
private String content;
}
EmailService
package org.blog.test.email.service;
import javax.mail.MessagingException;
import org.blog.test.model.Email;
public interface EmailService {
void send(Email email) throws MessagingException;
}
EmailServiceImpl.java
package org.blog.test.email.service.impl;
import java.util.Date;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.blog.test.email.service.EmailService;
import org.blog.test.model.Email;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
@Service
public class EmailServiceImpl implements EmailService {
@Autowired
private JavaMailSender javaMailSender;
@Override
public void send(Email email) throws MessagingException {
MimeMessage message = javaMailSender.createMimeMessage();
message.setSubject(email.getSubject());
message.setSender(new InternetAddress(email.getSender()));
message.setRecipient(RecipientType.TO, new InternetAddress(email.getRecipient()));
message.setText(email.getContent());
message.setSentDate(new Date());
javaMailSender.send(message);
}
}
TestApplication.java
package org.blog.test;
import java.util.Properties;
import org.blog.test.email.service.EmailService;
import org.blog.test.model.Email;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
@SpringBootApplication
public class TestApplication implements CommandLineRunner {
@Value(value = "${mail.host}")
private String javaMailHost;
@Value(value = "${mail.port}")
private int javaMailPort;
@Value(value = "${mail.username}")
private String javaMailUserName;
@Value(value = "${mail.password}")
private String javaMailPassword;
@Autowired
private EmailService emailService;
public static void main(String[] args) {
SpringApplication.run(TestApplication.class);
}
@Bean
public JavaMailSender javaMailSender() {
Properties mailSmtpStarttlsEnable = new Properties();
mailSmtpStarttlsEnable.setProperty("mail.smtp.starttls.enable", "true");
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
javaMailSender.setHost(javaMailHost);
javaMailSender.setPort(javaMailPort);
javaMailSender.setUsername(javaMailUserName);
javaMailSender.setPassword(javaMailPassword);
javaMailSender.setJavaMailProperties(mailSmtpStarttlsEnable);
return javaMailSender;
}
@Override
public void run(String... arg0) throws Exception {
Email email = new Email("dont_reply", "test_recipient@naver.com", "test email", "this is the test");
emailService.send(email);
}
}
Execution Result
댓글 없음 :
댓글 쓰기