/core/src/main/java/com/ctrip/xpipe/email/DefaultEmailService.java

https://github.com/ctripcorp/x-pipe · Java · 67 lines · 51 code · 11 blank · 5 comment · 2 complexity · 70b99502209c239679e1fd18dd257f78 MD5 · raw file

  1. package com.ctrip.xpipe.email;
  2. import com.ctrip.xpipe.api.command.CommandFuture;
  3. import com.ctrip.xpipe.api.email.Email;
  4. import com.ctrip.xpipe.api.email.EmailResponse;
  5. import com.ctrip.xpipe.api.email.EmailService;
  6. import com.ctrip.xpipe.command.DefaultCommandFuture;
  7. import com.google.common.util.concurrent.MoreExecutors;
  8. import org.slf4j.Logger;
  9. import org.slf4j.LoggerFactory;
  10. import java.util.concurrent.Executor;
  11. import java.util.regex.Matcher;
  12. import java.util.regex.Pattern;
  13. /**
  14. * @author chen.zhu
  15. * <p>
  16. * Oct 10, 2017
  17. */
  18. public class DefaultEmailService implements EmailService {
  19. private final static Logger logger = LoggerFactory.getLogger(DefaultEmailService.class);
  20. @Override
  21. public void sendEmail(Email email) {
  22. logger.info("Sender: {}", email.getSender());
  23. logger.info("Receivers: {}", email.getRecipients());
  24. logger.info("CCers: {}", email.getCCers());
  25. logger.info("BCCers: {}", email.getBCCers());
  26. logger.info("Context:\n{}", email.getBodyContent());
  27. }
  28. private static final Pattern VALID_EMAIL_ADDRESS_REGEX =
  29. Pattern.compile("^[A-Z0-9._%+-]+@[A-Z0-9._%+-]+$", Pattern.CASE_INSENSITIVE);
  30. @Override
  31. public CheckEmailResponse checkEmailAddress(String address) {
  32. Matcher matcher = VALID_EMAIL_ADDRESS_REGEX.matcher(address);
  33. boolean result = matcher.find();
  34. if(result) {
  35. return new CheckEmailResponse(true);
  36. } else {
  37. return new CheckEmailResponse(false, "email format not matched");
  38. }
  39. }
  40. @Override
  41. public CommandFuture<EmailResponse> sendEmailAsync(Email email) {
  42. return sendEmailAsync(email, MoreExecutors.directExecutor());
  43. }
  44. @Override
  45. public CommandFuture<EmailResponse> sendEmailAsync(Email email, Executor executor) {
  46. return new DefaultCommandFuture<>();
  47. }
  48. @Override
  49. public boolean checkAsyncEmailResult(EmailResponse response) {
  50. return true;
  51. }
  52. @Override
  53. public int getOrder() {
  54. return LOWEST_PRECEDENCE;
  55. }
  56. }