使用云服务器搭建邮局
很多时候我们喜欢使用一个独特的邮箱,例如本站的
1@blogweb.cn
,或者使用服务器搭建邮局作为群发邮件的方法,最近在接到一个邮件群发系统的需求,如果使用第三方厂商的SMTP需要手机号码获取,大批量获取肯定行不通,只能是通过云服务器自建。
本文以宝塔Linux为例,服务器使用免费的阿里云,域名的话在阿里云上随便买一个便宜的10元以内就可以。
安装环境
在宝塔Linux中搜索邮局,安装插件后,会指引你安装所需环境。
我系统是Ubuntu 20.04 LTS,在安装这个插件时候不知道什么原因总是安装错误,我的解决方式是:先安装4.6在升级成4.8,如果其中有哪一个环境安装失败就百度搜索一下不在邮局插件中安装自己使用命令行安装。
安装插件后按照顺序处理这些问题即可,根据提示操作非常简单。
信息填写
填写你买的域名以及A记录,A记录在域名前面加上mail.
即可.
域名解析
域名解析
在成功添加域名后我们会看到这个:
我们只需要按照他要求的解析方式在域名的云服务器厂商控制台解析一下即可
大致的配置就是这样
我们在控制台配置好之后不需要一直点认证,基本都是需要过几分钟才能完全生效。
SSL
因为云服务器厂商通常会禁止用户使用25端口发送域名,在购买服务器时有时会关闭25端口(相关法律规定),所以我们可以再用POP3的110端口+SSL的465端口来进行加密发送。
下载证书,点击宝塔邮局中的SSL,对应填写即可。(注意:下载mail开头的子域名的那个,填写A记录的那个),例:mail.example.com
添加用户
添加用户类似于SMTP账号。如果需求量大可以使用批量添加。
测试
这里我们使用Node.js的插件nodemailer测试 Demo:
邮箱模块:
import nodemailer from "nodemailer";
interface paramsType {
/** 接收人*/
target: string;
/** 主题*/
subject: string;
/** 内容HTML*/
content: string;
}
let transporter = nodemailer.createTransport({
host: "mail.emailemail.top",
port: 465,
secure: true, //SSL
auth: {
user: `blogweb@emailemail.top`,
pass: `blogweb.CN123`,
},
});
function sendEmail(params: paramsType) {
return new Promise<void>((resolve, reject) => {
let mailOptions = {
from: `blogweb@emailemail.top`,
to: params.target,
subject: params.subject,
html: params.content,
};
transporter.sendMail(mailOptions, (error, info) => {
console.log(error, info);
if (error) {
reject(error);
} else {
resolve();
}
});
});
}
export default sendEmail;
路由:
import Router from "@koa/router";
let router = new Router();
import email from "@/common/utils/email";
router.get("/send", async ctx => {
email({
target: "1974109227@qq.com",
subject: "您好",
content: `
<h2>您好</h2>
<div>这是您需要的测试服务</div>
<div>如果你需要网站开发、计算机毕设代写、计算机论文请联系QQ:1974109227</div>
现在是北京时间:${new Date()}
`,
});
});
export default router;
用Postman测试后:
目标优先收到邮件:
(因为有广告会被QQ邮箱拦截的缘故,我在测试中删掉了广告词条)