Skip to content

Commit f89655c

Browse files
committed
mail sender added
1 parent 021a06e commit f89655c

4 files changed

Lines changed: 71 additions & 3 deletions

File tree

backend/src/main/java/com/TalentWorld/backend/service/impl/AuthService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public class AuthService {
3131
private final AuthenticationManager authenticationManager;
3232
private final JwtService jwtService;
3333
private final RateLimitingService rateLimitService;
34+
private final EmailService emailService;
3435

3536
public AuthResponse signup(SignupRequest request) {
3637
log.info("Signup request received: email={}", request.email());
@@ -44,10 +45,10 @@ public AuthResponse signup(SignupRequest request) {
4445

4546
User user = SignupRequest.toUser(request);
4647
user.setPassword(passwordEncoder.encode(user.getPassword()));
48+
emailService.sendMail(request.email(),"Create Account","Your Account has been successfully created");
4749
user = userRepository.save(user);
4850

4951
log.info("User created successfully: id={}, email={}", user.getId(), request.email());
50-
5152
String token = jwtService.generateJwtToken(user);
5253
return AuthResponse.from(user, "Bearer " + token);
5354
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.TalentWorld.backend.service.impl;
2+
3+
import com.TalentWorld.backend.excepiton.BusinessException;
4+
import lombok.RequiredArgsConstructor;
5+
import lombok.extern.slf4j.Slf4j;
6+
import org.springframework.beans.factory.annotation.Value;
7+
import org.springframework.http.HttpStatus;
8+
import org.springframework.mail.SimpleMailMessage;
9+
import org.springframework.mail.javamail.JavaMailSender;
10+
import org.springframework.stereotype.Service;
11+
12+
@Service
13+
@Slf4j
14+
@RequiredArgsConstructor
15+
public class EmailService {
16+
17+
18+
private final JavaMailSender mailSender;
19+
@Value("${spring.mail.username}")
20+
private String sender;
21+
22+
public String sendMail(String to, String subject, String content) {
23+
try {
24+
25+
log.info("Sending email to {}", to);
26+
27+
SimpleMailMessage message = new SimpleMailMessage();
28+
message.setFrom(sender);
29+
message.setTo(to);
30+
message.setSubject(subject);
31+
message.setText(content);
32+
mailSender.send(message);
33+
34+
return "success";
35+
} catch (Exception e) {
36+
log.error("Failed to send email to {}: {}", to, e.getMessage());
37+
throw new BusinessException(e.getMessage(), "Error_While_Sending_Email", HttpStatus.BAD_REQUEST);
38+
}
39+
}
40+
41+
}

backend/src/main/resources/application.yaml

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,37 @@ spring:
2525
min-idle: 2
2626
max-wait: 1000ms
2727

28+
29+
2830
cache:
2931
type: redis
3032
redis:
3133
time-to-live: 1800000 # 30 dakika (milisaniye)
3234
cache-null-values: false
3335
key-prefix: "talentworld:"
3436
use-key-prefix: true
35-
37+
38+
39+
#mail
40+
mail:
41+
host: smtp.gmail.com
42+
port: 587
43+
username: ${YOUR_EMAIL_ADDRESS}
44+
password: ${YOUR_APP_PASSWORD}
45+
protocol: smtp
46+
properties:
47+
mail:
48+
smtp:
49+
auth: true
50+
starttls:
51+
enable: true
52+
required: true
53+
connectiontimeout: 5000
54+
timeout: 5000
55+
writetimeout: 5000
56+
57+
58+
3659

3760
logging:
3861
level:

backend/src/test/java/com/TalentWorld/backend/service/AuthServiceTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.TalentWorld.backend.excepiton.BusinessException;
99
import com.TalentWorld.backend.repository.UserRepository;
1010
import com.TalentWorld.backend.service.impl.AuthService;
11+
import com.TalentWorld.backend.service.impl.EmailService;
1112
import com.TalentWorld.backend.service.impl.JwtService;
1213
import com.TalentWorld.backend.service.impl.RateLimitingService;
1314
import org.junit.jupiter.api.AfterEach;
@@ -38,6 +39,7 @@ public class AuthServiceTest {
3839
private AuthenticationManager authenticationManager;
3940
private JwtService jwtService;
4041
private RateLimitingService rateLimitingService;
42+
private EmailService emailService;
4143

4244
@BeforeEach
4345
public void setup() {
@@ -46,7 +48,8 @@ public void setup() {
4648
jwtService = Mockito.mock(JwtService.class);
4749
authenticationManager = Mockito.mock(AuthenticationManager.class);
4850
rateLimitingService= Mockito.mock(RateLimitingService.class);
49-
authService = new AuthService(userRepository, passwordEncoder, authenticationManager, jwtService,rateLimitingService);
51+
emailService = Mockito.mock(EmailService.class);
52+
authService = new AuthService(userRepository, passwordEncoder, authenticationManager, jwtService,rateLimitingService,emailService);
5053
}
5154

5255
@AfterEach

0 commit comments

Comments
 (0)