Spring provides support for sending Emails using JavaMailSender. SpringBoot makes it even easier by providing a starter for emailing support.
As we need Emailing feature in both Admin and ShoppingCart modules, we will implement the emailing functionality in jcart-core module.
Add the following dependency to jcart-core/pom.xml
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
Add the following properties in jcart-core/src/main/resources/application.properties
################### JavaMail Configuration ########################## ## If you want to use GMail ## spring.mail.host=smtp.gmail.com spring.mail.port=465 spring.mail.protocol=smtps spring.mail.username=sivalabs.blogspot@gmail.com spring.mail.password=secret spring.mail.properties.mail.transport.protocol=smtps spring.mail.properties.mail.smtps.auth=true spring.mail.properties.mail.smtps.starttls.enable=true spring.mail.properties.mail.smtps.timeout=2000 ## If you want to use YahooMail ## #spring.mail.host=smtp.mail.yahoo.com #spring.mail.port=465 #spring.mail.username=sivaprasadreddy_k@yahoo.co.in #spring.mail.password=secret #spring.mail.properties.mail.transport.protocol=smtps #spring.mail.properties.mail.smtp.auth=true #spring.mail.properties.mail.smtp.starttls.enable=true support.email=sivalabs.blogspot@gmail.com
Let us create EmailService class as follows:
@Component
public class EmailService
{
@Autowired
JavaMailSender javaMailSender;
@Value("${support.email}")
String supportEmail;
public void sendEmail(String to, String subject, String content)
{
try
{
// Prepare message using a Spring helper
final MimeMessage mimeMessage = this.javaMailSender.createMimeMessage();
final MimeMessageHelper message = new MimeMessageHelper(mimeMessage, "UTF-8");
message.setSubject(subject);
message.setFrom(supportEmail);
message.setTo(to);
message.setText(content, true /* isHtml */);
javaMailSender.send(message.getMimeMessage());
}
catch (MailException | MessagingException e)
{
logger.error(e);
throw new JCartException("Unable to send email");
}
}
}
Write a simple Test to check whether it is working or not.
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = JCartCoreApplication.class)
public class JCartCoreApplicationTest
{
@Autowired EmailService emailService;
@Test
public void testSendEmail()
{
emailService.sendEmail("admin@gmail.com", "JCart - Test Mail", "This is a test email from JCart");
}
}
No comments:
Post a Comment