Send_Email:一款轻量化可定制模板的邮件批量发送工具

news/2024/12/16 11:37:47/文章来源:https://www.cnblogs.com/o-O-oO/p/18609688

免责声明

本工具仅供学习、测试及研究使用,严禁用于任何形式的非法或未经授权的用途。如因违规使用导致任何后果,责任自负,请遵守相关法律法规。

以下文章来源于薛定谔的安全 ,作者iak3ec

Send_Email:一款轻量化可定制模板的邮件批量发送工具 | 可用于攻防钓鱼或其他邮件个性化的场景 | 可启动JavaFX或SpringWeb环境

项目地址

https://github.com/nu0l/Send_Email

工具功能

多邮箱发送:支持配置多个邮箱账号
随机字符替换:在邮件正文中插入随机不可见字符,规避内容检测
干扰字符插入:随机添加不可见干扰字符,有效绕过邮件网关
正文编码:采用quoted-printable 编码技术,提升内容传递的隐蔽性
代理支持:支持代理设置,降低 IP 地址被检测风险
延迟发送:对邮件发送设置随机延迟,减少被判为垃圾邮件的可能性
格式转换:支持.eml 文件导入并转换为 HTML 格式
HTML 格式支持:直接发送 HTML 格式邮件,打造精美邮件内容
定制化邮件模板:根据收件人信息定制内容,实现个性化邮件发送

快速开始

运行方式

通过以下命令启动程序:

java -jar send_email.jar [web|gui]
web:启动 Spring Web
gui:启动 JavaFX 图形化界面

配置说明

首次运行时,工具会自动生成配置文件: 路径:~/.config/sendEmail/config.properties

示例

ls -la ~/.config/sendEmail/-rw-r--r--@  1 test  staff   833 Dec 10 09:55 config.properties

若配置文件未生成,请确保 send_email.jar 具有写入权限:

chmod 777 send_email.jar

GUI 模块

java -jar send_email.jar gui

2.1 配置邮箱账户

运行工具后,按以下步骤添加邮箱账户(以 163 邮箱为例):

1、打开“邮件配置”界面,输入以下信息:

2、点击添加 按钮,完成配置写入

3、通过查看配置 选项确认配置是否正确

也可以直接手动修改配置文件

示例:

# 代理设置
proxy.enable=true
proxy.type=SOCKS5
proxy.host=127.0.0.1
proxy.port=7890
proxy.username=
proxy.password=# 邮件配置 - 可以配置多个邮箱账户
mail.accounts[0].id=0
mail.accounts[0].host=smtp.163.com
mail.accounts[0].port=465
mail.accounts[0].ssl=true
mail.accounts[0].username=xxxx@163.com
mail.accounts[0].password=xxxxxxx
mail.accounts[0].from=xxxx@163.com
mail.accounts[0].nickname=管理员
mail.accounts[0].authrequired=falsemail.accounts[1].id=1
mail.accounts[1].host=smtp.qq.com
mail.accounts[1].port=465
mail.accounts[1].ssl=true
mail.accounts[1].username=xxxx@foxmail.com
mail.accounts[1].password=xxxxxx
mail.accounts[1].from=xxxx@foxmail.com
mail.accounts[1].nickname=管理员
mail.accounts[1].authrequired=false

2.2 HTML 转换

支持从邮箱导出的.eml 文件直接转换为.html 格式邮件,并保持原始样式进行发送(对于企业级邮件的规范性有极大提升)。原汁原味。

预览导出后的HTML格式:

2.3 发送邮件

建议配置多个邮箱账户,当第一个邮箱发送失败时会自动切换到其他邮箱

Tips:

1、附件发送:对于.exe 等可执行文件,建议多次打包或使用 7z 加密文件名,以绕过网关检测
2、敏感信息:可以将敏感信息转换为图片插入邮件,网关无法检测图片内容

2.4 定制化邮件

在某些情况下,可以对邮件内容进行定制化设计(例如针对某单位的精准推广或信息分发🎣)。

示例

1、将.eml 文件转换为.html 文件。
2、使用thymeleaf 模板语法进行插值,例如:th:text="${userName}"

HTML 模板(Test.html):

<!DOCTYPE html>
<html>
<div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial"><p>亲爱的 <span th:text="${userName}"></span> (工号: <span th:text="${workNo}"></span>),</p><p>以下是关于 <span th:text="${companyName}"></span> VPN 的安装手册,帮助您顺利完成 VPN 的设置和使用。</p><hr><h3 style="font-size: 14px;">为了确保安全的远程访问,公司要求通过 VPN 服务安全地连接到公司内部网络,访问必要的资源。</h3><ul><li>操作系统:Windows 10、macOS、Linux</li><li>网络连接:稳定的互联网连接</li><li>下载链接:<a href="https://baidu.com/">XXVPN下载地址</a></li></ul><div><b>注意事项:</b></div><ul><li><strong>无法连接 VPN</strong>:请检查网络连接,确保输入的用户名和密码正确。</li><li><strong>连接不稳定</strong>:尝试重新连接,或联系 IT 支持。</li></ul><h4>联系支持</h4><p>如您在安装或使用过程中遇到任何问题,请联系 IT 支持团队:</p><ul><li>电子邮件:<a href="mailto:support@company.com" target="_blank">support@company.com</a></li><li>电话:123-456-7890</li></ul><hr><p>感谢您的配合,祝您工作顺利!</p>
</div>
</html>

