GmailEmailService.java
package com.ctrlbuy.webshop.service.impl;
import com.ctrlbuy.webshop.entity.Order;
import com.ctrlbuy.webshop.security.entity.User;
import com.ctrlbuy.webshop.service.EmailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Primary;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
@Service
@Primary // ✅ LÄGG TILL DENNA RAD
public class GmailEmailService implements EmailService {
@Autowired
private JavaMailSender mailSender;
// Base URL för alla länkar
private static final String BASE_URL = "http://localhost:8080";
@Override
public void sendVerificationEmail(User user, String token) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(user.getEmail());
message.setSubject("🔐 Verifiera ditt CTRLBUY-konto");
message.setText("Hej " + user.getUsername() + "!\n\nKlicka här för att verifiera ditt konto: " + BASE_URL + "/verify?token=" + token + "\n\nMvh,\nCTRLBUY Team");
mailSender.send(message);
}
@Override
public void sendVerificationEmail(String email, String token, String firstName) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(email);
message.setSubject("🔐 Verifiera ditt CTRLBUY-konto");
message.setText("Hej " + firstName + "!\n\nKlicka här för att verifiera: " + BASE_URL + "/verify?token=" + token + "\n\nMvh,\nCTRLBUY Team");
mailSender.send(message);
}
@Override
public boolean sendVerificationEmail(String email, String token) {
try {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(email);
message.setSubject("🔐 Verifiera ditt CTRLBUY-konto");
message.setText("Klicka här för att verifiera: " + BASE_URL + "/verify?token=" + token + "\n\nMvh,\nCTRLBUY Team");
mailSender.send(message);
return true;
} catch (Exception e) {
return false;
}
}
@Override
public void sendWelcomeEmail(User user) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(user.getEmail());
message.setSubject("🎉 Välkommen till CTRLBUY!");
message.setText("Hej " + user.getUsername() + "!\n\nVälkommen till CTRLBUY - din nya favoritbutik för premium teknik!\n\nMvh,\nCTRLBUY Team");
mailSender.send(message);
}
@Override
public void sendPasswordResetEmail(User user, String resetToken) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(user.getEmail());
message.setSubject("🔑 Återställ lösenord - CTRLBUY");
message.setText("Hej " + user.getUsername() + "!\n\nKlicka här för att återställa ditt lösenord: " + BASE_URL + "/reset-password?token=" + resetToken + "\n\nMvh,\nCTRLBUY Team");
mailSender.send(message);
}
@Override
public void sendPasswordResetEmail(String email, String resetToken, String firstName) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(email);
message.setSubject("🔑 Återställ lösenord - CTRLBUY");
message.setText("Hej " + firstName + "!\n\nKlicka här för att återställa: " + BASE_URL + "/reset-password?token=" + resetToken + "\n\nMvh,\nCTRLBUY Team");
mailSender.send(message);
}
@Override
public boolean sendPasswordResetEmail(String email, String resetToken) {
try {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(email);
message.setSubject("🔑 Återställ lösenord - CTRLBUY");
message.setText("Klicka här för att återställa: " + BASE_URL + "/reset-password?token=" + resetToken + "\n\nMvh,\nCTRLBUY Team");
mailSender.send(message);
return true;
} catch (Exception e) {
return false;
}
}
@Override
public void sendOrderConfirmationEmail(User user, String orderNumber) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(user.getEmail());
message.setSubject("✅ Orderbekräftelse - " + orderNumber);
message.setText("Hej " + user.getUsername() + "!\n\nTack för din beställning!\nOrdernummer: " + orderNumber + "\n\nMvh,\nCTRLBUY Team");
mailSender.send(message);
}
@Override
public void sendOrderConfirmation(Order order, String email) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(email);
message.setSubject("✅ Orderbekräftelse - Order #" + order.getId());
message.setText("Tack för din beställning!\n\n📋 Orderdetaljer:\nOrdernummer: " + order.getId() +
"\nTotalt: " + order.getTotalAmount() + " kr\nStatus: " + order.getStatus() +
"\n\nVi behandlar din order snarast möjligt!\n\nMvh,\nCTRLBUY Team");
mailSender.send(message);
}
@Override
public boolean sendOrderConfirmation(String email, Order order) {
try {
sendOrderConfirmation(order, email);
return true;
} catch (Exception e) {
return false;
}
}
@Override
public void sendAccountDeletionNotification(User deletedUser, String adminUsername, String reason) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(deletedUser.getEmail());
message.setSubject("❌ Konto borttaget - CTRLBUY");
message.setText("Hej " + deletedUser.getUsername() + ",\n\nDitt konto har tagits bort av " + adminUsername +
".\nAnledning: " + reason + "\n\nMvh,\nCTRLBUY Team");
mailSender.send(message);
}
@Override
public void sendAccountDeactivationNotification(User deactivatedUser, String adminUsername, String reason) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(deactivatedUser.getEmail());
message.setSubject("⏸️ Konto inaktiverat - CTRLBUY");
message.setText("Hej " + deactivatedUser.getUsername() + ",\n\nDitt konto har inaktiverats av " + adminUsername +
".\nAnledning: " + reason + "\n\nMvh,\nCTRLBUY Team");
mailSender.send(message);
}
@Override
public void sendAccountReactivationNotification(User reactivatedUser, String adminUsername) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(reactivatedUser.getEmail());
message.setSubject("✅ Konto återaktiverat - CTRLBUY");
message.setText("Hej " + reactivatedUser.getUsername() + ",\n\nDitt konto har återaktiverats av " + adminUsername +
".\n\nVälkommen tillbaka!\n\nMvh,\nCTRLBUY Team");
mailSender.send(message);
}
@Override
public void sendShippingNotification(Order order, String customerEmail) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(customerEmail);
message.setSubject("📦 Order skickad - Order #" + order.getId());
message.setText("Din order har skickats!\n\n📋 Orderdetaljer:\nOrdernummer: " + order.getId() +
"\nTotalt: " + order.getTotalAmount() + " kr\n\nDu kan förvänta dig leverans inom några dagar.\n\nMvh,\nCTRLBUY Team");
mailSender.send(message);
}
@Override
public void sendDeliveryConfirmation(Order order, String customerEmail) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(customerEmail);
message.setSubject("🎉 Order levererad - Order #" + order.getId());
message.setText("Din order har levererats!\n\n📋 Orderdetaljer:\nOrdernummer: " + order.getId() +
"\nTotalt: " + order.getTotalAmount() + " kr\n\nTack för att du handlar hos oss!\n\nMvh,\nCTRLBUY Team");
mailSender.send(message);
}
@Override
public void sendOrderCancellation(Order order, String customerEmail) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(customerEmail);
message.setSubject("❌ Order avbruten - Order #" + order.getId());
message.setText("Din order har tyvärr avbrutits.\n\n📋 Orderdetaljer:\nOrdernummer: " + order.getId() +
"\nBelopp: " + order.getTotalAmount() + " kr\n\n💰 Återbetalning sker automatiskt inom 3-5 arbetsdagar.\n\nMvh,\nCTRLBUY Team");
mailSender.send(message);
}
@Override
public boolean testEmailConnection() {
try {
return mailSender != null;
} catch (Exception e) {
return false;
}
}
@Override
public boolean isConfigured() {
return mailSender != null;
}
}