求一个能够自建的自动发送邮件的解决方案

有这样一个需求:发送一个GET或者POST请求,到服务端,然后服务端能够给一个邮箱发送邮件,标题、内容根据请求信息自动生成。最好是能docker cli 一把梭就能部署的。

自己折腾了一下,homeassistant 确实可以由post请求触发预先配置好的自动化项目来发邮件,但是邮件内容好像只能是预先配置好的。

另外,饭碗警告、Server 酱都能实现这个功能,但是我想要的是个纯内网服务,这样,我的各个虚拟机、容器各跑各的项目,然后结果通过http请求发送到这个自动发邮件的服务端后,由这个自动发邮件的项目统一给我发邮件做提醒。

我是在win机器上跑了个定时任务,执行一个批处理,启动php脚本写的测试断言,查看服务器状态,然后通过qq邮箱的smtp发出去的。每天早上自动查一下各种服务器状态。
你这个需求,大概就是把我现在用的cli方式改成网页的方式放支持php的web server上吧。

你这个想法挺不错的,我改改程序应该能满足你的要求。

可能我的需求确实比较小众,举个例子

我是。。。all in boom 玩家
首先一个容器部署 next terminal 来统一管理设备和执行crontab任务。
这就是每5分钟ping 某一台虚拟机,如果ping不通则发送http请求
这个http请求接收端是我另一个自建容器,可以根据请求执行各种shell命令(比如启动虚拟机)

现在就是想ping 不通时发送2个http请求,一条用于执行shell命令,另一条就是给我发邮件进行提醒。
当然这个需求也不仅是为了监控设备服务,还有一些别的想法,暂时还在琢磨

zabbix 有点像能完成你的要求。

我主要是监控网络。
例如,让我检测到我的IP不通的时候,执行mtr(路由监测),然后发送给邮箱。

我都忘记我咋个实现的了。。

我这个需求倒也不是完全为了监控设备在线状态,还有一些别的想法暂未实现
如果是为了监控设备 最近刚扔去收藏夹吃灰的 Uptime Kuma 就可以满足,监控类型有 http tcp ping等等,支持几十种通知。。。。

Uptime Kuma 这个我也在用。

自动发邮件的话,可以试试mail。 我记得系统内设置是在mailc还是哪个文件,我忘了。

但是这个没法根据 请求内容填写邮件内容啊=。=
我前面提到的webhook 执行 shell命令的方案,只能根据不同请求发送提前预设好内容的邮件。。。

你都能执行shell了,还发不了mail吗?发mail就是在执行shell的环境里安装个程序包并配置一下的事情啊。当然,docker环境下未必有安装,这东西应该可选可配置吧。好久不弄了,忘了。

我在内网是这样用的

当然可能不够内网 :joy:

你看我前面回复啊,现在是发送请求到对应url执行预设命令。是可以发邮件,但是邮件内容只能是预设的,无法从请求中提取。(也可能是我不会弄,我只会弄弄那个现成的 :joy:)

我的预期是,可以直接把标题和内容加在请求里一起发送,然后邮件自动生成标题和 内容 并发送

挺不错的,主要我不想多装个Telegram,再等等看有没有大佬 :face_with_peeking_eye:

大概这个思路

我用nodejs搭了一个简易的邮件通知,测试是没问题了。结果在接收了几次通知邮件后,被QQ邮箱认定是垃圾邮件,不给我接收了。

现在又做了一个企业微信的小应用来提醒,允许的自定义程度挺高,也没有公众号一类的严格次数限制啥的。

我记得企业微信机器人直接支持webhook 可以直接post请求发推送

企业机器人现在要绑定固定IP

curl不就可以发送邮件吗,还是说内网的服务不能连外网所以访问不到外网上面的服务器?

curl原来还有这种功能…
我去学习一下

把服务器和用户名密码替换成你自己的应该就可以了,可以尝试一下


cat << EOF > mail.txt
From:ddd<[email protected]>
To:[email protected]
Subject: From Curl

你好,这封邮件来自于curl
date: `date`
EOF

curl \
  --verbose \
  -s \
  --url 'smtps://smtp.yeah.net:465' \
  --ssl-reqd \
  --mail-from [email protected] \
  --mail-rcpt [email protected] \
  --user "[email protected]:password" \
  --upload-file mail.txt

rm mail.txt

image

1 个赞

docker pull lilyhcn1/fastapi

新封装的一个docker,帮我试试不。原理就是用python发邮件(暂时找到QQ邮箱),很粗糙,但密码一类的填对能用。
发送方式如下:
192.168.7.105:8000/gn/发邮件?主题=你好&内容=fdsfds&收件人[email protected]&发件人[email protected]&密码=VVVVV

不想装docker的可以公网测试一下,三天左右删除。
http://api2.r34.cc/gn/发邮件

1 个赞