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
19
View Source File : MailSenderPropertiesConfiguration.java
License : Apache License 2.0
Project Creator : yuanmabiji
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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;
}
}
16
View Source File : MailSenderImpl.java
License : GNU Affero General Public License v3.0
Project Creator : voyages-sncf-technologies
License : GNU Affero General Public License v3.0
Project Creator : voyages-sncf-technologies
@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
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
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
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