docker 中发送 html 格式邮件的问题

2020-01-08 17:39:05 +08:00
 leiuu

请教大家一个困扰我许久的问题。

使用 sendmail 发送 html 邮件。

方法如下:

function sendHtmlMailViaSendmail()
{
 
	mailto="$1"
	subject="$2"
	content="$3"

	(
		echo "To:$mailto"
		echo "From: xxx@yyy.com"
		echo "Content-Type:text/html;charset=UTF-8"
		echo "Subject:$subject"
		echo
		cat $content
	) | sendmail -t
}

sendHtmlMailViaSendmail aaa@bbb.com "这是主题" /tmp/report.html 

这样可以发出去邮件,但是会被目标邮件服务器拦截或者标记为垃圾。

google 一顿之后发现通过外部的 smtp 服务器发出,如腾讯的 「 smtp.exmail.qq.com 」,就不会被识别为垃圾邮件。

依照这个去更新 senmail 设置: https://tecadmin.net/sendmail-to-relay-emails-through-gmail-stmp/。

结果 sendmail 无法启动,显示端口被占用,服务无法启动。

怀疑是 docker 和外部的宿主机冲突导致。

Job for sendmail.service failed because a configured resource limit was exceeded. See "systemctl status sendmail.service" and "journalctl -xe" for details.
daemon MTA: problem creating SMTP socket
NOQUEUE: SYSERR(root): opendaemonsocket: daemon MTA: cannot bind: Address already in use
daemon MTA: problem creating SMTP socket
NOQUEUE: SYSERR(root): opendaemonsocket: daemon MTA: cannot bind: Address already in use
daemon MTA: problem creating SMTP socket
sendmail.service never wrote its PID file. Failing.
Failed to start Sendmail Mail Transport Agent.
Unit sendmail.service entered failed state.
sendmail.service failed.

请问大家有没有好的解决这个问题的方法, 或者其他方法用来在 docker 中发送走外部 smtp 的 html 格式的邮件。

1857 次点击
所在节点    程序员
6 条回复
cloverzrg2
2020-01-08 18:55:10 +08:00
mritd
2020-01-08 19:34:09 +08:00
🤔如果你尝试在 docker 里折腾 systemd 的那些玩意,那么本身就是错误行为
julyclyde
2020-01-09 10:35:40 +08:00
嘿,简直是……

1 是否被判定为垃圾邮件,完全取决于收件方的策略
2 你可以做一些事,但是不一定有效;你参考的资料也不一定对
3 你用外部 smtp 发的话,额外还收到发件 smtp 服务的策略管制

4 你用 docker,给自己添加了别的社会制度不存在的问题,然后尝试去解决它,浪费时间
julyclyde
2020-01-09 10:36:09 +08:00
5 这事和 *html 格式* 这一点,也没啥关系
wd
2020-01-09 10:44:00 +08:00
给你个建议,你写一个用来发邮件的 python 程序,这个程序里面直接连接你的 smtp 服务器发邮件。这样你就不用搞 sendmail 了,sendmail 我目测你一时搞不定。
leiuu
2020-01-09 11:44:47 +08:00
@cloverzrg2 没错用的就是这个
@mritd 😢
@julyclyde 发非 html 邮件,用 mail 命令,改一下默认的 mail.rc 配置就可以走外部 smtp。起码保证能收到。😂。
如果不走外部的 smtp,次数 /频率超过一个值后,直接收不到了。

@wd sendmail 配置改起来太麻烦了,哈哈哈,确实一时搞不定。python script 是可以的,但由于项目里脚本太多了都用的 mail 命令,替换起来也比较麻烦。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/636225

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX