JCart: Email Service SetUp
We are going to implement Admin User Forgot Password functionality where we need to send the Password Reset link to User email address. So let us look at how to configure Email server and send emails.
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
## 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");
}
}
Related content
- JCart : Iteration-8
- JCart : Manage Customers
- JCart : Manage Orders
- JCart : Iteration-7
- JCart : Billing and Delivery Page