org.springframework.mail.javamail.JavaMailSenderImpl

Here are the examples of the java api org.springframework.mail.javamail.JavaMailSenderImpl taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

123 Examples 7

19 View Source File : MailSenderPropertiesConfiguration.java
License : Apache License 2.0
Project Creator : yuanmabiji

@Bean
@ConditionalOnMissingBean
public JavaMailSenderImpl mailSender() {
    JavaMailSenderImpl sender = new JavaMailSenderImpl();
    applyProperties(sender);
    return sender;
}

19 View Source File : MailSenderJndiConfiguration.java
License : Apache License 2.0
Project Creator : yuanmabiji

@Bean
public JavaMailSenderImpl mailSender(Session session) {
    JavaMailSenderImpl sender = new JavaMailSenderImpl();
    sender.setDefaultEncoding(this.properties.getDefaultEncoding().name());
    sender.setSession(session);
    return sender;
}

19 View Source File : MailHealthIndicatorTests.java
License : Apache License 2.0
Project Creator : yuanmabiji

/**
 * Tests for {@link MailHealthIndicator}.
 *
 * @author Johannes Edmeier
 * @author Stephane Nicoll
 */
public clreplaced MailHealthIndicatorTests {

    private JavaMailSenderImpl mailSender;

    private MailHealthIndicator indicator;

    @Before
    public void setup() {
        Session session = Session.getDefaultInstance(new Properties());
        session.addProvider(new Provider(Type.TRANSPORT, "success", SuccessTransport.clreplaced.getName(), "Test", "1.0.0"));
        this.mailSender = mock(JavaMailSenderImpl.clreplaced);
        given(this.mailSender.getHost()).willReturn("smtp.acme.org");
        given(this.mailSender.getPort()).willReturn(25);
        given(this.mailSender.getSession()).willReturn(session);
        this.indicator = new MailHealthIndicator(this.mailSender);
    }

    @Test
    public void smtpIsUp() {
        given(this.mailSender.getProtocol()).willReturn("success");
        Health health = this.indicator.health();
        replacedertThat(health.getStatus()).isEqualTo(Status.UP);
        replacedertThat(health.getDetails().get("location")).isEqualTo("smtp.acme.org:25");
    }

    @Test
    public void smtpIsDown() throws MessagingException {
        willThrow(new MessagingException("A test exception")).given(this.mailSender).testConnection();
        Health health = this.indicator.health();
        replacedertThat(health.getStatus()).isEqualTo(Status.DOWN);
        replacedertThat(health.getDetails().get("location")).isEqualTo("smtp.acme.org:25");
        Object errorMessage = health.getDetails().get("error");
        replacedertThat(errorMessage).isNotNull();
        replacedertThat(errorMessage.toString().contains("A test exception")).isTrue();
    }

    public static clreplaced SuccessTransport extends Transport {

        public SuccessTransport(Session session, URLName urlName) {
            super(session, urlName);
        }

        @Override
        public void connect(String host, int port, String user, String preplacedword) {
        }

        @Override
        public void sendMessage(Message msg, Address[] addresses) {
        }
    }
}

19 View Source File : MailHealthIndicator.java
License : Apache License 2.0
Project Creator : yuanmabiji

/**
 * {@link HealthIndicator} for configured smtp server(s).
 *
 * @author Johannes Edmeier
 * @since 2.0.0
 */
public clreplaced MailHealthIndicator extends AbstractHealthIndicator {

    private final JavaMailSenderImpl mailSender;

    public MailHealthIndicator(JavaMailSenderImpl mailSender) {
        super("Mail health check failed");
        this.mailSender = mailSender;
    }

    @Override
    protected void doHealthCheck(Builder builder) throws Exception {
        builder.withDetail("location", this.mailSender.getHost() + ":" + this.mailSender.getPort());
        this.mailSender.testConnection();
        builder.up();
    }
}

19 View Source File : BeanConfig.java
License : Apache License 2.0
Project Creator : WeBankFinTech

/**
 * mail sender for alert mail in node\mgr\alert\mail\MailService.java
 */
@Bean(name = "mailSender")
public JavaMailSenderImpl getMailSender() {
    JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
    return javaMailSender;
}

19 View Source File : WebConfig.java
License : Apache License 2.0
Project Creator : tmobile

@Bean
public JavaMailSender getJavaMailSender() {
    JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
    mailSender.setHost(emailHost);
    mailSender.setPort(emailPort);
    return mailSender;
}

19 View Source File : MailPlugin.java
License : Apache License 2.0
Project Creator : osswangxining

/**
 */
@Plugin(name = "Mail Plugin", actions = { SendMailAction.clreplaced }, descriptor = "MailPluginDescriptor.json", configuration = MailPluginConfiguration.clreplaced)
@Slf4j
public clreplaced MailPlugin extends AbstractPlugin<MailPluginConfiguration> implements RuleMsgHandler {

    // TODO: Add logic to close this executor on shutdown.
    private static final ExecutorService executor = Executors.newSingleThreadExecutor();

    private MailPluginConfiguration configuration;

    private JavaMailSenderImpl mailSender;

    @Override
    public void init(MailPluginConfiguration configuration) {
        log.info("Initializing plugin using configuration {}", configuration);
        this.configuration = configuration;
        initMailSender(configuration);
    }

    @Override
    public void resume(PluginContext ctx) {
        initMailSender(configuration);
    }

    @Override
    public void suspend(PluginContext ctx) {
        mailSender = null;
    }

    @Override
    public void stop(PluginContext ctx) {
        mailSender = null;
    }

    private void initMailSender(MailPluginConfiguration configuration) {
        JavaMailSenderImpl mail = new JavaMailSenderImpl();
        mail.setHost(configuration.getHost());
        mail.setPort(configuration.getPort());
        mail.setUsername(configuration.getUsername());
        mail.setPreplacedword(configuration.getPreplacedword());
        if (configuration.getOtherProperties() != null) {
            Properties mailProperties = new Properties();
            configuration.getOtherProperties().forEach(p -> mailProperties.put(p.getKey(), p.getValue()));
            mail.setJavaMailProperties(mailProperties);
        }
        mailSender = mail;
    }

    @Override
    public void process(PluginContext ctx, TenantId tenantId, RuleId ruleId, RuleToPluginMsg<?> msg) throws RuleException {
        if (msg.getPayload() instanceof SendMailActionMsg) {
            executor.submit(() -> {
                try {
                    sendMail((SendMailActionMsg) msg.getPayload());
                } catch (Exception e) {
                    log.warn("[{}] Failed to send email", ctx.getPluginId(), e);
                    ctx.persistError("Failed to send email", e);
                }
            });
        } else {
            throw new RuntimeException("Not supported msg type: " + msg.getPayload().getClreplaced() + "!");
        }
    }

    private void sendMail(SendMailActionMsg msg) throws MessagingException {
        log.debug("Sending mail {}", msg);
        MimeMessage mailMsg = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mailMsg, "UTF-8");
        helper.setFrom(msg.getFrom());
        helper.setTo(msg.getTo());
        if (!StringUtils.isEmpty(msg.getCc())) {
            helper.setCc(msg.getCc());
        }
        if (!StringUtils.isEmpty(msg.getBcc())) {
            helper.setBcc(msg.getBcc());
        }
        helper.setSubject(msg.getSubject());
        helper.setText(msg.getBody());
        mailSender.send(helper.getMimeMessage());
        log.debug("Mail sent {}", msg);
    }

    @Override
    protected RuleMsgHandler getRuleMsgHandler() {
        return this;
    }
}

19 View Source File : BasicApplicationCoreNotificationConfig.java
License : Apache License 2.0
Project Creator : igloo-project

@Bean
public JavaMailSenderImpl mailSender(@Value("${notification.smtp.host}") String host, @Value("${notification.smtp.port}") int port) {
    JavaMailSenderImpl javaMailSend = new JavaMailSenderImpl();
    javaMailSend.setHost(host);
    javaMailSend.setPort(port);
    return javaMailSend;
}

19 View Source File : EruptJobService.java
License : Apache License 2.0
Project Creator : erupts

/**
 * @author liyuepeng
 * @date 2019-12-26
 */
@Service
public clreplaced EruptJobService {

    /**
     * 执行任务线程.
     */
    private static final String PROP_THREAD_COUNT = "org.quartz.threadPool.threadCount";

    /**
     * 执行任务线程数.
     */
    private static final int DEFAULT_THREAD_COUNT = 1;

    @Autowired
    private EruptDao eruptDao;

    @Autowired
    private JavaMailSenderImpl javaMailSender;

    public static final String MAIL_SENDER_KEY = "mailSensor";

    private final Map<String, StdSchedulerFactory> schedulerFactoryMap = new HashMap<>();

    public void triggerJob(EruptJob eruptJob) {
        new EruptJobAction().trigger(eruptJob, javaMailSender);
    }

    public void modifyJob(EruptJob eruptJob) throws SchedulerException, ParseException {
        String code = eruptJob.getCode();
        if (schedulerFactoryMap.containsKey(code)) {
            deleteJob(eruptJob);
        }
        if (eruptJob.getStatus()) {
            StdSchedulerFactory ssf = new StdSchedulerFactory();
            ssf.initialize(getSchedulerProp(code));
            Scheduler scheduler = ssf.getScheduler();
            // job
            JobDetailImpl job = new JobDetailImpl();
            JobDataMap jobDataMap = new JobDataMap();
            jobDataMap.put(code, eruptJob);
            jobDataMap.put(MAIL_SENDER_KEY, javaMailSender);
            job.setJobDataMap(jobDataMap);
            job.setName(code);
            job.setJobClreplaced(EruptJobAction.clreplaced);
            // trigger
            CronTriggerImpl trigger = new CronTriggerImpl();
            trigger.setName(code);
            trigger.setCronExpression(eruptJob.getCron());
            scheduler.scheduleJob(job, trigger);
            scheduler.start();
            schedulerFactoryMap.put(code, ssf);
        }
    }

    public void deleteJob(EruptJob eruptJob) throws SchedulerException {
        SchedulerFactory sf = schedulerFactoryMap.get(eruptJob.getCode());
        if (null != sf) {
            Scheduler scheduler = sf.getScheduler();
            scheduler.deleteJob(new JobKey(eruptJob.getCode()));
            if (!scheduler.isShutdown()) {
                scheduler.shutdown();
            }
            schedulerFactoryMap.remove(eruptJob.getCode());
        }
    }

    // 
    private Properties getSchedulerProp(String schedulerName) {
        Properties props = new Properties();
        props.setProperty(StdSchedulerFactory.PROP_SCHED_MAKE_SCHEDULER_THREAD_DAEMON, "true");
        props.setProperty(StdSchedulerFactory.PROP_SCHED_INTERRUPT_JOBS_ON_SHUTDOWN_WITH_WAIT, "true");
        props.setProperty(StdSchedulerFactory.PROP_SCHED_INTERRUPT_JOBS_ON_SHUTDOWN, "true");
        props.setProperty(StdSchedulerFactory.PROP_SCHED_INSTANCE_ID, "AUTO");
        props.setProperty(StdSchedulerFactory.PROP_SCHED_INSTANCE_NAME, schedulerName);
        props.setProperty(StdSchedulerFactory.PROP_THREAD_POOL_CLreplaced, SimpleThreadPool.clreplaced.getName());
        props.setProperty(PROP_THREAD_COUNT, Integer.toString(DEFAULT_THREAD_COUNT));
        return props;
    }

    @Transactional
    public void saveJobLog(EruptJobLog eruptJobLog) {
        eruptDao.persist(eruptJobLog);
    }
}

19 View Source File : AcmMailSender.java
License : GNU Lesser General Public License v3.0
Project Creator : ArkCase

public void setSmtpMailSender(JavaMailSenderImpl smtpMailSender) {
    this.smtpMailSender = smtpMailSender;
}

19 View Source File : AcmMailSender.java
License : GNU Lesser General Public License v3.0
Project Creator : ArkCase

public void setSmtpsMailSender(JavaMailSenderImpl smtpsMailSender) {
    this.smtpsMailSender = smtpsMailSender;
}

18 View Source File : MailSenderAutoConfigurationTests.java
License : Apache License 2.0
Project Creator : yuanmabiji

@Test
public void connectionOnStartupNotCalled() {
    this.contextRunner.withUserConfiguration(MockMailConfiguration.clreplaced).withPropertyValues("spring.mail.host:10.0.0.23", "spring.mail.test-connection:false").run((context) -> {
        replacedertThat(context).hreplacedingleBean(JavaMailSenderImpl.clreplaced);
        JavaMailSenderImpl mailSender = context.getBean(JavaMailSenderImpl.clreplaced);
        verify(mailSender, never()).testConnection();
    });
}

18 View Source File : MailSenderAutoConfigurationTests.java
License : Apache License 2.0
Project Creator : yuanmabiji

@Test
public void connectionOnStartup() {
    this.contextRunner.withUserConfiguration(MockMailConfiguration.clreplaced).withPropertyValues("spring.mail.host:10.0.0.23", "spring.mail.test-connection:true").run((context) -> {
        replacedertThat(context).hreplacedingleBean(JavaMailSenderImpl.clreplaced);
        JavaMailSenderImpl mailSender = context.getBean(JavaMailSenderImpl.clreplaced);
        verify(mailSender, times(1)).testConnection();
    });
}

18 View Source File : MailSenderValidatorAutoConfiguration.java
License : Apache License 2.0
Project Creator : yuanmabiji

/**
 * {@link EnableAutoConfiguration Auto configuration} for testing mail service
 * connectivity on startup.
 *
 * @author Eddú Meléndez
 * @author Stephane Nicoll
 * @since 1.3.0
 */
@Configuration
@AutoConfigureAfter(MailSenderAutoConfiguration.clreplaced)
@ConditionalOnProperty(prefix = "spring.mail", value = "test-connection")
@ConditionalOnSingleCandidate(JavaMailSenderImpl.clreplaced)
public clreplaced MailSenderValidatorAutoConfiguration {

    private final JavaMailSenderImpl mailSender;

    public MailSenderValidatorAutoConfiguration(JavaMailSenderImpl mailSender) {
        this.mailSender = mailSender;
    }

    @PostConstruct
    public void validateConnection() {
        try {
            this.mailSender.testConnection();
        } catch (MessagingException ex) {
            throw new IllegalStateException("Mail server is not available", ex);
        }
    }
}

18 View Source File : MailSenderPropertiesConfiguration.java
License : Apache License 2.0
Project Creator : yuanmabiji

private void applyProperties(JavaMailSenderImpl sender) {
    sender.setHost(this.properties.getHost());
    if (this.properties.getPort() != null) {
        sender.setPort(this.properties.getPort());
    }
    sender.setUsername(this.properties.getUsername());
    sender.setPreplacedword(this.properties.getPreplacedword());
    sender.setProtocol(this.properties.getProtocol());
    if (this.properties.getDefaultEncoding() != null) {
        sender.setDefaultEncoding(this.properties.getDefaultEncoding().name());
    }
    if (!this.properties.getProperties().isEmpty()) {
        sender.setJavaMailProperties(asProperties(this.properties.getProperties()));
    }
}

18 View Source File : SpringJavaEmailSender.java
License : Apache License 2.0
Project Creator : WeBankFinTech

/**
 * Created by shanhuang on 2019/10/12.
 */
