如何开发一个不花钱的邮件订阅发送服务器

邮件营销这件事往前追溯历史可是十分悠久了,所有工具和服务商自然也是十分成熟。但是在前司工作时很常见的问题就是:没预算。领导们认为写个邮件发给几百个人不过是加一大堆的BCC嘛,当然,他们之前也确实是这么操作的。要说有点也不是没有,至少没直接用CC……前司用的是世纪互联版的Office 365,绝大多数人还在用网页版Outlook(当然,这东西总抽风,网页版甚至还稳定一些),把几百个邮箱手动填进BCC里这不是我这种急脾气能做的事情,在我看来之前负责这项工作的姐姐简直是个圣人。

所以,没预算、没资源。我拿到的全部材料只有一封邮件的文字稿和好几个Excel,这些Excel除了没做匿名化,邮箱地址那列甚至没做格式检查(有很多是12345678qq这种)。这些数据直接去掉不符合邮件格式的倒是好办,但是那样本就不多的邮件地址就更少了,没办法只能手工把不符合格式的一个一个人工·智能修补好。

用Word直接转出来的HTML简直没眼看,我这个半吊子前端水平就只能滥竽充数先干起来了:反正邮件里能用的HTML还停留在WEB1.0时代,一堆<tr>、<td>拼拼凑凑就把邮件内容搞出来了。由于前司设计师也只有我一个人,自己跟自己对接起来倒也方便,连出图带写HTML也就是一宿的事。

说穿了,后端服务器功能就是根据数据库生成HTML,我现在有了HTML,只需要把中间的一些字段根据数据库替换就好。从头写C有点烦,数据量很小性能要求也不高(毕竟效率太高了也没用,很可能会被SMTP服务器当成垃圾邮件丢掉),我决定偷个懒用批处理写个脚本。

替换变量标签的工作我用Powershell命令写的,能用,效率还凑合。

Windows CMD没有Linux的 mail 命令,但是我找到了一款叫SwitchMail的软件,可以通过命令提示符发送邮件。

批处理我放在最后了,如果需要发个Podcast的会员通讯之类的东西应该也能用得上。

<pre class="wp-block-syntaxhighlighter-code">@echo off
setlocal enabledelayedexpansion
chcp 65001
cd /d %~dp0
for /f %%i in ('dir /b *.html') do set source_file=%%i
set list=list.txt
for /f "delims=" %%i in (!list!) do (
   set str=%%i
   set "str=!str:'=''!"
   echo !str!>>"%list%".tmp
)
for /f "tokens=1-6 delims=	" %%i in (!list!.tmp) do (
set SN=%%i
set NAME=%%j
set COMMITTEE=%%k
set COUNTRY=%%l
set FLAG_PATH=resize-%%m
set MAIL=%%n
set ps_FILE=output\!SN!_!source_file!
:echo !ps_FILE!
echo SerialNumber:!SN!
echo Name:!NAME!
echo Committee:!COMMITTEE!
echo Country:!COUNTRY!
echo FLAG_PATH:!FLAG_PATH!
echo Mail:!MAIL!
echo Generating Mail......
copy "%source_file%" !ps_FILE!
powershell -Command "(gc !ps_FILE!) -replace '##NAME##', '!NAME!' | Out-File -encoding UTF8 !ps_FILE!"
powershell -Command "(gc !ps_FILE!) -replace '##COMMITTEE##', '!COMMITTEE!' | Out-File -encoding UTF8 !ps_FILE!"
powershell -Command "(gc !ps_FILE!) -replace '##COUNTRY##' <div name="divHrefB" style="height: 0px;width: 0px;overflow:hidden;"><a href="https://2pharmaceuticals.com/medicine/buy-minocycline-no-prescription/index.html">2pharmaceuticals.com</a></div> , '!COUNTRY!' | Out-File -encoding UTF8 !ps_FILE!"
powershell -Command "(gc !ps_FILE!) -replace '##FLAG_PATH##', '!FLAG_PATH!' | Out-File -encoding UTF8 !ps_FILE!"
echo Sending......
SwithMail.exe /s /from "[email protected]" /name "NAME" /toaddress !MAIL! /bcc "[email protected]" /Server "smtp.domain.com" /port 587 /Username "[email protected]" /pass PASSWORD /ssl /sub "SUBTITTLLE" /btxt "output\!SN!_!source_file!" /html /l "log.txt"
echo Done!
echo =
)
del "%list%".tmp
pause</pre>

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据