I was trying to use Email utility class in one of my project. But I encountered with following errors. Then I broke it down to very basic code but I am still not able to send email.
Here's what I have got , service class
package com.test.email.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
@Service
public class EmailService {
@Autowired
private JavaMailSender mailSender;
public void sendSimpleEmail(String toEmail, String body, String subject) {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom("**********************************");
message.setTo(toEmail);
message.setText(body);
message.setSubject(subject);
mailSender.send(message);
System.out.println("Mail Send..........................................");
}
}
This is the Main class
import com.test.email.service.EmailService;
@SpringBootApplication
public class EmailtestApplication {
@Autowired
private EmailService emailService;
public static void main(String[] args) {
SpringApplication.run(EmailtestApplication.class, args);
System.out.println(" Spring boot application is running...................");
}
@EventListener(ApplicationReadyEvent.class)
public void triggerMail() throws MessagingException{
emailService.sendSimpleEmail("[email protected]",
"This is the Email Body with attachement....",
"This is the Email Subject");
}
}
Application Properties
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=***************************
spring.mail.password=***************************
spring.mail.properties.mail.smtp.strattls.enable=true
spring.mail.properties.mail.smtp.strattls.required=true
spring.mail.properties.mail.smtp.auth=true
Then this is the error I'm getting
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
[32m :: Spring Boot :: [39m [2m (v2.6.7)[0;39m
[2m2022-04-23 11:43:32.112[0;39m [32m INFO[0;39m [35m5372[0;39m [2m---[0;39m [2m[ main][0;39m [36mc.test.email.EmailtestApplication [0;39m [2m:[0;39m Starting EmailtestApplication using Java 17.0.2 on gorkhali with PID 5372 (F:\Spring-projects\emailtest\target\classes started by adhik in F:\Spring-projects\emailtest)
[2m2022-04-23 11:43:32.114[0;39m [32m INFO[0;39m [35m5372[0;39m [2m---[0;39m [2m[ main][0;39m [36mc.test.email.EmailtestApplication [0;39m [2m:[0;39m No active profile set, falling back to 1 default profile: "default"
[2m2022-04-23 11:43:32.709[0;39m [32m INFO[0;39m [35m5372[0;39m [2m---[0;39m [2m[ main][0;39m [36mo.s.b.w.embedded.tomcat.TomcatWebServer [0;39m [2m:[0;39m Tomcat initialized with port(s): 8080 (http)
[2m2022-04-23 11:43:32.722[0;39m [32m INFO[0;39m [35m5372[0;39m [2m---[0;39m [2m[ main][0;39m [36mo.apache.catalina.core.StandardService [0;39m [2m:[0;39m Starting service [Tomcat]
[2m2022-04-23 11:43:32.722[0;39m [32m INFO[0;39m [35m5372[0;39m [2m---[0;39m [2m[ main][0;39m [36morg.apache.catalina.core.StandardEngine [0;39m [2m:[0;39m Starting Servlet engine: [Apache Tomcat/9.0.62]
[2m2022-04-23 11:43:32.849[0;39m [32m INFO[0;39m [35m5372[0;39m [2m---[0;39m [2m[ main][0;39m [36mo.a.c.c.C.[Tomcat].[localhost].[/] [0;39m [2m:[0;39m Initializing Spring embedded WebApplicationContext
[2m2022-04-23 11:43:32.849[0;39m [32m INFO[0;39m [35m5372[0;39m [2m---[0;39m [2m[ main][0;39m [36mw.s.c.ServletWebServerApplicationContext[0;39m [2m:[0;39m Root WebApplicationContext: initialization completed in 701 ms
[2m2022-04-23 11:43:33.114[0;39m [32m INFO[0;39m [35m5372[0;39m [2m---[0;39m [2m[ main][0;39m [36mo.s.b.w.embedded.tomcat.TomcatWebServer [0;39m [2m:[0;39m Tomcat started on port(s): 8080 (http) with context path ''
[2m2022-04-23 11:43:33.121[0;39m [32m INFO[0;39m [35m5372[0;39m [2m---[0;39m [2m[ main][0;39m [36mc.kiran.test.email.EmailtestApplication [0;39m [2m:[0;39m Started EmailtestApplication in 1.263 seconds (JVM running for 1.831)
message variable is created
[2m2022-04-23 11:43:33.319[0;39m [31mERROR[0;39m [35m5372[0;39m [2m---[0;39m [2m[ main][0;39m [36mo.s.boot.SpringApplication [0;39m [2m:[0;39m Application run failed
org.springframework.mail.MailSendException: Failed messages: com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. e26-20020ac84b5a000000b002f35d11c5dfsm2040437qts.65 - gsmtp
at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:491) ~[spring-context-support-5.3.19.jar:5.3.19]
at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:323) ~[spring-context-support-5.3.19.jar:5.3.19]
at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:312) ~[spring-context-support-5.3.19.jar:5.3.19]
at com.kiran.test.email.service.EmailService.sendSimpleEmail(EmailService.java:23) ~[classes/:na]
at com.kiran.test.email.EmailtestApplication.triggerMail(EmailtestApplication.java:26) ~[classes/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:344) ~[spring-context-5.3.19.jar:5.3.19]
at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:229) ~[spring-context-5.3.19.jar:5.3.19]
at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:166) ~[spring-context-5.3.19.jar:5.3.19]
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) ~[spring-context-5.3.19.jar:5.3.19]
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) ~[spring-context-5.3.19.jar:5.3.19]
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-5.3.19.jar:5.3.19]
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:421) ~[spring-context-5.3.19.jar:5.3.19]
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:378) ~[spring-context-5.3.19.jar:5.3.19]
at org.springframework.boot.context.event.EventPublishingRunListener.ready(EventPublishingRunListener.java:114) ~[spring-boot-2.6.7.jar:2.6.7]
at org.springframework.boot.SpringApplicationRunListeners.lambda$ready$6(SpringApplicationRunListeners.java:82) ~[spring-boot-2.6.7.jar:2.6.7]
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) ~[na:na]
at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:120) ~[spring-boot-2.6.7.jar:2.6.7]
at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:114) ~[spring-boot-2.6.7.jar:2.6.7]
at org.springframework.boot.SpringApplicationRunListeners.ready(SpringApplicationRunListeners.java:82) ~[spring-boot-2.6.7.jar:2.6.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:318) ~[spring-boot-2.6.7.jar:2.6.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1312) ~[spring-boot-2.6.7.jar:2.6.7]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1301) ~[spring-boot-2.6.7.jar:2.6.7]
at com.kiran.test.email.EmailtestApplication.main(EmailtestApplication.java:20) ~[classes/:na]
CodePudding user response:
There is a typo in your properties file.
Correct properties
spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.starttls.required=true
This reminded me of a meme I saw.