public clreplaced SpringJavaEmailSender extends AbstractEmailSender {

    private static final Logger logger = LoggerFactory.getLogger(SpringJavaEmailSender.clreplaced);

    private JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();

    public SpringJavaEmailSender() {
        javaMailSender.setHost(SendEmailAppJointConfiguration.EMAIL_HOST().getValue());
        javaMailSender.setPort(Integer.parseInt(SendEmailAppJointConfiguration.EMAIL_PORT().getValue()));
        javaMailSender.setProtocol(SendEmailAppJointConfiguration.EMAIL_PROTOCOL().getValue());
        javaMailSender.setUsername(SendEmailAppJointConfiguration.EMAIL_USERNAME().getValue());
        javaMailSender.setPreplacedword(SendEmailAppJointConfiguration.EMAIL_PreplacedWORD().getValue());
        try {
            Properties prop = new Properties();
            prop.put("mail.smtp.auth", Boolean.parseBoolean(SendEmailAppJointConfiguration.EMAIL_SMTP_AUTH().getValue()));
            prop.put("mail.smtp.starttls.enable", Boolean.parseBoolean(SendEmailAppJointConfiguration.EMAIL_SMTP_STARTTLS_ENABLE().getValue()));
            prop.put("mail.smtp.starttls.required", Boolean.parseBoolean(SendEmailAppJointConfiguration.EMAIL_SMTP_STARTTLS_REQUIRED().getValue()));
            prop.put("mail.smtp.ssl.enable", Boolean.parseBoolean(SendEmailAppJointConfiguration.EMAIL_SMTP_SSL_ENABLED().getValue()));
            prop.put("mail.smtp.timeout", Integer.parseInt(SendEmailAppJointConfiguration.EMAIL_SMTP_TIMEOUT().getValue()));
            javaMailSender.setJavaMailProperties(prop);
        } catch (Exception e) {
            logger.error("Failed to read mail properties, roll back to default values.", e);
        }
    }

    @Override
    public void send(Email email) throws EmailSendFailedException {
        logger.info("Begin to send Email(" + email.getSubject() + ").");
        try {
            javaMailSender.send(parseToMimeMessage(email));
        } catch (Exception e) {
            logger.error("Send email failed: ", e);
            EmailSendFailedException ex = new EmailSendFailedException(80001, "Send email failed!");
            ex.initCause(e);
            throw ex;
        }
        logger.info("Send Email(" + email.getSubject() + ") succeed.");
    }

    private MimeMessage parseToMimeMessage(Email email) {
        MimeMessage message = javaMailSender.createMimeMessage();
        try {
            MimeMessageHelper messageHelper = new MimeMessageHelper(message, true);
            if (StringUtils.isBlank(email.getFrom())) {
                messageHelper.setFrom(SendEmailAppJointConfiguration.DEFAULT_EMAIL_FROM().getValue());
            } else {
                messageHelper.setFrom(email.getFrom());
            }
            messageHelper.setSubject(email.getSubject());
            messageHelper.setTo(email.getTo());
            messageHelper.setCc(email.getCc());
            messageHelper.setBcc(email.getBcc());
            for (Attachment attachment : email.getAttachments()) {
                messageHelper.addAttachment(attachment.getName(), new ByteArrayDataSource(attachment.getBase64Str(), attachment.getMediaType()));
            }
            messageHelper.setText(email.getContent(), true);
        } catch (Exception e) {
            logger.error("Send mail failed", e);
        }
        return message;
    }
}

18 View Source File : UCarMailServiceImpl.java
License : Apache License 2.0
Project Creator : ucarGroup

/**
 * Created by lubiao on 2018/3/22.
 */
@Service
public clreplaced UCarMailServiceImpl implements MailService {

    private static final Logger LOGGER = LoggerFactory.getLogger(UCarLoginServiceImpl.clreplaced);

    private JavaMailSenderImpl javaMailSender;

    public UCarMailServiceImpl() {
        javaMailSender = new JavaMailSenderImpl();
    // 邮箱发送设置
    }

    @Override
    public void sendMail(MailInfo mailInfo) {
        if (mailInfo.getMailType() == MailType.Simple) {
            sendSimpleMail(mailInfo);
        } else {
            sendMimeMail(mailInfo);
        }
    }

    private void sendSimpleMail(MailInfo msg) {
        // 组装mailMessage
        LOGGER.info("mailMessage:" + msg);
    }

    private void sendMimeMail(MailInfo msg) {
        LOGGER.info("mailMessage:" + msg);
    }
}

18 View Source File : MailService.java
License : Apache License 2.0
Project Creator : SanShanYouJiu

@Service
@Slf4j
public clreplaced MailService {

    @Autowired
    private RedisTemplate redisTemplate;

    @Autowired
    private JavaMailSenderImpl javaMailSender;

    @Value("${mail.prefix}")
    private String mailPrefix;

    private static final AtomicInteger POOL_NUMBER = new AtomicInteger(1);

    private ExecutorService pool = new ThreadPoolExecutor(0, 4, 3, TimeUnit.MINUTES, new SynchronousQueue<>(), (r) -> {
        Thread t = new Thread(r);
        t.setName("mail-thread:" + POOL_NUMBER);
        return t;
    });

    /**
     * 注册后发送验证邮件
     *
     * @param email 邮箱
     */
    public void sendRegister(String email) {
        String token = DigestUtils.sha256Hex(email + System.currentTimeMillis());
        String text = "您的验证链接为:" + mailPrefix + "?token=" + token;
        String subject = "sanshanblog注册验证";
        sendEmail(email, text, subject);
        redisTemplate.opsForValue().set(token, email, 2L, TimeUnit.HOURS);
    }

    /**
     * 发送验证码
     */
    public void sendCode(String key, String email) {
        String code = AuthCodeUtil.getCode(5);
        String text = "您的验证码是 " + code + " 有效期是5分钟";
        String subject = "sanshanblog验证码";
        sendEmail(email, text, subject);
        redisTemplate.opsForValue().set(key, code, 5, TimeUnit.MINUTES);
    }

    /**
     * 发送邮件
     * @param email   邮箱
     * @param text    内容
     * @param subject 标题
     */
    private void sendEmail(String email, String text, String subject) {
        // 构建简单邮件对象
        SimpleMailMessage smm = new SimpleMailMessage();
        // 设定邮件参数
        smm.setTo(email);
        smm.setFrom(javaMailSender.getUsername());
        smm.setSubject(subject);
        smm.setText(text);
        // 发送邮件
        pool.execute(() -> {
            javaMailSender.send(smm);
            log.info("Email:{}发送成功", email);
        });
        log.info("已发送邮件:{}", email);
    }
}

18 View Source File : ServiceConfig.java
License : Apache License 2.0
Project Creator : SanShanYouJiu

@Bean
public JavaMailSenderImpl javaMailSender() {
    JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
    mailSender.setHost(mailhost);
    mailSender.setPort(port);
    mailSender.setUsername(mailusername);
    mailSender.setPreplacedword(mailpreplacedword);
    mailSender.setDefaultEncoding("UTF-8");
    return mailSender;
}

18 View Source File : EmailInfoServiceImpl.java
License : Apache License 2.0
Project Creator : roncoo

/**
 * @author wujing
 */