CSV 数据文件(Test.csv):toEmail和emailSubject为必填项

WEB 模块

java -jar send_email.jar web

运行 WEB 模块后,系统会生成默认的登录用户名和密码:

用户名:user
密码:随机生成(运行时在控制台输出,例如:Using generated security password: b068f0ca-3e4b-44a2-b5dc-967e051a7c1b)
端口:58090

登录后根据提示跳转到Swagger-UI,进行调用API使用

Swagger-API中均有配置接口和参数说明,这里不再做演示

TODO

欢迎在GitHub提issues建议或需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/853696.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端工程化_构建工具和脚手架_学习笔记

本文主要对构建工具和脚手架进行简要介绍,首先明确了构建工具的作用,因为开发和维护的代码和运行时的代码是不一致,需要构建工具来进行转换,而且这个转换是工程级别的转换;然后介绍了主流构建工具 webpack,介绍了 webpack 的入口、开发服务器、文件指纹、css modules以及源…

算法之链表

链表 移除链表元素 对于链表来说,删除头节点和中间节点具体操作不一样是因为想要删除一个中间节点,必须要知道该节点的前一个节点,而头节点没有前一个节点。使用虚拟头节点,统一节点的删除操作,用一个虚拟头节点的next指向head,这个链表中的每个元素都会有前一个节点,从…

算法之数组

数组 二分查找 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 题解:如果等于nums[middle],返回middle;否则返回left或者low。移除元素 在排序数组中查找target的开始位置和结束位置。 二分法不…

年会筹备大揭秘:看板软件如何助力团队协作?

看板软件以其直观、灵活和高效的特点,成为企业年会准备的得力助手。通过看板软件,企业可以更加高效地组织和管理年会筹备工作,确保活动的顺利进行,并为企业文化的传播和员工凝聚力的提升做出贡献。看板软件以其直观、灵活和高效的特点,成为企业年会准备的得力助手。通过看…

【每日一题】20241216

我做出了选择。也许不是好的选择,但选择了就要承担后果。【每日一题】已知函数 \(f(x)=\sin|x|+2|\sin x|\),则 \(f(x)\) 在 \((-2\pi,\pi)\) 的零点个数为________. 已知函数 \(f(x)(x\in\mathbf{R})\) 满足 \(f(-x)=2-f(x)\).设方程 \(f(x)-\frac{x+1}{x}=0\) 的 \(m\) 个…

ARMS 用户体验监控正式发布原生鸿蒙应用 SDK

原生鸿蒙系统是我国首个实现全栈自研的操作系统,全面突破操作系统核心技术,真正实现了国产操作系统的自主可控。在这样的背景下,RUM 推出的用于监控原生鸿蒙的 SDK 为鸿蒙应用的开发者提供了更进一步的便利,对衡量用户体验关键的指标进行全面的分析和追踪。作者:杨兰馨(楠…

零基础学习人工智能—Python—Pytorch学习(十二)

前言 本文介绍使用神经网络进行实战。 使用的代码是《零基础学习人工智能—Python—Pytorch学习(九)》里的代码。 代码实现 mudule定义 首先我们自定义一个module,创建一个torch_test17_Model.py文件(这个module要单独用个py文件定义),如下: import torch.nn as nn import…

700PB数据的数仓依然“快稳省”!ByteHouse这本白皮书揭秘关键(内附下载链接)

12月10日,《火山引擎ByteHouse云数仓产品白皮书》在线上发布。在数字经济蓬勃发展的今天,企业面临着数据量爆炸性增长、数据分析需求日益复杂的双重挑战。传统的数据仓库解决方案已经难以满足企业对数据处理速度和灵活性的高要求。为了应对这些挑战,火山引擎于2021年正式推出…

子查询关联条件字段没有指定表的别名导致的查询结果不正确的问题

子查询关联查询问题,子查询关联条件字段没有指定表的别名导致的查询结果不正确的问题首先介绍一下表结构和背景;有两个数据库表,供应商XX任务主表和供应商等级变更记录表; 等级表里面有多个任务,两张表是通过同名称的字段,supplier_id关联; ①SQL是XX任务表关联供应商等…

Xinference环境搭建推理测试

引子 写了很多篇开源大模型的环境部署与推理搭建,截止到目前,开源大模型已经发展较为完善。个人觉得,产品和项目维度来看更多的是如果去落地实现,也就是大模型的最后一公里的应用开发。最近看到Xinference一个开源很火的推理框架。OK,那就让我们开始吧。 一、框架介绍 Xin…

前端工程化_CSS 工具链_学习笔记

本文主要介绍了 CSS 工具链,可以看出工具链的出现都是为了解决语言的问题,文中就介绍了预处理器和后处理器,预处理器主要介绍了 sass,并举了星空这个例子,sass 是通过与预编译器编译成 css 后给 html 使用;后处理器则介绍了 postcss,其中 postcss 和 babel 类似,都有很…

车载以太网TSN设计及测试解决方案

智能汽车电子电气架构全面向中央+区域式发展,车载通信新技术是新架构技术栈的重要组成部分。车载以太网时间敏感网络TSN技术凭借其低延时、高可靠的特点获得多家OEM的认可。依赖多年技术研发及数十个项目的实践积累,经纬恒润可为客户提供全面、专业且本土化的TSN设计与测试解…