package cn.hellohao.utils; import cn.hellohao.pojo.EmailConfig; import cn.hellohao.pojo.Msg; import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.HexUtil; import com.alibaba.fastjson.JSONObject; import com.mitchellbosecke.pebble.PebbleEngine; import com.mitchellbosecke.pebble.template.PebbleTemplate; import io.github.biezhi.ome.OhMyEmail; import org.springframework.core.io.ClassPathResource; import java.io.StringWriter; import java.io.Writer; import java.util.HashMap; import java.util.Map; import java.util.Properties; import java.util.UUID; public class NewSendEmail { public static Integer sendEmail(EmailConfig emailConfig, String username, String uid, String toEmail, JSONObject jsonObject) { Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.ssl.enable", "true"); props.put("mail.debug", "false"); props.put("mail.transport.protocol", "smtp"); props.put("mail.debug", "false"); props.put("mail.smtp.timeout", "20000"); props.put("mail.smtp.port", emailConfig.getPort());//465 25 props.put("mail.smtp.host", emailConfig.getEmailurl()); // 配置一次即可,可以配置为静态方法 // OhMyEmail.config(OhMyEmail.SMTP_QQ(false), "xxxx@qq.com", "your@password"); OhMyEmail.config(props, emailConfig.getEmails(), emailConfig.getEmailkey()); String webname=jsonObject.getString("webname"); String domain = jsonObject.getString("domain"); try { //生成模板 PebbleEngine engine = new PebbleEngine.Builder().build(); ClassPathResource classPathResource = new ClassPathResource("emailTemplate/emailRegister.html"); PebbleTemplate compiledTemplate = engine.getTemplate(classPathResource.getPath()); Map context = new HashMap<>(); context.put("username", username); context.put("webname", webname); context.put("url", domain+"/user/activation?activation="+uid+"&username=" + username ); Writer writer = new StringWriter(); compiledTemplate.evaluate(writer, context); String output = writer.toString(); OhMyEmail.subject(webname+"账号激活") .from(webname) .to(toEmail) .html(output) .send(); return 1; } catch (Exception e) { e.printStackTrace(); return 0; } } public static Msg sendTestEmail(EmailConfig emailConfig, String toEmail) { Msg msg = new Msg(); Properties props = new Properties(); try { props.put("mail.smtp.auth", "true"); props.put("mail.smtp.ssl.enable", "true"); props.put("mail.debug", "false"); props.put("mail.transport.protocol", "smtp"); props.put("mail.debug", "false"); props.put("mail.smtp.timeout", "20000"); props.put("mail.smtp.port", emailConfig.getPort());//465 25 props.put("mail.smtp.host", emailConfig.getEmailurl()); OhMyEmail.config(props, emailConfig.getEmails(), emailConfig.getEmailkey()); String webname="Hellohao图像托管程序"; OhMyEmail.subject("Hellohao图像托管程序邮箱配置测试") .from(webname) .to(toEmail) .html("

这是一条测试邮件,当您收到此邮件证明测试成功了

") .send(); msg.setInfo("发送邮件指令已执行,请自行前往收信箱或垃圾箱查看是否收到测试邮件"); return msg; } catch (Exception e) { e.printStackTrace(); System.out.println(e.getMessage()); msg.setCode("110500"); msg.setInfo(e.getMessage()); return msg; } } public static Integer sendEmailFindPass(EmailConfig emailConfig,String username, String uid, String toEmail, JSONObject jsonObject) { Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.ssl.enable", "true"); props.put("mail.debug", "false"); props.put("mail.transport.protocol", "smtp"); props.put("mail.debug", "false"); props.put("mail.smtp.timeout", "20000"); props.put("mail.smtp.port", emailConfig.getPort());//465 25 props.put("mail.smtp.host", emailConfig.getEmailurl()); // 配置一次即可,可以配置为静态方法 // OhMyEmail.config(OhMyEmail.SMTP_QQ(false), "xxxx@qq.com", "your@password"); OhMyEmail.config(props, emailConfig.getEmails(), emailConfig.getEmailkey()); String webname=jsonObject.getString("webname"); String domain = jsonObject.getString("domain"); String new_pass = UUID.randomUUID().toString().replace("-", "").toLowerCase().substring(0,10); try { //生成模板 PebbleEngine engine = new PebbleEngine.Builder().build(); ClassPathResource classPathResource = new ClassPathResource("emailTemplate/emailFindPass.html"); PebbleTemplate compiledTemplate = engine.getTemplate(classPathResource.getPath()); Map context = new HashMap<>(); context.put("username", username); context.put("webname", webname); context.put("new_pass", new_pass); context.put("url",domain+"/user/retrieve?activation=" + uid+"&cip="+ HexUtil.encodeHexStr(new_pass, CharsetUtil.CHARSET_UTF_8)); Writer writer = new StringWriter(); compiledTemplate.evaluate(writer, context); String output = writer.toString(); OhMyEmail.subject(webname+"密码重置") .from(webname) .to(toEmail) .html(output) .send(); return 1; } catch (Exception e) { e.printStackTrace(); return 0; } } }