package com.getit.todoapp.service;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
@Service
public class SendGridEmailService implements EmailService {
protected static Logger logger = Logger.getLogger("service");
private final RestTemplate restTemplate = new RestTemplate();
@Value("${sendgrid.api.user}")
private String sendgridApiUser;
@Value("${sendgrid.api.key}")
private String sendgridApiKey;
@Override
public StatusResponse send(Message message) {
try {
MultiValueMap<String, Object> vars = new LinkedMultiValueMap<String, Object>();
vars.add(SendGridParameter.API_USER, sendgridApiUser);
vars.add(SendGridParameter.API_KEY, sendgridApiKey);
vars.add(SendGridParameter.SENDER_NAME, message.getSenderName());
vars.add(SendGridParameter.SENDER_EMAIL, message.getSenderEmail());
vars.add(SendGridParameter.BLIND_COPY_EMAIL, message.getCcEmail());
vars.add(SendGridParameter.SUBJECT, message.getSubject());
vars.add(SendGridParameter.TEXT, "");
vars.add(SendGridParameter.HTML, message.getBody());
vars.add(SendGridParameter.RECEIVER_EMAIL,
message.getReceiverEmail());
vars.add(SendGridParameter.RECEIVER_NAME, message.getReceiverName());
restTemplate.postForLocation(SendGridParameter.URL, vars);
} catch (Exception ex) {
logger.error(ex);
return new StatusResponse(false, "An error has occurred!");
}
return new StatusResponse(true, "Message sent");
}
}