@Service
public clreplaced EmailInfoServiceImpl implements EmailInfoService {

    private static final String TEMPLATE = "mail/roncoo.ftl";

    @Autowired
    private EmailInfoDao dao;

    @Autowired
    private JavaMailSenderImpl javaMailSender;

    @Autowired
    private FreeMarkerConfigurer freeMarkerConfigurer;

    @Autowired
    private ThreadPoolTaskExecutor threadPoolTaskExecutor;

    @Override
    public Result<Page<RcEmailInfo>> listForPage(int pageCurrent, int pageSize, String premise, String datePremise) {
        Result<Page<RcEmailInfo>> result = new Result<>();
        if (pageCurrent < 1) {
            result.setErrMsg("参数pageCurrent有误,pageCurrent=" + pageCurrent);
            return result;
        }
        if (pageSize < 1) {
            result.setErrMsg("参数pageSize有误,pageSize=" + pageSize);
            return result;
        }
        Page<RcEmailInfo> resultData = dao.listForPage(pageCurrent, pageSize, premise, datePremise);
        result.setResultData(resultData);
        result.setStatus(true);
        result.setErrCode(0);
        return result;
    }

    @Override
    public Result<RcEmailInfo> delete(Long id) {
        Result<RcEmailInfo> result = new Result<>();
        if (id < 1) {
            result.setErrMsg("此操作的id:" + id + "为无效id");
            return result;
        }
        if (dao.deleteById(id) > 0) {
            result.setStatus(true);
            result.setErrCode(0);
        }
        return result;
    }

    @Override
    public Result<RcEmailInfo> query(Long id) {
        Result<RcEmailInfo> result = new Result<>();
        if (id < 1) {
            result.setErrMsg("此操作的id:" + id + "为无效id");
            return result;
        }
        RcEmailInfo resultData = dao.selectById(id);
        result.setResultData(resultData);
        result.setStatus(true);
        result.setErrCode(0);
        return result;
    }

    @Override
    public Result<RcEmailInfo> sendMail(RcEmailAccountInfo accountInfo, RcEmailInfo rcEmailInfo) {
        Result<RcEmailInfo> result = new Result<>();
        if (!StringUtils.hasText(rcEmailInfo.getToUser())) {
            result.setErrMsg("收件人不能为空");
            return result;
        }
        if (!StringUtils.hasText(rcEmailInfo.getSubject())) {
            result.setErrMsg("主题不能为空");
            return result;
        }
        if (!StringUtils.hasText(rcEmailInfo.getreplacedle())) {
            result.setErrMsg("标题不能为空");
            return result;
        }
        // 编辑发送器
        createMailSender(accountInfo);
        HashMap<String, Object> map = new HashMap<>();
        map.put("content", rcEmailInfo.getContent());
        // 发送邮件
        send(accountInfo.getFromUser(), rcEmailInfo.getToUser(), rcEmailInfo.getSubject(), map, TEMPLATE);
        rcEmailInfo.setFromUser(accountInfo.getFromUser());
        // 保存记录
        if (dao.insert(rcEmailInfo) > 0) {
            result.setStatus(true);
            result.setErrCode(0);
        }
        return result;
    }

    /**
     * @param to
     * @param subject
     * @param map
     * @param templatePath
     */
    private void send(String fromUser, String to, String subject, Map<String, Object> map, String templatePath) {
        try {
            // 从FreeMarker模板生成邮件内容
            Template template = freeMarkerConfigurer.getConfiguration().getTemplate(templatePath);
            String text = FreeMarkerTemplateUtils.processTemplateIntoString(template, map);
            this.threadPoolTaskExecutor.execute(new SendMailThread(fromUser, to, subject, text));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void createMailSender(RcEmailAccountInfo info) {
        javaMailSender.setHost(info.getHost());
        javaMailSender.setUsername(info.getFromUser());
        String preplacedwd = Base64Util.decode(info.getPreplacedwd());
        javaMailSender.setPreplacedword(preplacedwd);
    }

    // 内部线程类,利用线程池异步发邮件。
    private clreplaced SendMailThread implements Runnable {

        private String fromUser;

        private String to;

        private String subject;

        private String content;

        private SendMailThread(String fromUser, String to, String subject, String content) {
            super();
            this.fromUser = fromUser;
            this.to = to;
            this.subject = subject;
            this.content = content;
        }

        @Override
        public void run() {
            send(fromUser, to, subject, content);
        }

        private static final String NAME = "龙果学院";

        public void send(String fromUser, String to, String subject, String text) {
            try {
                MimeMessage message = javaMailSender.createMimeMessage();
                MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
                InternetAddress from = new InternetAddress();
                from.setAddress(fromUser);
                from.setPersonal(NAME, "UTF-8");
                helper.setFrom(from);
                helper.setTo(to);
                helper.setSubject(subject);
                helper.setText(text, true);
                javaMailSender.send(message);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

18 View Source File : SendMailUtils.java
License : Apache License 2.0
Project Creator : moxi624

/**
 * 邮件发送工具类
 *
 * @author 陌溪
 * @date 2018年10月20日下午3:18:25
 */
@Slf4j
@Component
public clreplaced SendMailUtils {

    @Value(value = "${spring.mail.username}")
    public String SENDER;

    @Autowired
    private JavaMailSenderImpl mailSender;

    /**
     * 发送邮件
     *
     * @param receiver
     * @param text
     */
    public void sendEmail(String receiver, String text) {
        try {
            // 创建一个复杂的消息邮件
            MimeMessage mimeMessage = mailSender.createMimeMessage();
            // multipart:true
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
            helper.setSubject("蘑菇博客");
            helper.setText(text, true);
            // 邮件接收人
            helper.setTo(receiver);
            // 邮件发送者
            helper.setFrom(SENDER);
            mailSender.send(mimeMessage);
            log.info("邮件发送成功");
        /*添加邮件附件
            String path = ""; //文件路径
            String fileName = ""; //文件名
            helper.addAttachment(fileName, new File(path));
            */
        } catch (Exception e) {
            log.error(e.getMessage());
        }
    }
}

18 View Source File : MailConfig.java
License : Apache License 2.0
Project Creator : LinuxSuRen

@Bean(autowire = Autowire.BY_TYPE)
public MailSender mailBean() {
    JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
    mailSender.setHost(mailHost);
    mailSender.setUsername(mailUserName);
    mailSender.setPreplacedword(mailPreplacedword);
    setUpMailPro(mailSender);
    return mailSender;
}

18 View Source File : EmailUtils.java
License : Apache License 2.0
Project Creator : isxcode

/**
 * 发送电子邮件marker
 *
 * @author ispong
 * @since 0.0.1
 */
@Slf4j
public clreplaced EmailUtils {

    private static JavaMailSenderImpl javaMailSender;

    private static MailProperties mailProperties;

    private static ThreadPoolTaskExecutor emailThread;

    public EmailUtils(MailSender mailSender, MailProperties mailProperties, ThreadPoolTaskExecutor emailThread) {
        EmailUtils.emailThread = emailThread;
        EmailUtils.mailProperties = mailProperties;
        EmailUtils.javaMailSender = (JavaMailSenderImpl) mailSender;
    }

    public static void sendNormalEmail(String email, String content, String subject) {
        try {
            sendEmailMain(Collections.singletonList(email), content, subject, false, null, null);
        } catch (Exception e) {
            log.info("邮件发送失败" + e.getMessage());
        }
    }

    public static void sendNormalHtmlEmail(String email, String content, String subject) {
        try {
            sendEmailMain(Collections.singletonList(email), content, subject, true, null, null);
        } catch (Exception e) {
            log.info("邮件发送失败" + e.getMessage());
        }
    }

    /**
     * 发送电子邮件核心方法
     *
     * @param toEmails      目标邮箱地址
     * @param emailContent  邮件内容
     * @param subject       邮件主题
     * @param isHtmlContent 是否将邮件内容转成网页
     * @param files         附件列表
     * @param inlineFiles   嵌入式附件
     * @throws OxygenException    主要异常
     * @throws MessagingException 发送消息异常
     * @since 0.0.1
     */
    public static void sendEmailMain(List<String> toEmails, String emailContent, String subject, boolean isHtmlContent, List<File> files, Map<String, File> inlineFiles) throws OxygenException, MessagingException {
        MimeMessage message = javaMailSender.createMimeMessage();
        message.setFrom(mailProperties.getProperties().get("sender") + "<" + Objects.requireNonNull(javaMailSender.getUsername()) + ">");
        try {
            MimeMessageHelper helper = new MimeMessageHelper(message);
            // 是否支持附件操作
            if (files != null || inlineFiles != null) {
                helper = new MimeMessageHelper(message, true);
            }
            helper.setSubject(subject);
            helper.setText(emailContent, isHtmlContent);
            // 遍历加入附件
            if (files != null) {
                for (File file : files) {
                    helper.addAttachment(file.getName(), file);
                }
            }
            // 遍历加入嵌入图片
            if (inlineFiles != null) {
                for (Map.Entry<String, File> entry : inlineFiles.entrySet()) {
                    helper.addInline(entry.getKey(), entry.getValue());
                }
            }
            // 多线程发送邮件
            for (String toEmail : toEmails) {
                log.debug("sending to " + toEmail + " content:" + message.getContent());
                helper.setTo(toEmail);
                emailThread.execute(() -> javaMailSender.send(message));
            }
        } catch (MessagingException | IOException ex) {
            throw new OxygenException(ex.toString());
        }
    }
}

18 View Source File : MailManager.java
License : Apache License 2.0
Project Creator : DuanJiaNing

/**
 * Created on 2018/4/8.
 *
 * @author DuanJiaNing
 */
@Component
public clreplaced MailManager {

    private final JavaMailSenderImpl mailSender;

    public MailManager() {
        mailSender = new JavaMailSenderImpl();
        // 指定用来发送Email的邮件服务器主机名
        mailSender.setHost("smtp.qq.com");
        // 默认端口,标准的SMTP端口
        mailSender.setPort(465);
        Properties properties = new Properties();
        properties.setProperty("mail.host", "smtp.qq.com");
        properties.setProperty("mail.transport.protocol", "smtp");
        properties.setProperty("mail.smtp.auth", "true");
        properties.setProperty("mail.smtp.socketFactory.clreplaced", "javax.net.ssl.SSLSocketFactory");
        properties.setProperty("mail.smtp.port", "465");
        properties.setProperty("mail.smtp.socketFactory.port", "465");
        mailSender.setJavaMailProperties(properties);
    }

    public JavaMailSenderImpl getMailSender(String username, String preplacedword) {
        mailSender.setUsername(username);
        mailSender.setPreplacedword(preplacedword);
        return mailSender;
    }
}

18 View Source File : SMTPServerConfigurationTest.java
License : MIT License
Project Creator : Daimler

public clreplaced SMTPServerConfigurationTest {

    private SMTPServerConfiguration configToTest;

    private JavaMailSenderImpl mockedMailSender;

    private Properties properties;

    @Before
    public void before() {
        properties = new Properties();
        mockedMailSender = mock(JavaMailSenderImpl.clreplaced);
        when(mockedMailSender.getJavaMailProperties()).thenReturn(properties);
        configToTest = new SMTPServerConfiguration() {

            @Override
            protected JavaMailSenderImpl createMailSender() {
                return mockedMailSender;
            }
        };
    }

    @Test
    public void defaults() {
        /* prepare */
        configToTest.hostname = "host1";
        /* execute */
        configToTest.getJavaMailSender();
        /* test */
        verify(mockedMailSender, never()).setPreplacedword(any());
        verify(mockedMailSender, never()).setUsername(any());
        verify(mockedMailSender).setHost("host1");
        verify(mockedMailSender).setPort(SMTPServerConfiguration.DEFAULT_SMTP_SERVER_PORT);
        replacedertEquals(2, properties.size());
        replacedertEquals("smtp", properties.getProperty("mail.transport.protocol"));
        replacedertEquals("false", properties.getProperty("mail.smtp.auth"));
    }

    @Test
    public void all_configured_all_set_to_mailsender() {
        /* prepare */
        configToTest.hostname = "host1";
        configToTest.hostPort = 1234;
        configToTest.username = "usr1";
        configToTest.preplacedword = "pwd1";
        configToTest.smtpConfigString = "mail.smtp.auth=true,mail.smtp.timeout=4321,mail.transport.protocol=smtp";
        /* execute */
        configToTest.getJavaMailSender();
        /* test */
        verify(mockedMailSender).setPreplacedword("pwd1");
        verify(mockedMailSender).setUsername("usr1");
        verify(mockedMailSender).setPort(1234);
        verify(mockedMailSender).setHost("host1");
        replacedertEquals(3, properties.size());
        replacedertEquals("smtp", properties.getProperty("mail.transport.protocol"));
        replacedertEquals("true", properties.getProperty("mail.smtp.auth"));
        replacedertEquals("4321", properties.getProperty("mail.smtp.timeout"));
    }

    @Test
    public void all_configured_except_credentails_all_set_to_mailsender_but_credentials_not_set() {
        /* prepare */
        configToTest.hostname = "host1";
        configToTest.hostPort = 1234;
        configToTest.username = "";
        configToTest.preplacedword = "";
        configToTest.smtpConfigString = "mail.smtp.auth=false,mail.smtp.timeout=4321";
        /* execute */
        configToTest.getJavaMailSender();
        /* test */
        verify(mockedMailSender, never()).setPreplacedword(any());
        verify(mockedMailSender, never()).setUsername(any());
        verify(mockedMailSender).setPort(1234);
        verify(mockedMailSender).setHost("host1");
        replacedertEquals(2, properties.size());
        replacedertEquals("false", properties.getProperty("mail.smtp.auth"));
        replacedertEquals("4321", properties.getProperty("mail.smtp.timeout"));
    }
}

18 View Source File : MailController.java
License : Apache License 2.0
Project Creator : chen87548081

/**
 * MailController
 *
 * @author chenweidong
 * @date 2017/12/26
 */
@Controller
@RequestMapping("mail")
public clreplaced MailController extends BaseController {

    private final static Logger logger = LoggerFactory.getLogger(MailController.clreplaced);

    @Autowired
    private JavaMailSenderImpl mailSender;

    @GetMapping("groupSend")
    @ResponseBody
    public Object qunfaMail(String mails) {
        BaseResult result = new BaseResult();
        String htmlContent = "<html><head>" + "<base target=\"_blank\">" + "<style type=\"text/css\">" + "::-webkit-scrollbar{ display: none; }" + "</style>" + "<style id=\"cloudAttachStyle\" type=\"text/css\">" + "#divNeteaseBigAttach, #divNeteaseBigAttach_bak{display:none;}" + "</style>" + "</head>" + "<body tabindex=\"0\" role=\"lisreplacedem\">" + "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"width: 600px; border: 1px solid #ddd; border-radius: 3px; color: #555; font-family: 'Helvetica Neue Regular',Helvetica,Arial,Tahoma,'Microsoft YaHei','San Francisco','微软雅黑','Hiragino Sans GB',STHeitiSC-Light; font-size: 12px; height: auto; margin: auto; overflow: hidden; text-align: left; word-break: break-all; word-wrap: break-word;\"> <tbody style=\"margin: 0; padding: 0;\"> <tr style=\"background-color: #393D49; height: 60px; margin: 0; padding: 0;\"> <td style=\"margin: 0; padding: 0;\"> <div style=\"color: #5EB576; margin: 0; margin-left: 30px; padding: 0;\"><a style=\"font-size: 14px; margin: 0; padding: 0; color: #5EB576; " + "text-decoration: none;\" href=\"http://www.flyfun.site/\" target=\"_blank\">飞趣社区</a></div> </td> </tr> " + "<tr style=\"margin: 0; padding: 0;\"> <td style=\"margin: 0; padding: 30px;\"> <p style=\"line-height: 20px; margin: 0; margin-bottom: 10px; padding: 0;\"> " + "你好,<em style=\"font-weight: 700;\"></em><p>飞趣社区 寻找属于你的乐趣</p> " + "<div style=\"\"> <a href=\"http://www.flyfun.site/?from=qqmail\" style=\"background-color: #009E94; color: #fff; display: inline-block; height: 32px; line-height: 32px; margin: 0 15px 0 0; padding: 0 15px; text-decoration: none;\" target=\"_blank\">立即前往</a> </div>" + "<div style=\"\"></div></td> </tr> <tr style=\"background-color: #fafafa; color: #999; height: 35px; margin: 0; padding: 0; text-align: center;\"> <td style=\"margin: 0; padding: 0;\">系统邮件,请勿直接回复。</td> </tr> </tbody> </table>" + "<style type=\"text/css\">" + "body{font-size:14px;font-family:arial,verdana,sans-serif;line-height:1.666;padding:0;margin:0;overflow:auto;white-space:normal;word-wrap:break-word;min-height:100px}" + "td, input, button, select, body{font-family:Helvetica, 'Microsoft Yahei', verdana}" + "pre {white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;width:95%}" + "th,td{font-family:arial,verdana,sans-serif;line-height:1.666}" + "img{ border:0}" + "header,footer,section,aside,article,nav,hgroup,figure,figcaption{display:block}" + "blockquote{margin-right:0px}" + "</style>" + "<style id=\"ntes_link_color\" type=\"text/css\">a,td a{color:#064977}</style>" + "</body></html>";
        ;
        try {
            String[] mailTos = new String[mails.split(",").length];
            for (int i = 0; i < mails.split(",").length; i++) {
                mailTos[i] = mails.split(",")[i] + "@qq.com";
            }
            MimeMessage mimeMessage = mailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "GBK");
            helper.setFrom(mailSender.getUsername());
            // helper.setFrom("[email protected]");
            // 邮件主题
            helper.setSubject("飞趣社区 寻找生活的乐趣");
            // 邮件接收者的邮箱地址
            helper.setTo(mailTos);
            helper.setText(htmlContent, true);
            mailSender.send(mimeMessage);
        } catch (MessagingException e) {
            logger.error("发送邮件失败 ", e);
        }
        result.setData(mails.split(",").length);
        return result;
    }

    @GetMapping("sendBatch")
    @ResponseBody
    public Object sendBatch(String mails) {
        BaseResult result = new BaseResult();
        String htmlContent = "<html><head>" + "<base target=\"_blank\">" + "<style type=\"text/css\">" + "::-webkit-scrollbar{ display: none; }" + "</style>" + "<style id=\"cloudAttachStyle\" type=\"text/css\">" + "#divNeteaseBigAttach, #divNeteaseBigAttach_bak{display:none;}" + "</style>" + "</head>" + "<body tabindex=\"0\" role=\"lisreplacedem\">" + "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"width: 600px; border: 1px solid #ddd; border-radius: 3px; color: #555; font-family: 'Helvetica Neue Regular',Helvetica,Arial,Tahoma,'Microsoft YaHei','San Francisco','微软雅黑','Hiragino Sans GB',STHeitiSC-Light; font-size: 12px; height: auto; margin: auto; overflow: hidden; text-align: left; word-break: break-all; word-wrap: break-word;\"> <tbody style=\"margin: 0; padding: 0;\"> <tr style=\"background-color: #393D49; height: 60px; margin: 0; padding: 0;\"> <td style=\"margin: 0; padding: 0;\"> <div style=\"color: #5EB576; margin: 0; margin-left: 30px; padding: 0;\"><a style=\"font-size: 14px; margin: 0; padding: 0; color: #5EB576; " + "text-decoration: none;\" href=\"http://www.flyfun.site/\" target=\"_blank\">飞趣社区</a></div> </td> </tr> " + "<tr style=\"margin: 0; padding: 0;\"> <td style=\"margin: 0; padding: 30px;\"> <p style=\"line-height: 20px; margin: 0; margin-bottom: 10px; padding: 0;\"> " + "你好,<em style=\"font-weight: 700;\"></em><p>飞趣社区 是真实的社交网络 为了联络你和你周围的朋友,然后交流互相的想法,发表自己的文章,和朋友分享相片、音乐和电影,展示自我,从而帮助大家更好得成长</p><p>飞趣社区欢迎你的体验</p> " + "<div style=\"\"> <a href=\"http://www.flyfun.site/?from=qqmail\" style=\"background-color: #009E94; color: #fff; display: inline-block; height: 32px; line-height: 32px; margin: 0 15px 0 0; padding: 0 15px; text-decoration: none;\" target=\"_blank\">立即前往</a> </div>" + "<div style=\"\"></div>  </td> </tr> <tr style=\"background-color: #fafafa; color: #999; height: 35px; margin: 0; padding: 0; text-align: center;\"> <td style=\"margin: 0; padding: 0;\">系统邮件,请勿直接回复。</td> </tr> </tbody> </table>" + "<style type=\"text/css\">" + "body{font-size:14px;font-family:arial,verdana,sans-serif;line-height:1.666;padding:0;margin:0;overflow:auto;white-space:normal;word-wrap:break-word;min-height:100px}" + "td, input, button, select, body{font-family:Helvetica, 'Microsoft Yahei', verdana}" + "pre {white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;width:95%}" + "th,td{font-family:arial,verdana,sans-serif;line-height:1.666}" + "img{ border:0}" + "header,footer,section,aside,article,nav,hgroup,figure,figcaption{display:block}" + "blockquote{margin-right:0px}" + "</style>" + "<style id=\"ntes_link_color\" type=\"text/css\">a,td a{color:#064977}</style>" + "</body></html>";
        ;
        try {
            int qq = 758991930;
            String[] qqs = new String[7];
            for (int i = 0; i < 6; i++) {
                qqs[i] = qq + "@qq.com";
                qq++;
            }
            qqs[6] = "[email protected]";
            MimeMessage mimeMessage = mailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "GBK");
            // helper.setFrom("[email protected]");
            helper.setFrom(mailSender.getUsername());
            // 邮件主题
            helper.setSubject("飞趣社区 寻找生活的乐趣");
            // 邮件接收者的邮箱地址
            helper.setTo(qqs);
            helper.setText(htmlContent, true);
            mailSender.send(mimeMessage);
            result.setData(qqs);
        } catch (MessagingException e) {
            logger.error("发送邮件失败 ", e);
        }
        return result;
    }
}

17 View Source File : MailSenderAutoConfigurationTests.java
License : Apache License 2.0
Project Creator : yuanmabiji

@Test
public void smtpHostWithJavaMailProperties() {
    this.contextRunner.withPropertyValues("spring.mail.host:localhost", "spring.mail.properties.mail.smtp.auth:true").run((context) -> {
        replacedertThat(context).hreplacedingleBean(JavaMailSenderImpl.clreplaced);
        JavaMailSenderImpl mailSender = context.getBean(JavaMailSenderImpl.clreplaced);
        replacedertThat(mailSender.getJavaMailProperties().get("mail.smtp.auth")).isEqualTo("true");
    });
}

17 View Source File : MailSenderAutoConfigurationTests.java
License : Apache License 2.0
Project Creator : yuanmabiji

@Test
public void defaultEncodingWithProperties() {
    this.contextRunner.withPropertyValues("spring.mail.host:localhost", "spring.mail.default-encoding:UTF-16").run((context) -> {
        replacedertThat(context).hreplacedingleBean(JavaMailSenderImpl.clreplaced);
        JavaMailSenderImpl mailSender = context.getBean(JavaMailSenderImpl.clreplaced);
        replacedertThat(mailSender.getDefaultEncoding()).isEqualTo("UTF-16");
    });
}

17 View Source File : MailSenderAutoConfigurationTests.java
License : Apache License 2.0
Project Creator : yuanmabiji

@Test
public void mailSenderBackOff() {
    this.contextRunner.withUserConfiguration(ManualMailConfiguration.clreplaced).withPropertyValues("spring.mail.host:smtp.acme.org", "spring.mail.user:user", "spring.mail.preplacedword:secret").run((context) -> {
        replacedertThat(context).hreplacedingleBean(JavaMailSenderImpl.clreplaced);
        JavaMailSenderImpl mailSender = context.getBean(JavaMailSenderImpl.clreplaced);
        replacedertThat(mailSender.getUsername()).isNull();
        replacedertThat(mailSender.getPreplacedword()).isNull();
    });
}

17 View Source File : MailSenderAutoConfigurationTests.java
License : Apache License 2.0
Project Creator : yuanmabiji

@Test
public void defaultEncodingWithJndi() {
    configureJndiSession("foo");
    this.contextRunner.withPropertyValues("spring.mail.jndi-name:foo", "spring.mail.default-encoding:UTF-16").run((context) -> {
        replacedertThat(context).hreplacedingleBean(JavaMailSenderImpl.clreplaced);
        JavaMailSenderImpl mailSender = context.getBean(JavaMailSenderImpl.clreplaced);
        replacedertThat(mailSender.getDefaultEncoding()).isEqualTo("UTF-16");
    });
}

17 View Source File : MailSender.java
License : MIT License
Project Creator : whichard

/**
 * @author wq
 * @date 2019/5/10
 */
@Service
public clreplaced MailSender implements InitializingBean {

    private static final Logger log = LoggerFactory.getLogger(MailSender.clreplaced);

    private JavaMailSenderImpl mailSender;

    private TemplateEngine templateEngine;

    public boolean sendWithHTMLTemplate(String to, String subject, String template, Map<String, Object> model) {
        try {
            String nick = MimeUtility.encodeText("Whichard博客");
            InternetAddress from = new InternetAddress("[email protected]");
            MimeMessage mimeMessage = mailSender.createMimeMessage();
            MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage);
            Context context = new Context();
            context.setVariable("model", model);
            String result = templateEngine.process(template, context);
            mimeMessageHelper.setTo(to);
            mimeMessageHelper.setFrom(from);
            mimeMessageHelper.setSubject(subject);
            mimeMessageHelper.setText(result, true);
            mailSender.send(mimeMessage);
            return true;
        } catch (Exception e) {
            log.error("mail send failed");
            return false;
        }
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        mailSender = new JavaMailSenderImpl();
        // 请输入自己的邮箱和密码,用于发送邮件
        mailSender.setUsername("[email protected]");
        mailSender.setPreplacedword("gftxtwwlqhgubaic");
        mailSender.setHost("smtp.qq.com");
        mailSender.setPort(465);
        mailSender.setDefaultEncoding("utf8");
        Properties properties = new Properties();
        properties.setProperty("mail.host", "smtp.qq.com");
        properties.setProperty("mail.transport.protocol", "smtp");
        properties.setProperty("mail.smtp.auth", "true");
        properties.setProperty("mail.smtp.socketFactory.clreplaced", "javax.net.ssl.SSLSocketFactory");
        properties.setProperty("mail.smtp.port", "465");
        properties.setProperty("mail.smtp.socketFactory.port", "465");
        // SSL
        /* MailSSLSocketFactory sf = new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        properties.setProperty("mail.smtp.ssl.enable", "true");
        properties.put("mail.smtp.ssl.socketFactory", sf);*/
        mailSender.setJavaMailProperties(properties);
    }
}

17 View Source File : MailClient.java
License : MIT License
Project Creator : sparsick

@NotNull
private JavaMailSenderImpl createJavaMailSender() {
    JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
    javaMailSender.setJavaMailProperties(properties);
    javaMailSender.setUsername(username);
    javaMailSender.setPreplacedword(preplacedword);
    return javaMailSender;
}

17 View Source File : MailService.java
License : GNU Affero General Public License v3.0
Project Creator : progilone

/**
 * Service for sending e-mails.
 */
@Service
public clreplaced MailService {

    private static final Logger LOG = LoggerFactory.getLogger(MailService.clreplaced);

    @Inject
    private JavaMailSenderImpl javaMailSender;

    @Value("${spring.mail.activated}")
    private boolean activated;

    @Value("${spring.mail.from}")
    private String defaultFrom;

    public boolean sendEmail(final String from, final String[] to, final String subject, final String content, final boolean isMultipart, final boolean isHtml) {
        return sendEmail(from, to, null, subject, content, null, null, null, isMultipart, isHtml);
    }

    public boolean sendEmailWithAttachment(final String from, final String[] to, final String subject, final String content, final File attachment, final String contentType, final boolean isMultipart, final boolean isHtml) {
        try (final InputStream in = new FileInputStream(attachment)) {
            return sendEmail(from, to, null, subject, content, attachment.getName(), in, contentType, isMultipart, isHtml);
        } catch (final IOException e) {
            LOG.warn("Unable to create inputstream for attachment", e);
            return false;
        }
    }

    public boolean sendEmailWithStreamAttachment(final String from, final String[] to, final String cc, final String subject, final String content, final String attachmentName, final InputStream attachment, final String contentType, final boolean isMultipart, final boolean isHtml) {
        return sendEmail(from, to, cc, subject, content, attachmentName, attachment, contentType, isMultipart, isHtml);
    }

    private boolean sendEmail(final String from, final String[] to, final String cc, final String subject, final String content, final String attachmentName, final InputStream attachment, final String contentType, final boolean isMultipart, final boolean isHtml) {
        LOG.debug("Send e-mail[multipart '{}' and html '{}'] from '{}' to '{}' with subject '{}'", isMultipart, isHtml, from, to.length > 0 ? to[0] : "", subject);
        if (activated) {
            // Prepare message using a Spring helper
            final MimeMessage mimeMessage = javaMailSender.createMimeMessage();
            try {
                final MimeMessageHelper message = new MimeMessageHelper(mimeMessage, true, StandardCharsets.UTF_8.name());
                message.setTo(to);
                if (StringUtils.isNotEmpty(cc)) {
                    message.setCc(cc);
                }
                message.setFrom(StringUtils.isNotBlank(from) ? from : defaultFrom);
                message.setSubject(subject);
                message.setText(content, isHtml);
                // Handle attachment if present
                if (attachment != null) {
                    LOG.debug("Sent e-mail with attachment '{}'", attachmentName);
                    message.addAttachment(attachmentName, new ByteArrayDataSource(attachment, contentType));
                }
                javaMailSender.send(mimeMessage);
                LOG.debug("Sent e-mail to User '{}'", to.length > 0 ? to[0] : "");
                return true;
            } catch (final Exception e) {
                LOG.error("E-mail could not be sent, exception is: {}", e.getMessage(), e);
                return false;
            }
        } else {
            LOG.warn("Email sending not activated !");
            LOG.trace("Email content {}", content);
            return true;
        }
    }
}

17 View Source File : DefaultMailService.java
License : Apache License 2.0
Project Creator : osswangxining

@Service
@Slf4j
public clreplaced DefaultMailService implements MailService {

    @Autowired
    private MessageSource messages;

    @Autowired
    @Qualifier("velocityEngine")
    private VelocityEngine engine;

    private JavaMailSenderImpl mailSender;

    private String mailFrom;

    @Autowired
    private AdminSettingsService adminSettingsService;

    @PostConstruct
    private void init() {
        updateMailConfiguration();
    }

    @Override
    public void updateMailConfiguration() {
        AdminSettings settings = adminSettingsService.findAdminSettingsByKey("mail");
        if (settings != null) {
            JsonNode jsonConfig = settings.getJsonValue();
            mailSender = createMailSender(jsonConfig);
            mailFrom = jsonConfig.get("mailFrom").asText();
        } else {
            throw new IncorrectParameterException("Failed to date mail configuration. Settings not found!");
        }
    }

    private JavaMailSenderImpl createMailSender(JsonNode jsonConfig) {
        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
        mailSender.setHost(jsonConfig.get("smtpHost").asText());
        mailSender.setPort(parsePort(jsonConfig.get("smtpPort").asText()));
        mailSender.setUsername(jsonConfig.get("username").asText());
        mailSender.setPreplacedword(jsonConfig.get("preplacedword").asText());
        mailSender.setJavaMailProperties(createJavaMailProperties(jsonConfig));
        return mailSender;
    }

    private Properties createJavaMailProperties(JsonNode jsonConfig) {
        Properties javaMailProperties = new Properties();
        String protocol = jsonConfig.get("smtpProtocol").asText();
        javaMailProperties.put("mail.transport.protocol", protocol);
        javaMailProperties.put("mail." + protocol + ".host", jsonConfig.get("smtpHost").asText());
        javaMailProperties.put("mail." + protocol + ".port", jsonConfig.get("smtpPort").asText());
        javaMailProperties.put("mail." + protocol + ".timeout", jsonConfig.get("timeout").asText());
        javaMailProperties.put("mail." + protocol + ".auth", String.valueOf(StringUtils.isNotEmpty(jsonConfig.get("username").asText())));
        javaMailProperties.put("mail." + protocol + ".starttls.enable", jsonConfig.get("enableTls"));
        return javaMailProperties;
    }

    private int parsePort(String strPort) {
        try {
            return Integer.valueOf(strPort);
        } catch (NumberFormatException e) {
            throw new IncorrectParameterException(String.format("Invalid smtp port value: %s", strPort));
        }
    }

    @Override
    public void sendEmail(String email, String subject, String message) throws IoTPException {
        sendMail(mailSender, mailFrom, email, subject, message);
    }

    @Override
    public void sendTestMail(JsonNode jsonConfig, String email) throws IoTPException {
        JavaMailSenderImpl testMailSender = createMailSender(jsonConfig);
        String mailFrom = jsonConfig.get("mailFrom").asText();
        String subject = messages.getMessage("test.message.subject", null, Locale.US);
        Map<String, Object> model = new HashMap<String, Object>();
        model.put("targetEmail", email);
        String message = VelocityEngineUtils.mergeTemplateIntoString(this.engine, "test.vm", "UTF-8", model);
        sendMail(testMailSender, mailFrom, email, subject, message);
    }

    @Override
    public void sendActivationEmail(String activationLink, String email) throws IoTPException {
        String subject = messages.getMessage("activation.subject", null, Locale.US);
        Map<String, Object> model = new HashMap<String, Object>();
        model.put("activationLink", activationLink);
        model.put("targetEmail", email);
        String message = VelocityEngineUtils.mergeTemplateIntoString(this.engine, "activation.vm", "UTF-8", model);
        sendMail(mailSender, mailFrom, email, subject, message);
    }

    @Override
    public void sendAccountActivatedEmail(String loginLink, String email) throws IoTPException {
        String subject = messages.getMessage("account.activated.subject", null, Locale.US);
        Map<String, Object> model = new HashMap<String, Object>();
        model.put("loginLink", loginLink);
        model.put("targetEmail", email);
        String message = VelocityEngineUtils.mergeTemplateIntoString(this.engine, "account.activated.vm", "UTF-8", model);
        sendMail(mailSender, mailFrom, email, subject, message);
    }

    @Override
    public void sendResetPreplacedwordEmail(String preplacedwordResetLink, String email) throws IoTPException {
        String subject = messages.getMessage("reset.preplacedword.subject", null, Locale.US);
        Map<String, Object> model = new HashMap<String, Object>();
        model.put("preplacedwordResetLink", preplacedwordResetLink);
        model.put("targetEmail", email);
        String message = VelocityEngineUtils.mergeTemplateIntoString(this.engine, "reset.preplacedword.vm", "UTF-8", model);
        sendMail(mailSender, mailFrom, email, subject, message);
    }

    @Override
    public void sendPreplacedwordWasResetEmail(String loginLink, String email) throws IoTPException {
        String subject = messages.getMessage("preplacedword.was.reset.subject", null, Locale.US);
        Map<String, Object> model = new HashMap<String, Object>();
        model.put("loginLink", loginLink);
        model.put("targetEmail", email);
        String message = VelocityEngineUtils.mergeTemplateIntoString(this.engine, "preplacedword.was.reset.vm", "UTF-8", model);
        sendMail(mailSender, mailFrom, email, subject, message);
    }

    private void sendMail(JavaMailSenderImpl mailSender, String mailFrom, String email, String subject, String message) throws IoTPException {
        try {
            MimeMessage mimeMsg = mailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(mimeMsg, "UTF-8");
            helper.setFrom(mailFrom);
            helper.setTo(email);
            helper.setSubject(subject);
            helper.setText(message, true);
            mailSender.send(helper.getMimeMessage());
        } catch (Exception e) {
            throw handleException(e);
        }
    }

    protected IoTPException handleException(Exception exception) {
        String message;
        if (exception instanceof NestedRuntimeException) {
            message = ((NestedRuntimeException) exception).getMostSpecificCause().getMessage();
        } else {
            message = exception.getMessage();
        }
        return new IoTPException(String.format("Unable to send mail: %s", message), IoTPErrorCode.GENERAL);
    }
}

17 View Source File : MailConfig.java
License : Apache License 2.0
Project Creator : LinuxSuRen

/**
 * 设置邮箱服务器配置
 * @param mailSender
 */
private void setUpMailPro(JavaMailSenderImpl mailSender) {
    Properties javaMailProperties = new Properties();
    javaMailProperties.put("mail.smtp.auth", true);
    javaMailProperties.put("mail.smtp.starttls.enable", true);
    javaMailProperties.put("mail.smtp.timeout", 5000);
    mailSender.setJavaMailProperties(javaMailProperties);
}

17 View Source File : MailService.java
License : GNU General Public License v3.0
Project Creator : klask-io

/**
 * Service for sending e-mails.
 * <p>
 * We use the @Async annotation to send e-mails asynchronously.
 * </p>
 */
@Service
public clreplaced MailService {

    private static final String USER = "user";

    private static final String BASE_URL = "baseUrl";

    private final Logger log = LoggerFactory.getLogger(MailService.clreplaced);

    @Inject
    private JHipsterProperties jHipsterProperties;

    @Inject
    private JavaMailSenderImpl javaMailSender;

    @Inject
    private MessageSource messageSource;

    @Inject
    private SpringTemplateEngine templateEngine;

    @Async
    public void sendEmail(String to, String subject, String content, boolean isMultipart, boolean isHtml) {
        log.debug("Send e-mail[multipart '{}' and html '{}'] to '{}' with subject '{}' and content={}", isMultipart, isHtml, to, subject, content);
        // Prepare message using a Spring helper
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        try {
            MimeMessageHelper message = new MimeMessageHelper(mimeMessage, isMultipart, CharEncoding.UTF_8);
            message.setTo(to);
            message.setFrom(jHipsterProperties.getMail().getFrom());
            message.setSubject(subject);
            message.setText(content, isHtml);
            javaMailSender.send(mimeMessage);
            log.debug("Sent e-mail to User '{}'", to);
        } catch (Exception e) {
            log.warn("E-mail could not be sent to user '{}', exception is: {}", to, e.getMessage());
        }
    }

    @Async
    public void sendActivationEmail(User user, String baseUrl) {
        log.debug("Sending activation e-mail to '{}'", user.getEmail());
        Locale locale = Locale.forLanguageTag(user.getLangKey());
        Context context = new Context(locale);
        context.setVariable(USER, user);
        context.setVariable(BASE_URL, baseUrl);
        String content = templateEngine.process("activationEmail", context);
        String subject = messageSource.getMessage("email.activation.replacedle", null, locale);
        sendEmail(user.getEmail(), subject, content, false, true);
    }

    @Async
    public void sendCreationEmail(User user, String baseUrl) {
        log.debug("Sending creation e-mail to '{}'", user.getEmail());
        Locale locale = Locale.forLanguageTag(user.getLangKey());
        Context context = new Context(locale);
        context.setVariable(USER, user);
        context.setVariable(BASE_URL, baseUrl);
        String content = templateEngine.process("creationEmail", context);
        String subject = messageSource.getMessage("email.activation.replacedle", null, locale);
        sendEmail(user.getEmail(), subject, content, false, true);
    }

    @Async
    public void sendPreplacedwordResetMail(User user, String baseUrl) {
        log.debug("Sending preplacedword reset e-mail to '{}'", user.getEmail());
        Locale locale = Locale.forLanguageTag(user.getLangKey());
        Context context = new Context(locale);
        context.setVariable(USER, user);
        context.setVariable(BASE_URL, baseUrl);
        String content = templateEngine.process("preplacedwordResetEmail", context);
        String subject = messageSource.getMessage("email.reset.replacedle", null, locale);
        sendEmail(user.getEmail(), subject, content, false, true);
    }
}

17 View Source File : MailSenderFactory.java
License : GNU General Public License v3.0
Project Creator : halo-dev

/**
 * Get mail sender.
 *
 * @param mailProperties mail properties must not be null
 * @return java mail sender
 */
@NonNull
public JavaMailSender getMailSender(@NonNull MailProperties mailProperties) {
    replacedert.notNull(mailProperties, "Mail properties must not be null");
    // create mail sender
    JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
    // set properties
    setProperties(mailSender, mailProperties);
    return mailSender;
}

17 View Source File : MailUtil.java
License : MIT License
Project Creator : dengxiangjun

public static void send(String to, String subject, String text) {
    // 获取JavaMailSender bean
    JavaMailSenderImpl sender = (JavaMailSenderImpl) ctx.getBean("mailSender");
    // <span															// style="color: #ff0000;">注意SimpleMailMessage只能用来发送text格式的邮件</span>
    SimpleMailMessage mail = new SimpleMailMessage();
    try {
        mail.setFrom(sender.getUsername());
        // 接受者
        mail.setTo(to);
        // 主题
        mail.setSubject(subject);
        // 邮件内容
        mail.setText(text);
        sender.send(mail);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

17 View Source File : DataSendEmailJob.java
License : Apache License 2.0
Project Creator : chen87548081

/**
 * DataSendEmailJob
 *
 * @author chenweidong
 * @date 2017/11/14
 */
@Component
public clreplaced DataSendEmailJob {

    private final static Logger logger = LoggerFactory.getLogger(DataSendEmailJob.clreplaced);

    @Autowired
    private JavaMailSenderImpl mailSender;

    @Autowired
    private NginxLogService logService;

    @Scheduled(cron = "0 0 8 * * ? ")
    public // @Scheduled(cron = "0 53 15 * * ? ")
    void work() {
        Stopwatch stopwatch = Stopwatch.createStarted();
        Date now = new Date();
        // DateUtil.offsetDay(now, -1).toString("yyyyMMdd");
        Date begin = DateUtils.addHours(now, -8);
        Date end = DateUtils.addHours(now, -6);
        NginxLogExample example = new NginxLogExample();
        example.createCriteria().andCreateTimeBetween(begin, end).andSpiderTypeEqualTo(0);
        Integer pv = logService.countByExample(example);
        long uv = logService.countUvByExample(example);
        // 1 百度爬虫 2 google爬虫 3 bing爬虫 4 搜狗
        example.clear();
        example.createCriteria().andCreateTimeBetween(begin, end).andSpiderTypeEqualTo(1);
        long baiduzhizhu = logService.countByExample(example);
        example.clear();
        example.createCriteria().andCreateTimeBetween(begin, end).andSpiderTypeEqualTo(2);
        long googlezhizhu = logService.countByExample(example);
        example.clear();
        example.createCriteria().andCreateTimeBetween(begin, end).andSpiderTypeEqualTo(3);
        long bingzhizhu = logService.countByExample(example);
        example.clear();
        example.createCriteria().andCreateTimeBetween(begin, end).andSpiderTypeEqualTo(4);
        long sougouzhizhu = logService.countByExample(example);
        String htmlContent = getEmailHtml(DateUtil.offsetDay(now, -1).toString("yyyy-MM-dd") + "的PV UV", pv, uv, baiduzhizhu, googlezhizhu, bingzhizhu, sougouzhizhu);
        String yesterday = DateUtil.offsetDay(new Date(), -1).toString("yyyy-MM-dd");
        String prefix = "/home/chenweidong/feiqu/logs";
        File logFile = new File(prefix + "/cwd-web.log." + yesterday);
        File errorlogFile = new File(prefix + "/cwd-web.error.log." + yesterday);
        File gcLogFile = new File(prefix + "/gc.log");
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        try {
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "GBK");
            helper.setFrom(mailSender.getUsername());
            // 邮件主题
            helper.setSubject("社区前一天的PVUV");
            String[] tos = { "***@qq.com", "***@qq.com", "***@qq.com", "***@qq.com" };
            // 邮件接收者的邮箱地址
            helper.setTo(tos);
            helper.setText(htmlContent, true);
            // File logFile = new File("D:\\logs\\access_20171113.log");
            if (logFile.exists()) {
                helper.addAttachment("logfiles", logFile);
            }
            if (errorlogFile.exists()) {
                helper.addAttachment("errorlog", errorlogFile);
            }
            if (gcLogFile.exists()) {
                helper.addAttachment("gcLogFile", gcLogFile);
            }
            mailSender.send(mimeMessage);
        } catch (MessagingException e) {
            logger.error("发送邮件失败 ");
        } finally {
            boolean del = logFile.delete();
            if (!del) {
                logger.error("删除日志文件失败,{}", logFile.getPath());
            }
            boolean del2 = errorlogFile.delete();
            if (!del2) {
                logger.error("删除日志文件失败,{}", errorlogFile.getPath());
            }
            if (gcLogFile.exists()) {
                FileUtil.writeBytes(("每天更新\r\n").getBytes(), gcLogFile);
            }
        /*FileUtil.writeBytes((DateUtil.beginOfDay(now).toString() + "每天更新\r\n").getBytes(),
                    new File("/home/tomcat/apache-tomcat-8.5.8/logs/catalina.out"));*/
        }
        stopwatch.stop();
        long seconds = stopwatch.elapsed(TimeUnit.SECONDS);
        logger.info("nginx日志分析发送邮件,耗时{}秒", seconds);
    }

    private String getEmailHtml(String time, long pv, long uv, long baiduzhizhu, long googlezhizhu, long bingzhizhu, long sougouzhizhu) {
        String html = "<html><head>" + "<base target=\"_blank\">" + "<style type=\"text/css\">" + "::-webkit-scrollbar{ display: none; }" + "</style>" + "<style id=\"cloudAttachStyle\" type=\"text/css\">" + "#divNeteaseBigAttach, #divNeteaseBigAttach_bak{display:none;}" + "</style>" + "</head>" + "<body tabindex=\"0\" role=\"lisreplacedem\">" + "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"width: 600px; border: 1px solid #ddd; border-radius: 3px; color: #555; font-family: 'Helvetica Neue Regular',Helvetica,Arial,Tahoma,'Microsoft YaHei','San Francisco','微软雅黑','Hiragino Sans GB',STHeitiSC-Light; font-size: 12px; height: auto; margin: auto; overflow: hidden; text-align: left; word-break: break-all; word-wrap: break-word;\"> <tbody style=\"margin: 0; padding: 0;\"> <tr style=\"background-color: #393D49; height: 60px; margin: 0; padding: 0;\"> <td style=\"margin: 0; padding: 0;\"> <div style=\"color: #5EB576; margin: 0; margin-left: 30px; padding: 0;\"><a style=\"font-size: 14px; margin: 0; padding: 0; color: #5EB576; " + "text-decoration: none;\" href=\"http://www.flyfun.site/\" target=\"_blank\">flyfun社区</a></div> </td> </tr> " + "<tr style=\"margin: 0; padding: 0;\"> <td style=\"margin: 0; padding: 30px;\"> <p style=\"line-height: 20px; margin: 0; margin-bottom: 10px; padding: 0;\"> " + "你好,<em style=\"font-weight: 700;\">飞趣社区开发者</em>: </p> " + "<p style=\"line-height: 2; margin: 0; margin-bottom: 10px; padding: 0;\">  " + time + " </p> " + "<p style=\"line-height: 2; margin: 0; margin-bottom: 10px; padding: 0;\">  PV:" + pv + " </p> " + "<p style=\"line-height: 2; margin: 0; margin-bottom: 10px; padding: 0;\">  UV:" + uv + " </p> " + "<p style=\"line-height: 2; margin: 0; margin-bottom: 10px; padding: 0;\">  百度蜘蛛爬取次数:" + baiduzhizhu + " </p> " + "<p style=\"line-height: 2; margin: 0; margin-bottom: 10px; padding: 0;\">  google蜘蛛爬取次数:" + googlezhizhu + " </p> " + "<p style=\"line-height: 2; margin: 0; margin-bottom: 10px; padding: 0;\">  bing蜘蛛爬取次数:" + bingzhizhu + " </p> " + "<p style=\"line-height: 2; margin: 0; margin-bottom: 10px; padding: 0;\">  搜狗蜘蛛爬取次数:" + sougouzhizhu + " </p> " + "<div style=\"\"></div>  </td> </tr> <tr style=\"background-color: #fafafa; color: #999; height: 35px; margin: 0; padding: 0; text-align: center;\"> <td style=\"margin: 0; padding: 0;\">系统邮件,请勿直接回复。</td> </tr> </tbody> </table>" + "<style type=\"text/css\">" + "body{font-size:14px;font-family:arial,verdana,sans-serif;line-height:1.666;padding:0;margin:0;overflow:auto;white-space:normal;word-wrap:break-word;min-height:100px}" + "td, input, button, select, body{font-family:Helvetica, 'Microsoft Yahei', verdana}" + "pre {white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;width:95%}" + "th,td{font-family:arial,verdana,sans-serif;line-height:1.666}" + "img{ border:0}" + "header,footer,section,aside,article,nav,hgroup,figure,figcaption{display:block}" + "blockquote{margin-right:0px}" + "</style>" + "<style id=\"ntes_link_color\" type=\"text/css\">a,td a{color:#064977}</style>" + "</body></html>";
        return html;
    }

    public static void main(String[] args) {
        // System.out.println(DateUtil.offsetDay(new Date(), -1).toString("yyyy-MM-dd"));
        FileUtil.writeBytes((DateUtil.beginOfDay(new Date()).toString() + "每天更新\r\n").getBytes(), new File("D:\\cheninfo\\music\\catelina.out"));
    }
}

17 View Source File : AcmMailSender.java
License : GNU Lesser General Public License v3.0
Project Creator : ArkCase

public clreplaced AcmMailSender {

    private JavaMailSenderImpl smtpMailSender;

    private JavaMailSenderImpl smtpsMailSender;

    private EmailSenderConfig emailConfig;

    private static final Logger log = LogManager.getLogger(AcmMailSender.clreplaced);

    public void sendEmail(String recipient, String subject, String body) throws Exception {
        JavaMailSender mailSender = getMailSender();
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
        helper.setFrom(emailConfig.getUserFrom());
        helper.setTo(recipient);
        helper.setSubject(subject);
        helper.setText(body, true);
        mailSender.send(helper.getMimeMessage());
    }

    public void sendMultipartEmail(String recipient, String subject, String body, List<InputStreamDataSource> attachments) throws Exception {
        JavaMailSender mailSender = getMailSender();
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
        helper.setFrom(emailConfig.getUserFrom());
        helper.setTo(recipient);
        helper.setSubject(subject);
        helper.setText(body, true);
        attachments.forEach(attachment -> {
            try {
                helper.addAttachment(attachment.getName(), attachment);
            } catch (MessagingException e) {
                log.warn("Failed to add attachment [{}]. Cause: {}.", attachment.getName(), e.getMessage());
            }
        });
        mailSender.send(helper.getMimeMessage());
    }

    public EmailSenderConfig getEmailConfig() {
        return emailConfig;
    }

    public void setEmailConfig(EmailSenderConfig emailConfig) {
        this.emailConfig = emailConfig;
    }

    public void setSmtpMailSender(JavaMailSenderImpl smtpMailSender) {
        this.smtpMailSender = smtpMailSender;
    }

    public void setSmtpsMailSender(JavaMailSenderImpl smtpsMailSender) {
        this.smtpsMailSender = smtpsMailSender;
    }

    /**
     * Returns preconfigured mail sender instance depending on whether we use encryption or not.
     * The host, port, username and preplacedword values are set each time the sender is required since
     * the mail configuration can be changed on runtime.
     *
     * NOTE: The method is not thread safe but it is correct since EmailSenderConfig is the same for all threads.
     *
     * @return JavaMailSenderImpl
     */
    private JavaMailSenderImpl getMailSender() {
        log.debug("Mail sender configured with: encryption: [{}], host: [{}], port: [{}], username: [{}]", emailConfig.getEncryption(), emailConfig.getHost(), emailConfig.getPort(), emailConfig.getUsername());
        if (emailConfig.getEncryption().equals("starttls")) {
            smtpsMailSender.setHost(emailConfig.getHost());
            smtpsMailSender.setPort(emailConfig.getPort());
            smtpsMailSender.setUsername(emailConfig.getUsername());
            smtpsMailSender.setPreplacedword(emailConfig.getPreplacedword());
            return smtpsMailSender;
        } else {
            smtpMailSender.setHost(emailConfig.getHost());
            smtpMailSender.setPort(emailConfig.getPort());
            smtpMailSender.setUsername(emailConfig.getUsername());
            smtpMailSender.setPreplacedword(emailConfig.getPreplacedword());
            return smtpMailSender;
        }
    }
}

17 View Source File : MailServiceImpl.java
License : Apache License 2.0
Project Creator : anitechcs

/**
 * Email service implementation
 *
 * @author Tapas
 */
@Service
public clreplaced MailServiceImpl implements MailService {

    private final Logger log = LoggerFactory.getLogger(MailService.clreplaced);

    private static final String USER = "user";

    private static final String APP = "app";

    private static final String BASE_URL = "baseUrl";

    @Inject
    private TquestoProperties tquestoProperties;

    @Inject
    private JavaMailSenderImpl javaMailSender;

    @Inject
    private MessageSource messageSource;

    @Inject
    private SpringTemplateEngine templateEngine;

    @Async
    @Override
    public void sendEmail(String to, String subject, String content, boolean isMultipart, boolean isHtml) {
        log.debug("Send e-mail[multipart '{}' and html '{}'] to '{}' with subject '{}' and content={}", isMultipart, isHtml, to, subject, content);
        // Prepare message using a Spring helper
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        try {
            MimeMessageHelper message = new MimeMessageHelper(mimeMessage, isMultipart, CharEncoding.UTF_8);
            message.setTo(to);
            message.setFrom(tquestoProperties.getMail().getFrom());
            message.setSubject(subject);
            message.setText(content, isHtml);
            javaMailSender.send(mimeMessage);
            log.debug("Sent e-mail to User '{}'", to);
        } catch (Exception e) {
            log.warn("E-mail could not be sent to user '{}'", to, e);
        }
    }

    @Async
    @Override
    public void sendActivationEmail(User user, String baseUrl) {
        log.debug("Sending activation e-mail to '{}'", user.getEmail());
        Locale locale = Locale.forLanguageTag(user.getLangKey());
        Context context = new Context(locale);
        context.setVariable(USER, user);
        context.setVariable(BASE_URL, baseUrl);
        String content = templateEngine.process("activationEmail", context);
        String subject = messageSource.getMessage("email.activation.replacedle", null, locale);
        sendEmail(user.getEmail(), subject, content, false, true);
    }

    @Async
    @Override
    public void sendUserCreationEmail(User user, String baseUrl) {
        log.debug("Sending creation e-mail to '{}'", user.getEmail());
        Locale locale = Locale.forLanguageTag(user.getLangKey());
        Context context = new Context(locale);
        context.setVariable(USER, user);
        context.setVariable(BASE_URL, baseUrl);
        String content = templateEngine.process("userCreationEmail", context);
        String subject = messageSource.getMessage("email.activation.replacedle", null, locale);
        sendEmail(user.getEmail(), subject, content, false, true);
    }

    @Async
    @Override
    public void sendPreplacedwordResetMail(User user, String baseUrl) {
        log.debug("Sending preplacedword reset e-mail to '{}'", user.getEmail());
        Locale locale = Locale.forLanguageTag(user.getLangKey());
        Context context = new Context(locale);
        context.setVariable(USER, user);
        context.setVariable(BASE_URL, baseUrl);
        String content = templateEngine.process("preplacedwordResetEmail", context);
        String subject = messageSource.getMessage("email.reset.replacedle", null, locale);
        sendEmail(user.getEmail(), subject, content, false, true);
    }

    @Async
    @Override
    public void sendAppCreationEmail(User user, App app, String baseUrl) {
        log.debug("Sending App creation e-mail to '{}'", user.getEmail());
        Locale locale = Locale.forLanguageTag(user.getLangKey());
        Context context = new Context(locale);
        context.setVariable(USER, user);
        context.setVariable(APP, app);
        context.setVariable(BASE_URL, baseUrl);
        String content = templateEngine.process("appCreationEmail", context);
        String subject = messageSource.getMessage("email.activation.replacedle", null, locale);
        sendEmail(user.getEmail(), subject, content, false, true);
    }
}

16 View Source File : EmailServiceImpl.java
License : MIT License
Project Creator : zzzzbw

/**
 * 获取MailSender
 *
 * @param host     主机名
 * @param port     端口
 * @param username 邮件名
 * @param preplacedword 密码
 * @return MailSender
 */
private MailSender mailSender(String host, Integer port, String username, String preplacedword) {
    JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
    mailSender.setHost(host);
    mailSender.setPort(port);
    mailSender.setUsername(username);
    mailSender.setPreplacedword(preplacedword);
    return mailSender;
}

16 View Source File : MailProviderService.java
License : Apache License 2.0
Project Creator : xm-online

private JavaMailSender createMailSender(MailProviderConfig config) {
    JavaMailSenderImpl sender = new JavaMailSenderImpl();
    sender.setHost(config.getHost());
    if (config.getPort() != null) {
        sender.setPort(config.getPort());
    }
    sender.setUsername(config.getUsername());
    sender.setPreplacedword(config.getPreplacedword());
    sender.setProtocol(config.getProtocol());
    if (config.getDefaultEncoding() != null) {
        sender.setDefaultEncoding(config.getDefaultEncoding().name());
    }
    if (!config.getProperties().isEmpty()) {
        sender.setJavaMailProperties(asProperties(config.getProperties()));
    }
    return sender;
}

16 View Source File : MailServiceIntTest.java
License : Apache License 2.0
Project Creator : xebialabs

@RunWith(SpringRunner.clreplaced)
@SpringBootTest(clreplacedes = StoreApp.clreplaced)
public clreplaced MailServiceIntTest {

    @Autowired
    private JHipsterProperties jHipsterProperties;

    @Autowired
    private MessageSource messageSource;

    @Autowired
    private SpringTemplateEngine templateEngine;

    @Spy
    private JavaMailSenderImpl javaMailSender;

    @Captor
    private ArgumentCaptor<MimeMessage> messageCaptor;

    private MailService mailService;

    @Before
    public void setup() {
        MockitoAnnotations.initMocks(this);
        doNothing().when(javaMailSender).send(any(MimeMessage.clreplaced));
        mailService = new MailService(jHipsterProperties, javaMailSender, messageSource, templateEngine);
    }

    @Test
    public void testSendEmail() throws Exception {
        mailService.sendEmail("[email protected]", "testSubject", "testContent", false, false);
        verify(javaMailSender).send(messageCaptor.capture());
        MimeMessage message = messageCaptor.getValue();
        replacedertThat(message.getSubject()).isEqualTo("testSubject");
        replacedertThat(message.getAllRecipients()[0].toString()).isEqualTo("[email protected]");
        replacedertThat(message.getFrom()[0].toString()).isEqualTo("test@localhost");
        replacedertThat(message.getContent()).isInstanceOf(String.clreplaced);
        replacedertThat(message.getContent().toString()).isEqualTo("testContent");
        replacedertThat(message.getDataHandler().getContentType()).isEqualTo("text/plain; charset=UTF-8");
    }

    @Test
    public void testSendHtmlEmail() throws Exception {
        mailService.sendEmail("[email protected]", "testSubject", "testContent", false, true);
        verify(javaMailSender).send(messageCaptor.capture());
        MimeMessage message = messageCaptor.getValue();
        replacedertThat(message.getSubject()).isEqualTo("testSubject");
        replacedertThat(message.getAllRecipients()[0].toString()).isEqualTo("[email protected]");
        replacedertThat(message.getFrom()[0].toString()).isEqualTo("test@localhost");
        replacedertThat(message.getContent()).isInstanceOf(String.clreplaced);
        replacedertThat(message.getContent().toString()).isEqualTo("testContent");
        replacedertThat(message.getDataHandler().getContentType()).isEqualTo("text/html;charset=UTF-8");
    }

    @Test
    public void testSendMultipartEmail() throws Exception {
        mailService.sendEmail("[email protected]", "testSubject", "testContent", true, false);
        verify(javaMailSender).send(messageCaptor.capture());
        MimeMessage message = messageCaptor.getValue();
        MimeMultipart mp = (MimeMultipart) message.getContent();
        MimeBodyPart part = (MimeBodyPart) ((MimeMultipart) mp.getBodyPart(0).getContent()).getBodyPart(0);
        ByteArrayOutputStream aos = new ByteArrayOutputStream();
        part.writeTo(aos);
        replacedertThat(message.getSubject()).isEqualTo("testSubject");
        replacedertThat(message.getAllRecipients()[0].toString()).isEqualTo("[email protected]");
        replacedertThat(message.getFrom()[0].toString()).isEqualTo("test@localhost");
        replacedertThat(message.getContent()).isInstanceOf(Multipart.clreplaced);
        replacedertThat(aos.toString()).isEqualTo("\r\ntestContent");
        replacedertThat(part.getDataHandler().getContentType()).isEqualTo("text/plain; charset=UTF-8");
    }

    @Test
    public void testSendMultipartHtmlEmail() throws Exception {
        mailService.sendEmail("[email protected]", "testSubject", "testContent", true, true);
        verify(javaMailSender).send(messageCaptor.capture());
        MimeMessage message = messageCaptor.getValue();
        MimeMultipart mp = (MimeMultipart) message.getContent();
        MimeBodyPart part = (MimeBodyPart) ((MimeMultipart) mp.getBodyPart(0).getContent()).getBodyPart(0);
        ByteArrayOutputStream aos = new ByteArrayOutputStream();
        part.writeTo(aos);
        replacedertThat(message.getSubject()).isEqualTo("testSubject");
        replacedertThat(message.getAllRecipients()[0].toString()).isEqualTo("[email protected]");
        replacedertThat(message.getFrom()[0].toString()).isEqualTo("test@localhost");
        replacedertThat(message.getContent()).isInstanceOf(Multipart.clreplaced);
        replacedertThat(aos.toString()).isEqualTo("\r\ntestContent");
        replacedertThat(part.getDataHandler().getContentType()).isEqualTo("text/html;charset=UTF-8");
    }

    @Test
    public void testSendEmailFromTemplate() throws Exception {
        User user = new User();
        user.setLogin("john");
        user.setEmail("[email protected]");
        user.setLangKey("en");
        mailService.sendEmailFromTemplate(user, "mail/testEmail", "email.test.replacedle");
        verify(javaMailSender).send(messageCaptor.capture());
        MimeMessage message = messageCaptor.getValue();
        replacedertThat(message.getSubject()).isEqualTo("test replacedle");
        replacedertThat(message.getAllRecipients()[0].toString()).isEqualTo(user.getEmail());
        replacedertThat(message.getFrom()[0].toString()).isEqualTo("test@localhost");
        replacedertThat(message.getContent().toString()).isEqualToNormalizingNewlines("<html>test replacedle, http://127.0.0.1:8080, john</html>\n");
        replacedertThat(message.getDataHandler().getContentType()).isEqualTo("text/html;charset=UTF-8");
    }

    @Test
    public void testSendActivationEmail() throws Exception {
        User user = new User();
        user.setLangKey(Constants.DEFAULT_LANGUAGE);
        user.setLogin("john");
        user.setEmail("[email protected]");
        mailService.sendActivationEmail(user);
        verify(javaMailSender).send(messageCaptor.capture());
        MimeMessage message = messageCaptor.getValue();
        replacedertThat(message.getAllRecipients()[0].toString()).isEqualTo(user.getEmail());
        replacedertThat(message.getFrom()[0].toString()).isEqualTo("test@localhost");
        replacedertThat(message.getContent().toString()).isNotEmpty();
        replacedertThat(message.getDataHandler().getContentType()).isEqualTo("text/html;charset=UTF-8");
    }

    @Test
    public void testCreationEmail() throws Exception {
        User user = new User();
        user.setLangKey(Constants.DEFAULT_LANGUAGE);
        user.setLogin("john");
        user.setEmail("[email protected]");
        mailService.sendCreationEmail(user);
        verify(javaMailSender).send(messageCaptor.capture());
        MimeMessage message = messageCaptor.getValue();
        replacedertThat(message.getAllRecipients()[0].toString()).isEqualTo(user.getEmail());
        replacedertThat(message.getFrom()[0].toString()).isEqualTo("test@localhost");
        replacedertThat(message.getContent().toString()).isNotEmpty();
        replacedertThat(message.getDataHandler().getContentType()).isEqualTo("text/html;charset=UTF-8");
    }

    @Test
    public void testSendPreplacedwordResetMail() throws Exception {
        User user = new User();
        user.setLangKey(Constants.DEFAULT_LANGUAGE);
        user.setLogin("john");
        user.setEmail("[email protected]");
        mailService.sendPreplacedwordResetMail(user);
        verify(javaMailSender).send(messageCaptor.capture());
        MimeMessage message = messageCaptor.getValue();
        replacedertThat(message.getAllRecipients()[0].toString()).isEqualTo(user.getEmail());
        replacedertThat(message.getFrom()[0].toString()).isEqualTo("test@localhost");
        replacedertThat(message.getContent().toString()).isNotEmpty();
        replacedertThat(message.getDataHandler().getContentType()).isEqualTo("text/html;charset=UTF-8");
    }

    @Test
    public void testSendEmailWithException() throws Exception {
        doThrow(MailSendException.clreplaced).when(javaMailSender).send(any(MimeMessage.clreplaced));
        mailService.sendEmail("[email protected]", "testSubject", "testContent", false, false);
    }
}

16 View Source File : NotifyAutoConfiguration.java
License : GNU General Public License v3.0
Project Creator : wlhbdp

@Bean
public JavaMailSender mailSender() {
    NotifyProperties.Mail mailConfig = properties.getMail();
    JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
    mailSender.setHost(mailConfig.getHost());
    mailSender.setUsername(mailConfig.getUsername());
    mailSender.setPreplacedword(mailConfig.getPreplacedword());
    return mailSender;
}

16 View Source File : MailService.java
License : Apache License 2.0
Project Creator : WeBankFinTech

/**
 * Send mail Service including config JavaMailSender and mail content
 */
@Log4j2
@Service
public clreplaced MailService {

    @Autowired()
    @Qualifier("mailSender")
    JavaMailSenderImpl mailSender;

    @Autowired
    TemplateEngine templateEngine;

    @Autowired
    AlertRuleMapper alertRuleMapper;

    @Autowired
    MailServerConfigService mailServerConfigService;

    @Autowired
    AccountMapper accountMapper;

    @Autowired
    AlertLogService alertLogService;

    /**
     * Java Mail Sender Implement config
     * Server config replace default config in yml
     * use the last one in db's table 'tb_mail_server_config' in @Param latestMailServerConfig
     */
    public void refreshJavaMailSenderConfigFromDB() {
        log.debug("start refreshJavaMailSenderConfigFromDB. ");
        TbMailServerConfig latestMailServerConfig = mailServerConfigService.getLatestMailServerConfig();
        // refresh Java mail sender config
        initJavaMailSenderConfig(latestMailServerConfig);
        log.debug("end refreshJavaMailSenderConfigFromDB latestMailServerConfig:{}", latestMailServerConfig);
    }

    /**
     * Java Mail Sender Implement config
     * Server config replace default config in yml
     * use the configs from web's request body @Param reqMailServerConfigParam
     *
     * web's config has been check in MailController,
     * but @protocol and @sslProperties need check if empty,
     * init it from db's config, see function @initJavaMailProperties and @checkMailServerConfigAndInit
     */
    public void refreshJavaMailSenderConfigFromWeb(ReqMailServerConfigParam reqMailServerConfigParam) {
        log.debug("start refreshJavaMailSenderConfigFromWeb. reqMailServerConfigParam:{}", reqMailServerConfigParam);
        // init empty param from db
        ReqMailServerConfigParam reqConfigParamAfterInit = checkMailServerConfigAndInit(reqMailServerConfigParam);
        TbMailServerConfig tempMailServerConfigFromWeb = new TbMailServerConfig();
        BeanUtils.copyProperties(reqConfigParamAfterInit, tempMailServerConfigFromWeb);
        // refresh Java mail sender config
        initJavaMailSenderConfig(tempMailServerConfigFromWeb);
        log.debug("end refreshJavaMailSenderConfigFromWeb tempMailServerConfigFromWeb:{}", tempMailServerConfigFromWeb);
    }

    /**
     * latestMailServerConfig might come from db or web
     * @param latestMailServerConfig
     */
    public void initJavaMailSenderConfig(TbMailServerConfig latestMailServerConfig) {
        log.debug("start initJavaMailSenderConfig. latestMailServerConfig:{}", latestMailServerConfig);
        mailSender.setHost(latestMailServerConfig.getHost());
        mailSender.setPort(latestMailServerConfig.getPort());
        Boolean isAuthEnable = latestMailServerConfig.getAuthentication() == EnableStatus.ON.getValue();
        if (isAuthEnable) {
            mailSender.setUsername(latestMailServerConfig.getUsername());
            mailSender.setPreplacedword(latestMailServerConfig.getPreplacedword());
        }
        mailSender.setDefaultEncoding(latestMailServerConfig.getDefaultEncoding());
        mailSender.setProtocol(latestMailServerConfig.getProtocol());
        // init properties
        Properties sslProperties = initJavaMailProperties(latestMailServerConfig);
        log.debug("end initJavaMailSenderConfig. sslProperties:{}", sslProperties);
        mailSender.setJavaMailProperties(sslProperties);
    }

    /**
     * set properties of JavaMailSender's config
     * set " + protocolName + "/pop3/imap java mailsender configuration
     */
    private Properties initJavaMailProperties(TbMailServerConfig latestMailServerConfig) {
        // set SMTP JavaMailProperties such as ssl configuration
        Properties sslProperties = new Properties();
        Boolean isAuthEnable = latestMailServerConfig.getAuthentication() == EnableStatus.ON.getValue();
        String protocolName = latestMailServerConfig.getProtocol().toLowerCase();
        sslProperties.setProperty("mail." + protocolName + ".auth", String.valueOf(isAuthEnable));
        Boolean isSTARTTLSEnable = latestMailServerConfig.getStarttlsEnable() == EnableStatus.ON.getValue();
        ;
        sslProperties.setProperty("mail." + protocolName + ".starttls.enable", String.valueOf(isSTARTTLSEnable));
        // 设置读取超时时间,连接超时时间、、写入超时时间
        sslProperties.setProperty("mail." + protocolName + ".timeout", String.valueOf(latestMailServerConfig.getTimeout()));
        sslProperties.setProperty("mail." + protocolName + ".connectiontimeout", String.valueOf(latestMailServerConfig.getConnectionTimeout()));
        sslProperties.setProperty("mail." + protocolName + ".writetimeout", String.valueOf(latestMailServerConfig.getWriteTimeout()));
        // if required starttls is true, set ssl configuration
        Boolean isSTARTTLSRequired = (latestMailServerConfig.getStarttlsRequired() == EnableStatus.ON.getValue());
        if (isSTARTTLSRequired) {
            sslProperties.setProperty("mail." + protocolName + ".starttls.required", String.valueOf(isSTARTTLSRequired));
            sslProperties.setProperty("mail." + protocolName + ".socketFactory.port", String.valueOf(latestMailServerConfig.getSocketFactoryPort()));
            sslProperties.setProperty("mail." + protocolName + ".socketFactory.clreplaced", latestMailServerConfig.getSocketFactoryClreplaced());
            Boolean isUsingFallback = latestMailServerConfig.getSocketFactoryFallback() == EnableStatus.ON.getValue();
            sslProperties.setProperty("mail." + protocolName + ".socketFactory.fallback", String.valueOf(isUsingFallback));
        }
        return sslProperties;
    }

    /**
     * @param ruleId 用户选择一条rule,从db获取
     * @param replacementText 实际值的参数,用于替代emailContent中的变量
     *                        如0x22实际nodeId替代节点告警的nodeId变量,
     * alert mail content comes from db's default alert_rule,
     * using @param replace variable in alert_rule,
     * then fill in resources/templates/xx.html's variable
     */
    public void sendMailByRule(int ruleId, String replacementText) {
        log.debug("start sendMailByRule ruleId:{},replacementText:{}", ruleId, replacementText);
        TbMailServerConfig latestMailServerConfig = mailServerConfigService.getLatestMailServerConfig();
        // if mail server not turn ON
        if (latestMailServerConfig.getEnable() == EnableStatus.OFF.getValue()) {
            log.warn("end sendMailByRule for server config not enable:{}", latestMailServerConfig);
            return;
        }
        TbAlertRule alertRule = alertRuleMapper.queryByRuleId(ruleId);
        // if alert not activated
        if (alertRule.getEnable() == EnableStatus.OFF.getValue()) {
            log.warn("end sendMailByRule non-sending mail for alertRule not enabled:{}", alertRule);
            return;
        }
        // if userList is empty or default email
        if (StringUtils.isEmpty(alertRule.getUserList())) {
            log.error("end sendMailByRule for no receive mail address:{}", alertRule);
            return;
        }
        String emailreplacedle = AlertRuleTools.getAlertTypeStrFromEnum(alertRule.getAlertType());
        /* handle email alert content */
        // default content
        String defaultEmailContent = alertRule.getAlertContent();
        // params to be replaced
        String emailContentParam2Replace = alertRule.getContentParamList();
        String emailContentAfterReplace = AlertRuleTools.processMailContent(defaultEmailContent, emailContentParam2Replace, replacementText);
        // init thymeleaf email template
        Context context = new Context();
        context.setVariable("replaceContent", emailContentAfterReplace);
        // add date in content
        SimpleDateFormat formatTool = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        context.setVariable("time", formatTool.format(new Date()));
        String emailFinalContent = templateEngine.process("AlertEmailTemplate", context);
        // save alert to log
        alertLogService.saveAlertLogByRuleAndContent(alertRule.getAlertLevel(), alertRule.getAlertType(), emailContentAfterReplace);
        // refresh JavaMailSender's config from db
        refreshJavaMailSenderConfigFromDB();
        // 将告警发到userList,如果是全选用户
        handleAllUserEmail(alertRule, emailreplacedle, emailFinalContent);
        // update alert rule's last alertTime
        alertRule.setLastAlertTime(LocalDateTime.now());
        log.debug("sendMailByRule update alert rule's lastAlertTime updateAlertTime:{}", alertRule);
        alertRuleMapper.update(alertRule);
        log.debug("end sendMailByRule. ");
    }

    /**
     * support List of replacement
     * @param ruleId
     * @param replacementTextList
     */
    public void sendMailByRule(int ruleId, List<String> replacementTextList) {
        log.debug("start sendMailByRule ruleId:{},replacementTextList:{}", ruleId, replacementTextList);
        TbMailServerConfig latestMailServerConfig = mailServerConfigService.getLatestMailServerConfig();
        // if mail server not turn ON
        if (latestMailServerConfig.getEnable() == EnableStatus.OFF.getValue()) {
            log.warn("end sendMailByRule for server config not enable:{}", latestMailServerConfig);
            return;
        }
        TbAlertRule alertRule = alertRuleMapper.queryByRuleId(ruleId);
        // if alert not activated
        if (alertRule.getEnable() == EnableStatus.OFF.getValue()) {
            log.warn("end sendMailByRule non-sending mail for alertRule not enabled:{}", alertRule);
            return;
        }
        // last time alert by now, if within interval, not send
        // 告警间隔时间的刷新放到遍历group异常的for循环外面
        // if(isWithinAlertIntervalByNow(alertRule)) {
        // log.debug("end sendMailByRule non-sending mail for beyond alert interval:{}", alertRule);
        // return;
        // }
        // if userList is empty or default email
        if (StringUtils.isEmpty(alertRule.getUserList())) {
            log.error("end sendMailByRule for no receive mail address:{}", alertRule);
            return;
        }
        String emailreplacedle = AlertRuleTools.getAlertTypeStrFromEnum(alertRule.getAlertType());
        /* handle email alert content */
        // default content
        String defaultEmailContent = alertRule.getAlertContent();
        // params to be replaced
        String emailContentParam2Replace = alertRule.getContentParamList();
        String emailContentAfterReplace = AlertRuleTools.processMailContent(defaultEmailContent, emailContentParam2Replace, replacementTextList);
        // init thymeleaf email template
        Context context = new Context();
        context.setVariable("replaceContent", emailContentAfterReplace);
        // add date in content
        SimpleDateFormat formatTool = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        context.setVariable("time", formatTool.format(new Date()));
        String emailFinalContent = templateEngine.process("AlertEmailTemplate", context);
        // save alert to log
        alertLogService.saveAlertLogByRuleAndContent(alertRule.getAlertLevel(), alertRule.getAlertType(), emailContentAfterReplace);
        // refresh JavaMailSender's config from db
        refreshJavaMailSenderConfigFromDB();
        // 将告警发到userList,如果是全选用户
        handleAllUserEmail(alertRule, emailreplacedle, emailFinalContent);
        // update alert rule's last alertTime
        alertRule.setLastAlertTime(LocalDateTime.now());
        log.debug("sendMailByRule update alert rule's lastAlertTime updateAlertTime:{}", alertRule);
        alertRuleMapper.update(alertRule);
        log.debug("end sendMailByRule. ");
    }

    /**
     * handle email sending to multiple users or sending to all user
     * @param alertRule
     * @param emailreplacedle
     * @param emailFinalContent
     */
    public void handleAllUserEmail(TbAlertRule alertRule, String emailreplacedle, String emailFinalContent) {
        log.debug("start handleAllUserEmail alertRule:{},emailreplacedle:{},emailFinalContent:{}", emailreplacedle, emailreplacedle, emailFinalContent);
        // get from address
        TbMailServerConfig latestMailServerConfig = mailServerConfigService.getLatestMailServerConfig();
        String fromMailAddress = latestMailServerConfig.getUsername();
        // 将告警发到userList,如果是全选用户
        if (alertRule.getIsAllUser() == EnableStatus.ON.getValue()) {
            AccountListParam accountListParam = new AccountListParam();
            List<TbAccountInfo> allAccountList = accountMapper.listOfAccount(accountListParam);
            for (TbAccountInfo accountInfo : allAccountList) {
                String accountEmailAddress = accountInfo.getEmail();
                if (!"".equals(accountEmailAddress) && accountEmailAddress != null) {
                    sendMailBare(fromMailAddress, accountEmailAddress, emailreplacedle, emailFinalContent);
                }
            }
            log.debug("end handleAllUserEmail. ");
        } else {
            List<String> userList = new ArrayList<>();
            try {
                userList = JsonTools.toJavaObjectList(alertRule.getUserList(), String.clreplaced);
                if (userList == null) {
                    log.error("parse json error");
                }
            } catch (Exception e) {
                log.error("handleAllUserEmail parse error: e:{}, getUserList{}", e, alertRule.getUserList());
            }
            for (String userMailAddress : userList) {
                try {
                    log.debug("handleAllUserEmail sending email fromMailAddress:{},fromMailAddress:{}," + "emailreplacedle:{},emailFinalContent:{}", fromMailAddress, userMailAddress, emailreplacedle, emailFinalContent);
                    sendMailBare(fromMailAddress, userMailAddress, emailreplacedle, emailFinalContent);
                } catch (Exception e) {
                    log.error("handleAllUserEmail send email error:[]", e);
                }
            }
            log.debug("end handleAllUserEmail. ");
        }
    }

    /**
     * 发送邮件基类
     * @param from
     * @param to
     * @param emailreplacedle
     * @param emailFinalContent
     */
    public void sendMailBare(String from, String to, String emailreplacedle, String emailFinalContent) {
        log.debug("start sendMailBare from:{},to:{},emailreplacedle:{},emailFinalContent:{}", from, to, emailreplacedle, emailFinalContent);
        // refresh java mail sender config from db, cover yml's config
        // refreshJavaMailSenderConfigFromDB();
        MimeMessage message = mailSender.createMimeMessage();
        MimeMessageHelper helper = null;
        try {
            helper = new MimeMessageHelper(message, true);
            helper.setFrom(from);
            helper.setTo(to);
            helper.setSubject(emailreplacedle);
            helper.setText(emailFinalContent, true);
        } catch (MessagingException e) {
            log.error("sendMailBare error:[]", e);
            e.printStackTrace();
        }
        log.debug("end sendMailBare MimeMessage:{}", message);
        mailSender.send(message);
    }

    /**
     * init empty param from db
     * @param reqMailServerConfigParam
     * @return param after fill up with db's config
     */
    public ReqMailServerConfigParam checkMailServerConfigAndInit(ReqMailServerConfigParam reqMailServerConfigParam) {
        TbMailServerConfig configFromDB = mailServerConfigService.getLatestMailServerConfig();
        if (reqMailServerConfigParam.getProtocol() == null) {
            reqMailServerConfigParam.setProtocol(configFromDB.getProtocol());
        }
        if (reqMailServerConfigParam.getDefaultEncoding() == null) {
            reqMailServerConfigParam.setDefaultEncoding(configFromDB.getDefaultEncoding());
        }
        if (reqMailServerConfigParam.getStarttlsEnable() == null) {
            reqMailServerConfigParam.setStarttlsEnable(configFromDB.getStarttlsEnable());
        }
        if (reqMailServerConfigParam.getConnectionTimeout() == null) {
            reqMailServerConfigParam.setConnectionTimeout(configFromDB.getConnectionTimeout());
        }
        if (reqMailServerConfigParam.getTimeout() == null) {
            reqMailServerConfigParam.setTimeout(configFromDB.getTimeout());
        }
        if (reqMailServerConfigParam.getWriteTimeout() == null) {
            reqMailServerConfigParam.setWriteTimeout(configFromDB.getWriteTimeout());
        }
        if (reqMailServerConfigParam.getStarttlsRequired() == null) {
            reqMailServerConfigParam.setStarttlsRequired(configFromDB.getStarttlsRequired());
        } else if (reqMailServerConfigParam.getStarttlsRequired() == EnableStatus.ON.getValue()) {
            // init socket ssl config from db
            if (reqMailServerConfigParam.getSocketFactoryClreplaced() == null) {
                reqMailServerConfigParam.setSocketFactoryClreplaced(configFromDB.getSocketFactoryClreplaced());
            }
            if (reqMailServerConfigParam.getSocketFactoryFallback() == null) {
                reqMailServerConfigParam.setSocketFactoryFallback(configFromDB.getSocketFactoryFallback());
            }
            if (reqMailServerConfigParam.getSocketFactoryPort() == null) {
                reqMailServerConfigParam.setSocketFactoryPort(configFromDB.getSocketFactoryPort());
            }
        }
        return reqMailServerConfigParam;
    }
}

@Loggable(service = "email", method = "send")
@Component
public clreplaced MailSenderImpl extends Sender {

    private static final Logger LOGGER = LoggerFactory.getLogger(MailSenderImpl.clreplaced);

    private JavaMailSenderImpl mailSender;

    private Properties properties;

    public MailSenderImpl() {
        properties = getProperties();
        initMailSender();
    }

    @Override
    public void send(final String replacedle, final String text, final List<String> recipients) {
        MimeMessagePreparator preparator = mimeMessage -> {
            MimeMessageHelper message = new MimeMessageHelper(mimeMessage);
            message.setTo(toInternetAddresses(recipients));
            message.setFrom(properties.getProperty("sender"));
            message.setSubject(replacedle);
            message.setSentDate(new Date());
            message.setText(text, true);
        };
        LOGGER.debug("send mail with replacedle: {}", replacedle);
        mailSender.send(preparator);
    }

    private InternetAddress[] toInternetAddresses(List<String> recipients) {
        InternetAddress[] addresses = new InternetAddress[recipients.size()];
        for (int i = 0; i < recipients.size(); i++) {
            try {
                addresses[i] = new InternetAddress(recipients.get(i));
            } catch (AddressException e) {
                LOGGER.error("Invalid email address", e);
                addresses[i] = new InternetAddress();
            }
        }
        return addresses;
    }

    private void initMailSender() {
        mailSender = new JavaMailSenderImpl();
        mailSender.setHost(properties.getProperty("server"));
        mailSender.setPort(Integer.parseInt(properties.getProperty("port")));
        mailSender.setDefaultEncoding("UTF-8");
    }
}

16 View Source File : DefaultMailSender.java
License : Apache License 2.0
Project Creator : sohutv

/**
 * 默认实现
 *
 * @author yongfeigao
 * @date 2018年10月10日
 */
@Component
public clreplaced DefaultMailSender implements MailSender {

    private Logger logger = LoggerFactory.getLogger(this.getClreplaced());

    @Autowired
    private MQCloudConfigHelper mqCloudConfigHelper;

    private volatile JavaMailSenderImpl mailSender;

    /**
     * 初始化mail发送
     */
    public void init() {
        if (mqCloudConfigHelper == null) {
            logger.warn("init mail sender err, mqCloudConfigHelper is null!");
            return;
        }
        try {
            JavaMailSenderImpl tempMailSender = new JavaMailSenderImpl();
            tempMailSender.setHost(mqCloudConfigHelper.getMailHost());
            tempMailSender.setPort(mqCloudConfigHelper.getMailPort());
            tempMailSender.setProtocol(mqCloudConfigHelper.getMailProtocol());
            tempMailSender.setUsername(mqCloudConfigHelper.getMailUsername());
            tempMailSender.setPreplacedword(mqCloudConfigHelper.getMailPreplacedword());
            Properties props = new Properties();
            props.put("mail." + mqCloudConfigHelper.getMailProtocol() + ".auth", true);
            props.put("mail." + mqCloudConfigHelper.getMailProtocol() + ".connectiontimeout", mqCloudConfigHelper.getMailTimeout());
            props.put("mail." + mqCloudConfigHelper.getMailProtocol() + ".timeout", mqCloudConfigHelper.getMailTimeout());
            tempMailSender.setJavaMailProperties(props);
            tempMailSender.testConnection();
            // 连接成功赋值
            mailSender = tempMailSender;
            if (logger.isDebugEnabled()) {
                logger.debug("init mail sender ok, mailHost:{}, mailPort:{}, mailProtocol:{}, mailUserName:{}, " + "mailPreplacedword:{}, mailTimeout:{}ms, err:{}", mqCloudConfigHelper.getMailHost(), mqCloudConfigHelper.getMailPort(), mqCloudConfigHelper.getMailProtocol(), mqCloudConfigHelper.getMailUsername(), mqCloudConfigHelper.getMailPreplacedword(), mqCloudConfigHelper.getMailTimeout());
            }
        } catch (Exception e) {
            logger.warn("init mail sender err, mailHost:{}, mailPort:{}, mailProtocol:{}, mailUserName:{}, " + "mailPreplacedword:{}, mailTimeout:{}ms, err:{}", mqCloudConfigHelper.getMailHost(), mqCloudConfigHelper.getMailPort(), mqCloudConfigHelper.getMailProtocol(), mqCloudConfigHelper.getMailUsername(), mqCloudConfigHelper.getMailPreplacedword(), mqCloudConfigHelper.getMailTimeout(), e.getMessage());
        }
    }

    /**
     * 配置改变
     */
    @EventListener
    public void configChange(MQCloudConfigEvent mqCloudConfigEvent) {
        init();
    }

    @Override
    public boolean send(String replacedle, String content, String email) {
        return send(replacedle, content, email, null, 0);
    }

    @Override
    public boolean send(String replacedle, String content, String email, int timeout) {
        return send(replacedle, content, email, null, timeout);
    }

    @Override
    public boolean send(String replacedle, String content, String email, String ccEmail, int timeout) {
        if (mailSender == null) {
            logger.warn("mailSender is null, replacedle:{}, email:{}, content:{}", replacedle, email, content);
            return true;
        }
        try {
            MimeMessage mimeMessage = buildMessage(replacedle, content, email, ccEmail);
            if (mimeMessage == null) {
                return false;
            }
            mailSender.send(mimeMessage);
        } catch (Exception e) {
            logger.error("send msg replacedle:{}, email:{}, content:{}, ccEmail:{}, timeout:{}", replacedle, email, content, ccEmail, timeout, e);
        }
        return true;
    }

    /**
     * 构建邮件
     * @param replacedle
     * @param content
     * @param email
     * @param cc
     * @return
     * @throws MessagingException
     */
    private MimeMessage buildMessage(String replacedle, String content, String email, String cc) throws MessagingException {
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "utf-8");
        helper.setFrom(mqCloudConfigHelper.getMailUsername());
        helper.setTo(email.split(","));
        helper.setSubject(replacedle);
        helper.setText(content, true);
        if (cc != null) {
            helper.setCc(cc.split(","));
        }
        return mimeMessage;
    }

    public void setMqCloudConfigHelper(MQCloudConfigHelper mqCloudConfigHelper) {
        this.mqCloudConfigHelper = mqCloudConfigHelper;
    }
}

16 View Source File : MailServiceIntTest.java
License : MIT License
Project Creator : PacktPublishing

@RunWith(SpringRunner.clreplaced)
@SpringBootTest(clreplacedes = GdpApp.clreplaced)
public clreplaced MailServiceIntTest {

    @Autowired
    private JHipsterProperties jHipsterProperties;

    @Autowired
    private MessageSource messageSource;

    @Autowired
    private SpringTemplateEngine templateEngine;

    @Spy
    private JavaMailSenderImpl javaMailSender;

    @Captor
    private ArgumentCaptor<MimeMessage> messageCaptor;

    private MailService mailService;

    @Before
    public void setup() {
        MockitoAnnotations.initMocks(this);
        doNothing().when(javaMailSender).send(any(MimeMessage.clreplaced));
        mailService = new MailService(jHipsterProperties, javaMailSender, messageSource, templateEngine);
    }

    @Test
    public void testSendEmail() throws Exception {
        mailService.sendEmail("[email protected]", "testSubject", "testContent", false, false);
        verify(javaMailSender).send(messageCaptor.capture());
        MimeMessage message = messageCaptor.getValue();
        replacedertThat(message.getSubject()).isEqualTo("testSubject");
        replacedertThat(message.getAllRecipients()[0].toString()).isEqualTo("[email protected]");
        replacedertThat(message.getFrom()[0].toString()).isEqualTo("test@localhost");
        replacedertThat(message.getContent()).isInstanceOf(String.clreplaced);
        replacedertThat(message.getContent().toString()).isEqualTo("testContent");
        replacedertThat(message.getDataHandler().getContentType()).isEqualTo("text/plain; charset=UTF-8");
    }

    @Test
    public void testSendHtmlEmail() throws Exception {
        mailService.sendEmail("[email protected]", "testSubject", "testContent", false, true);
        verify(javaMailSender).send(messageCaptor.capture());
        MimeMessage message = messageCaptor.getValue();
        replacedertThat(message.getSubject()).isEqualTo("testSubject");
        replacedertThat(message.getAllRecipients()[0].toString()).isEqualTo("[email protected]");
        replacedertThat(message.getFrom()[0].toString()).isEqualTo("test@localhost");
        replacedertThat(message.getContent()).isInstanceOf(String.clreplaced);
        replacedertThat(message.getContent().toString()).isEqualTo("testContent");
        replacedertThat(message.getDataHandler().getContentType()).isEqualTo("text/html;charset=UTF-8");
    }

    @Test
    public void testSendMultipartEmail() throws Exception {
        mailService.sendEmail("[email protected]", "testSubject", "testContent", true, false);
        verify(javaMailSender).send(messageCaptor.capture());
        MimeMessage message = messageCaptor.getValue();
        MimeMultipart mp = (MimeMultipart) message.getContent();
        MimeBodyPart part = (MimeBodyPart) ((MimeMultipart) mp.getBodyPart(0).getContent()).getBodyPart(0);
        ByteArrayOutputStream aos = new ByteArrayOutputStream();
        part.writeTo(aos);
        replacedertThat(message.getSubject()).isEqualTo("testSubject");
        replacedertThat(message.getAllRecipients()[0].toString()).isEqualTo("[email protected]");
        replacedertThat(message.getFrom()[0].toString()).isEqualTo("test@localhost");
        replacedertThat(message.getContent()).isInstanceOf(Multipart.clreplaced);
        replacedertThat(aos.toString()).isEqualTo("\r\ntestContent");
        replacedertThat(part.getDataHandler().getContentType()).isEqualTo("text/plain; charset=UTF-8");
    }

    @Test
    public void testSendMultipartHtmlEmail() throws Exception {
        mailService.sendEmail("[email protected]", "testSubject", "testContent", true, true);
        verify(javaMailSender).send(messageCaptor.capture());
        MimeMessage message = messageCaptor.getValue();
        MimeMultipart mp = (MimeMultipart) message.getContent();
        MimeBodyPart part = (MimeBodyPart) ((MimeMultipart) mp.getBodyPart(0).getContent()).getBodyPart(0);
        ByteArrayOutputStream aos = new ByteArrayOutputStream();
        part.writeTo(aos);
        replacedertThat(message.getSubject()).isEqualTo("testSubject");
        replacedertThat(message.getAllRecipients()[0].toString()).isEqualTo("[email protected]");
        replacedertThat(message.getFrom()[0].toString()).isEqualTo("test@localhost");
        replacedertThat(message.getContent()).isInstanceOf(Multipart.clreplaced);
        replacedertThat(aos.toString()).isEqualTo("\r\ntestContent");
        replacedertThat(part.getDataHandler().getContentType()).isEqualTo("text/html;charset=UTF-8");
    }

    @Test
    public void testSendEmailFromTemplate() throws Exception {
        User user = new User();
        user.setLogin("john");
        user.setEmail("[email protected]");
        user.setLangKey("en");
        mailService.sendEmailFromTemplate(user, "mail/testEmail", "email.test.replacedle");
        verify(javaMailSender).send(messageCaptor.capture());
        MimeMessage message = messageCaptor.getValue();
        replacedertThat(message.getSubject()).isEqualTo("test replacedle");
        replacedertThat(message.getAllRecipients()[0].toString()).isEqualTo(user.getEmail());
        replacedertThat(message.getFrom()[0].toString()).isEqualTo("test@localhost");
        replacedertThat(message.getContent().toString()).isEqualToNormalizingNewlines("<html>test replacedle, http://127.0.0.1:8080, john</html>\n");
        replacedertThat(message.getDataHandler().getContentType()).isEqualTo("text/html;charset=UTF-8");
    }

    @Test
    public void testSendActivationEmail() throws Exception {
        User user = new User();
        user.setLangKey(Constants.DEFAULT_LANGUAGE);
        user.setLogin("john");
        user.setEmail("[email protected]");
        mailService.sendActivationEmail(user);
        verify(javaMailSender).send(messageCaptor.capture());
        MimeMessage message = messageCaptor.getValue();
        replacedertThat(message.getAllRecipients()[0].toString()).isEqualTo(user.getEmail());
        replacedertThat(message.getFrom()[0].toString()).isEqualTo("test@localhost");
        replacedertThat(message.getContent().toString()).isNotEmpty();
        replacedertThat(message.getDataHandler().getContentType()).isEqualTo("text/html;charset=UTF-8");
    }

    @Test
    public void testCreationEmail() throws Exception {
        User user = new User();
        user.setLangKey(Constants.DEFAULT_LANGUAGE);
        user.setLogin("john");
        user.setEmail("[email protected]");
        mailService.sendCreationEmail(user);
        verify(javaMailSender).send(messageCaptor.capture());
        MimeMessage message = messageCaptor.getValue();
        replacedertThat(message.getAllRecipients()[0].toString()).isEqualTo(user.getEmail());
        replacedertThat(message.getFrom()[0].toString()).isEqualTo("test@localhost");
        replacedertThat(message.getContent().toString()).isNotEmpty();
        replacedertThat(message.getDataHandler().getContentType()).isEqualTo("text/html;charset=UTF-8");
    }

    @Test
    public void testSendPreplacedwordResetMail() throws Exception {
        User user = new User();
        user.setLangKey(Constants.DEFAULT_LANGUAGE);
        user.setLogin("john");
        user.setEmail("[email protected]");
        mailService.sendPreplacedwordResetMail(user);
        verify(javaMailSender).send(messageCaptor.capture());
        MimeMessage message = messageCaptor.getValue();
        replacedertThat(message.getAllRecipients()[0].toString()).isEqualTo(user.getEmail());
        replacedertThat(message.getFrom()[0].toString()).isEqualTo("test@localhost");
        replacedertThat(message.getContent().toString()).isNotEmpty();
        replacedertThat(message.getDataHandler().getContentType()).isEqualTo("text/html;charset=UTF-8");
    }

    @Test
    public void testSendEmailWithException() throws Exception {
        doThrow(MailSendException.clreplaced).when(javaMailSender).send(any(MimeMessage.clreplaced));
        mailService.sendEmail("[email protected]", "testSubject", "testContent", false, false);
    }
}

16 View Source File : MailServiceIT.java
License : MIT License
Project Creator : PacktPublishing

/**
 * Integration tests for {@link MailService}.
 */
@SpringBootTest(clreplacedes = JhvueApp.clreplaced)
public clreplaced MailServiceIT {

    private static String[] languages = {// jhipster-needle-i18n-language-constant - JHipster will add/remove languages in this array
    };

    private static final Pattern PATTERN_LOCALE_3 = Pattern.compile("([a-z]{2})-([a-zA-Z]{4})-([a-z]{2})");

    private static final Pattern PATTERN_LOCALE_2 = Pattern.compile("([a-z]{2})-([a-z]{2})");

    @Autowired
    private JHipsterProperties jHipsterProperties;

    @Autowired
    private MessageSource messageSource;

    @Autowired
    private SpringTemplateEngine templateEngine;

    @Spy
    private JavaMailSenderImpl javaMailSender;

    @Captor
    private ArgumentCaptor<MimeMessage> messageCaptor;

    private MailService mailService;

    @BeforeEach
    public void setup() {
        MockitoAnnotations.initMocks(this);
        doNothing().when(javaMailSender).send(any(MimeMessage.clreplaced));
        mailService = new MailService(jHipsterProperties, javaMailSender, messageSource, templateEngine);
    }

    @Test
    public void testSendEmail() throws Exception {
        mailService.sendEmail("[email protected]", "testSubject", "testContent", false, false);
        verify(javaMailSender).send(messageCaptor.capture());
        MimeMessage message = messageCaptor.getValue();
        replacedertThat(message.getSubject()).isEqualTo("testSubject");
        replacedertThat(message.getAllRecipients()[0].toString()).isEqualTo("[email protected]");
        replacedertThat(message.getFrom()[0].toString()).isEqualTo(jHipsterProperties.getMail().getFrom());
        replacedertThat(message.getContent()).isInstanceOf(String.clreplaced);
        replacedertThat(message.getContent().toString()).isEqualTo("testContent");
        replacedertThat(message.getDataHandler().getContentType()).isEqualTo("text/plain; charset=UTF-8");
    }

    @Test
    public void testSendHtmlEmail() throws Exception {
        mailService.sendEmail("[email protected]", "testSubject", "testContent", false, true);
        verify(javaMailSender).send(messageCaptor.capture());
        MimeMessage message = messageCaptor.getValue();
        replacedertThat(message.getSubject()).isEqualTo("testSubject");
        replacedertThat(message.getAllRecipients()[0].toString()).isEqualTo("[email protected]");
        replacedertThat(message.getFrom()[0].toString()).isEqualTo(jHipsterProperties.getMail().getFrom());
        replacedertThat(message.getContent()).isInstanceOf(String.clreplaced);
        replacedertThat(message.getContent().toString()).isEqualTo("testContent");
        replacedertThat(message.getDataHandler().getContentType()).isEqualTo("text/html;charset=UTF-8");
    }

    @Test
    public void testSendMultipartEmail() throws Exception {
        mailService.sendEmail("[email protected]", "testSubject", "testContent", true, false);
        verify(javaMailSender).send(messageCaptor.capture());
        MimeMessage message = messageCaptor.getValue();
        MimeMultipart mp = (MimeMultipart) message.getContent();
        MimeBodyPart part = (MimeBodyPart) ((MimeMultipart) mp.getBodyPart(0).getContent()).getBodyPart(0);
        ByteArrayOutputStream aos = new ByteArrayOutputStream();
        part.writeTo(aos);
        replacedertThat(message.getSubject()).isEqualTo("testSubject");
        replacedertThat(message.getAllRecipients()[0].toString()).isEqualTo("[email protected]");
        replacedertThat(message.getFrom()[0].toString()).isEqualTo(jHipsterProperties.getMail().getFrom());
        replacedertThat(message.getContent()).isInstanceOf(Multipart.clreplaced);
        replacedertThat(aos.toString()).isEqualTo("\r\ntestContent");
        replacedertThat(part.getDataHandler().getContentType()).isEqualTo("text/plain; charset=UTF-8");
    }

    @Test
    public void testSendMultipartHtmlEmail() throws Exception {
        mailService.sendEmail("[email protected]", "testSubject", "testContent", true, true);
        verify(javaMailSender).send(messageCaptor.capture());
        MimeMessage message = messageCaptor.getValue();
        MimeMultipart mp = (MimeMultipart) message.getContent();
        MimeBodyPart part = (MimeBodyPart) ((MimeMultipart) mp.getBodyPart(0).getContent()).getBodyPart(0);
        ByteArrayOutputStream aos = new ByteArrayOutputStream();
        part.writeTo(aos);
        replacedertThat(message.getSubject()).isEqualTo("testSubject");
        replacedertThat(message.getAllRecipients()[0].toString()).isEqualTo("[email protected]");
        replacedertThat(message.getFrom()[0].toString()).isEqualTo(jHipsterProperties.getMail().getFrom());
        replacedertThat(message.getContent()).isInstanceOf(Multipart.clreplaced);
        replacedertThat(aos.toString()).isEqualTo("\r\ntestContent");
        replacedertThat(part.getDataHandler().getContentType()).isEqualTo("text/html;charset=UTF-8");
    }

    @Test
    public void testSendEmailFromTemplate() throws Exception {
        User user = new User();
        user.setLogin("john");
        user.setEmail("[email protected]");
        user.setLangKey("en");
        mailService.sendEmailFromTemplate(user, "mail/testEmail", "email.test.replacedle");
        verify(javaMailSender).send(messageCaptor.capture());
        MimeMessage message = messageCaptor.getValue();
        replacedertThat(message.getSubject()).isEqualTo("test replacedle");
        replacedertThat(message.getAllRecipients()[0].toString()).isEqualTo(user.getEmail());
        replacedertThat(message.getFrom()[0].toString()).isEqualTo(jHipsterProperties.getMail().getFrom());
        replacedertThat(message.getContent().toString()).isEqualToNormalizingNewlines("<html>test replacedle, http://127.0.0.1:8080, john</html>\n");
        replacedertThat(message.getDataHandler().getContentType()).isEqualTo("text/html;charset=UTF-8");
    }

    @Test
    public void testSendActivationEmail() throws Exception {
        User user = new User();
        user.setLangKey(Constants.DEFAULT_LANGUAGE);
        user.setLogin("john");
        user.setEmail("[email protected]");
        mailService.sendActivationEmail(user);
        verify(javaMailSender).send(messageCaptor.capture());
        MimeMessage message = messageCaptor.getValue();
        replacedertThat(message.getAllRecipients()[0].toString()).isEqualTo(user.getEmail());
        replacedertThat(message.getFrom()[0].toString()).isEqualTo(jHipsterProperties.getMail().getFrom());
        replacedertThat(message.getContent().toString()).isNotEmpty();
        replacedertThat(message.getDataHandler().getContentType()).isEqualTo("text/html;charset=UTF-8");
    }

    @Test
    public void testCreationEmail() throws Exception {
        User user = new User();
        user.setLangKey(Constants.DEFAULT_LANGUAGE);
        user.setLogin("john");
        user.setEmail("[email protected]");
        mailService.sendCreationEmail(user);
        verify(javaMailSender).send(messageCaptor.capture());
        MimeMessage message = messageCaptor.getValue();
        replacedertThat(message.getAllRecipients()[0].toString()).isEqualTo(user.getEmail());
        replacedertThat(message.getFrom()[0].toString()).isEqualTo(jHipsterProperties.getMail().getFrom());
        replacedertThat(message.getContent().toString()).isNotEmpty();
        replacedertThat(message.getDataHandler().getContentType()).isEqualTo("text/html;charset=UTF-8");
    }

    @Test
    public void testSendPreplacedwordResetMail() throws Exception {
        User user = new User();
        user.setLangKey(Constants.DEFAULT_LANGUAGE);
        user.setLogin("john");
        user.setEmail("[email protected]");
        mailService.sendPreplacedwordResetMail(user);
        verify(javaMailSender).send(messageCaptor.capture());
        MimeMessage message = messageCaptor.getValue();
        replacedertThat(message.getAllRecipients()[0].toString()).isEqualTo(user.getEmail());
        replacedertThat(message.getFrom()[0].toString()).isEqualTo(jHipsterProperties.getMail().getFrom());
        replacedertThat(message.getContent().toString()).isNotEmpty();
        replacedertThat(message.getDataHandler().getContentType()).isEqualTo("text/html;charset=UTF-8");
    }

    @Test
    public void testSendEmailWithException() throws Exception {
        doThrow(MailSendException.clreplaced).when(javaMailSender).send(any(MimeMessage.clreplaced));
        mailService.sendEmail("[email protected]", "testSubject", "testContent", false, false);
    }

    @Test
    public void testSendLocalizedEmailForAllSupportedLanguages() throws Exception {
        User user = new User();
        user.setLogin("john");
        user.setEmail("[email protected]");
        for (String langKey : languages) {
            user.setLangKey(langKey);
            mailService.sendEmailFromTemplate(user, "mail/testEmail", "email.test.replacedle");
            verify(javaMailSender, atLeastOnce()).send(messageCaptor.capture());
            MimeMessage message = messageCaptor.getValue();
            String propertyFilePath = "i18n/messages_" + getJavaLocale(langKey) + ".properties";
            URL resource = this.getClreplaced().getClreplacedLoader().getResource(propertyFilePath);
            File file = new File(new URI(resource.getFile()).getPath());
            Properties properties = new Properties();
            properties.load(new InputStreamReader(new FileInputStream(file), Charset.forName("UTF-8")));
            String emailreplacedle = (String) properties.get("email.test.replacedle");
            replacedertThat(message.getSubject()).isEqualTo(emailreplacedle);
            replacedertThat(message.getContent().toString()).isEqualToNormalizingNewlines("<html>" + emailreplacedle + ", http://127.0.0.1:8080, john</html>\n");
        }
    }

    /**
     * Convert a lang key to the Java locale.
     */
    private String getJavaLocale(String langKey) {
        String javaLangKey = langKey;
        Matcher matcher2 = PATTERN_LOCALE_2.matcher(langKey);
        if (matcher2.matches()) {
            javaLangKey = matcher2.group(1) + "_" + matcher2.group(2).toUpperCase();
        }
        Matcher matcher3 = PATTERN_LOCALE_3.matcher(langKey);
        if (matcher3.matches()) {
            javaLangKey = matcher3.group(1) + "_" + matcher3.group(2) + "_" + matcher3.group(3).toUpperCase();
        }
        return javaLangKey;
    }
}

See More Examples