java实现邮件代理发送

java发送邮件功能支持代理,但是不支持http代理,支持sock代理(支持SOCKS V4或V5协议)

实现效果

使用自己的邮箱进行账密认证 以群组邮箱地址作为发件人进行发送(需要邮件开通权限)

实际操作

邮件模板使用thymeleaf html片段 具体自行百度
javaMail spring-boot-starter-mail

  1. 配置文件
  mail:host: smtp.163.comusername: 个人邮箱账号password: 个人邮箱密码from: 群组邮箱地址
  1. Configuration读取
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;@Component
@ConfigurationProperties(prefix = "spring.mail")
@Data
public class MailProperties {private String host;private String port;private String username;private String password;private String from;
}
  1. 配置props (mailServiceImpl)
 public Properties getProerties() {Properties props = System.getProperties();props.put("mail.smtp.auth", "true");props.put("mail.smtp.host", mailProperties.getHost());props.put("mail.smtp.port", mailProperties.getPort());return props;}
  1. 邮件发送
 public void sendTemplateMail1(MailDO mailDO, String mailTemplate) {try{//获取props配置Properties props = getProerties();// 获得邮件会话对象 重点!Session session = Session.getInstance(props, new SmtpAuthenticator(mailProperties.getUsername(), mailProperties.getPassword()));MimeMessage mimeMessage = new MimeMessage(session);MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true);//这里填写群组邮箱地址messageHelper.setFrom(new InternetAddress(mailProperties.getFrom()));//邮件过滤emailFilter(mailDO, messageHelper);messageHelper.setSubject(mailDO.getTitle());Context context = new Context();//定义模板数据context.setVariables(mailDO.getAttachment());//指定模板路径String emailContent = templateEngine.process(mailTemplate, context);//内容装载 并指定编码格式mimeMessage.setContent(emailContent, "text/html;charset=utf-8");//发送邮件javaMailSender.send(mimeMessage);log.info("邮件发送成功,mailDO对象值为:"+mailDO.toString());} catch (Exception e) {log.info("模板邮件发送失败->message:{}", e.getMessage());}}private void emailFilter(MailDO mailDO, MimeMessageHelper messageHelper) throws MessagingException {//接收人邮件地址String sendEmail = mailDO.getEmail();String[] sendEmails = mailDO.getEmails();//抄送人String[] ccEmails = mailDO.getCcEmail();ArrayList<String> removeString = new ArrayList<>();if (StringUtils.isNotEmpty(sendEmails)) {List<String> emailsList = Arrays.stream(sendEmails).distinct().collect(Collectors.toList());removeString.addAll(emailsList);String[] emailsDistinct = emailsList.toArray(new String[0]);messageHelper.setTo(emailsDistinct);} else {removeString.add(sendEmail);messageHelper.setTo(sendEmail);}if (StringUtils.isNotEmpty(ccEmails)) {List<String> ccEmailsList = Arrays.stream(ccEmails).distinct().collect(Collectors.toList());ccEmailsList.removeAll(removeString);String[] ccEmailsDistinct = ccEmailsList.toArray(new String[0]);messageHelper.setCc(ccEmailsDistinct);}}

java实现邮件代理发送相关推荐

  1. java 实现邮件的发送, 抄送及多附件

    import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.*; im ...

  2. 邮件代理发送功能更新和Exchange 6月份补丁更新提示

    今天和大家分享关于Exchange 2016 代理人代理发送邮件同步到被代理邮箱的send items folder中. Exchange 2016 从RTM开始只有Shared Mailbox可以设 ...

  3. java实现邮件定时发送

    需求:系统定时发送E-mail到其客户,达到通知的效果.先将实例分享给大家,如果确实有一些帮助的话,请大家来点掌声! 首先介绍java定时器(java.util.Timer)有定时执行计划任务的功能, ...

  4. Java自动化邮件中发送图表(一)

    一.邮件需求 邮件中需要展示柱状图.折线图和饼图等图表数据.如图: 二.解决方案 将图表转成图片,采用html邮件文本,使用base64编码图片发送邮件. 将图表导出成图片有三种方式: (1)JFre ...

  5. Java自动化邮件中发送图表(四)之javafx Chart

    一.Javafx Chart JavaFX支持各种饼图和XY图表.在XY平面上表示的图表包括AreaChart,BarChart,BubbleChart,LineChart,ScatterChart, ...

  6. Java自动化邮件中发送图表(三)之Highchart

    一.Highchart (1)Highchart.js Highcharts 是一个用纯JavaScript编写的一个图表库.能够很简单便捷的在web网站或是web应用程序添加有交互性的图表. (2) ...

  7. Java自动化邮件中发送图表(二)之JFreeChart

    一.JFreeChart库 JFreeChart是JAVA平台上的一个开放的图表绘制类库. JFreeChart可生成饼图(pie charts).柱状图(bar charts).散点图(scatte ...

  8. java实现邮件发送, 抄送及多附件发送

    java实现邮件发送, 抄送及多附件发送 所需的jar包  mailapi.jar和smtp.jar  或  javax-mail-xxx.jar(如javax.mail-1.5.6.jar)  ht ...

  9. 用java实现邮件发送

    电子邮件 1.基础知识铺垫 要在网络上实现邮件功能,必须要有专门的邮件服务器. 这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过的邮件,并把邮件投递到邮件接收者的电子邮箱中. SMTP服 ...

最新文章

  1. java 中文分词 比较_中文分词工具评估:chinese-segmentation-evaluation
  2. 研发过程管理导图-第一稿(转)
  3. 随机森林之oob error 估计
  4. AB1601烧程序时注意事项
  5. java 快速构建ssm项目_SSM快速搭建
  6. 撩开Docker的面纱
  7. 2016/06/11
  8. 技嘉z77主板msata速度_技嘉小雕、微星迫击炮、华硕电竞特工三款主板对比
  9. 怎么完全卸载赛门铁克_卸载Symantec Endpoint Protection, 无需password的卸载方法
  10. 直观理解图片的EXIF orientation
  11. 201908 小技巧---设备管理器-其他设备-通用串行总线(USB)控制器 驱动安装
  12. python结合正则表达式及校验码生成算法校验:电话号码、营业执照、组织机构代码证、税务登记证、统一社会信用代码证、非盈利性企业登记证号码的函数
  13. [021] Android应用“易查查”上线推广,请同行多多指教、多多支持
  14. 磊科路由器如何设置虚拟服务器,nw711磊科路由器设置桥接步骤图文
  15. 你的童年经历过放牛,放羊,干农活吗?然后你现在对这些都怀念吗?
  16. Unity抗锯齿,Unity3D模型花闪烁等效果优化。
  17. 【课程】大气对流参数
  18. HTML中引入外部CSS和JS
  19. 看完这篇就全懂负载均衡了
  20. VMware vSphere 6 序列号大全 亲测有效

热门文章

  1. qDebug中文乱码
  2. 【Python】Scapy库简单用法
  3. 2021年危险化学品经营单位安全管理人员考试及危险化学品经营单位安全管理人员考试总结
  4. VSCode 报错preLaunchTask“g++”已终止,退出代码为 1 一例的解决方案
  5. 网络代理的配置方法有哪些?各有哪些利弊呢?
  6. openwrt配置内核驱动_openwrt 增加RTC(MCP7940 I2C总线)驱动详解
  7. 谷歌搜索留痕的技术公式【2023年新版】
  8. Anroid/Linux 下查看麦克风或音频采集设备
  9. 编译rtl8192eu出现 error: ‘IEEE80211_BAND_2GHZ’ undeclared here修改方案
  10. cad批量打印_CAD基础知识之打印,CAD图纸如何批量打印?这样设置,轻松搞定