域名的用处,除了常见的作为网站的网址,还可以拿来做自己的域名邮箱。
好处是:你从此拥有了无限个马甲邮箱,于是注册网站再也不费劲了,每个网站都用不同的邮箱注册,如果有垃圾邮件还可以根据邮箱地址判断是哪个网站泄露的。
另外一个显而易见的好处是:拉风!
要做到这个效果,需要把发送往某个域名的邮件都集中到一个邮箱管理。
在比较并试用了网上各种方案后,在此列出三个我比较认同的方案。
一、通过域名注册商提供的服务
某些域名注册商如Godaddy是提供邮件转发服务的,利用这个服务把邮件转发到我们自己的邮箱就行了。
如godaddy中,找到“我的产品”,点开“workspace邮件”,可以开启免费邮件转发服务。然后去“邮件”页面,设置转发即可(create forward),域名邮箱前边无所谓,只要域名对了就行,然后填入要转发到的地址,最后再把“catch-all”勾上。
优点:设置最简单,可以管理多个域名,并且是使用你自己习惯的邮箱管理(如gmail)。
缺点:只能接收无法发送。
另外,godaddy转发的邮件google提示没有加密,并且有一个很长的“通过secureserver.net转发”的标记,这对我这个“完美主义者”来说是没法忍受的。
二、通过企业邮箱进行管理
虽然大家都在吐槽腾讯的企业邮箱,可不得不说我这一圈试用下来,还是腾讯的企业邮箱方便一些,尤其是腾讯企业邮箱跟微信整合的非常完美,这点很不错。如果你不想付费使用google apps之类的服务,那免费的腾讯企业邮箱非常值得一试,此外,还有汉化感人的Zoho,没有汉化的yandex等可供选择,这方面搜“企业邮箱”一大把。
注册管理员邮箱后,记得要把“邮件转移”指向管理员邮箱,让这个域名下所有邮件都发到同一个邮箱中。
优点:因为是企业邮箱,所以各种管理都很方便,大多还提供免费空间、协同办公等功能,也可以方便的创建账户给别人使用,腾讯的还可以绑定微信。
缺点:大多免费的服务只能绑一个域名,另外具体服务质量就因企业而异了,比如网上很多人说腾讯会收不到邮件(我并没有遇到)。
腾讯的邮箱没有存档功能,跟qq邮箱的区别就是没有广告。。。虽然还不错,不过作为一个折腾星人,我最终选择了第三个方案。
三、Gmail + mailgun 方案
mailgun并不是上文中提到的企业邮箱,而是面向开发者提供的邮件服务,用于实现网站自动发邮件或回复邮件等功能。
注册mailgun以后,先绑定自己的域名。再去routes设定catch_all()
, forward("你的邮箱地址")
,这样所有发往你域名的邮件就都被转到你自己的邮箱中了。
mailgun取消了pop服务器,所以要找一个可以只设定smtp服务的邮箱来发邮件,这时候gmail就出场了。
先去mailgun的domains,点进你的域名,点Manage SMTP credentials,添加一个你喜欢的邮箱名字,这里密码可以设定的复杂一些,因为只会用到一次。
然后去gmail,设置中设定发邮件账户,把刚才的smtp账户填进去就行,注意smtp服务器是mailgun的smtp.mailgun.org,不是你的域名。
这样,你就可以完美用gmail收发自己域名的邮件了,在mailgun中也可以绑多个域名,然后gmail通通帮你搞定。
这个方案完美的将域名邮箱作为gmail的小号,没有一丝多余。
要说还有什么不完美,那就是gmail需要翻墙(逃
附、域名邮箱有关的DNS设定
要将自己的域名绑到对应的邮箱服务,需要去DNS里设定几条记录,具体内容可以查看相应站点的帮助。
其中MX记录是必须的,你需要绑定相应的地址,才能正确收到邮件,而且最好把多余的MX记录都删掉。
为了验证邮件确实是你发的,也最好设置SPF,这个一般的服务商都有提供,是类似于”v=spf1 include:mailgun.org ~all”的TXT记录。像mailgun还会提供DKIM,也是用于验证邮件的,有提供的话需要一并添加到DNS中。
如果需要使用自己域名的pop、imap、smtp等服务,还要添加相应的CNAME记录。
至此,属于你自己的域名邮箱就完成了,三个方案各有优劣。
如果你用不到发邮件,只是注册用一下马甲邮箱,也没有强迫症,那第一个方案最合适。
如果你需要的不仅仅是邮箱,还有一系列企业管理功能和人性化功能,那第二个方案合适。
如果你经常用gmail,也不需要多一个企业邮箱去管理,那第三个方案最合适。
除了这三个方案,还可以自己搭邮箱服务器,这个对一般人就不太推荐了,专业的事情还是交给专业的服务比较好。
使用MailGun发送邮件
MailGun提供邮件发送服务。注册完账号后,提供一个域名地址,并配置DNS后,即可使用。
域名配置
MailGun建议使用二级域名,因此我提供了一个inc.berlinix.com的域名专供邮件发送。
1.0 发送邮件的DNS记录
添加一个TXT
记录(SPF & DKIM),这样才能用MailGun发送邮件:
TXT inc.berlinix.com v=spf1 include:mailgun.org ~all
2.0 跟踪邮件的DNS记录
CNAME email.inc.berlinix.com mailgun.org
3.0 接受邮件的DNS记录
MX 10 mxa.mailgun.org
MX 10 mxb.mailgun.org
完成配置后,回到MailGun,可以验证域名是否配置成功。
发送邮件
通过curl发送邮件
通过API发送邮件
从Dashboard获取Secret API kye,用于发送邮件。
curl -s --user "api:YOUR-API-KEY" \
https://api.mailgun.net/v3/inc.berlinix.com/messages \
-F from="Sales <sales@inc.berlinix.com>" \
-F to="jack@163.com" \
-F subject="Hello, sale start" \
-F text="Testing MailGun send mail."
通过SMTP发送邮件
首先下载一个Perl+Curl写的命令行工具swks:
$ curl http://www.jetmore.org/john/code/swaks/files/swaks-20130209.0/swaks -o swaks
$ chmox + swaks
通过swks发送邮件:
./swaks --auth \
--server smtp.mailgun.org \
--au postmaster@inc.berlinix.com \
--ap PWD-FOR-POSTMASTER \
--to jack@163.com \
--h-Subject "Welcome to my shop" \
--body "Start sales now."
注意,从MailGun的Domains里,找到SMTP发件人邮箱和密码。
通过PHP发送邮件
首先通过composer下载依赖库:
$ cat composer.json
{
"require": {
"phpmailer/phpmailer": "~5.2",
"mailgun/mailgun-php": "~2.0",
"php-http/guzzle6-adapter": "^1.0"
}
}
$ composer install
通过API发送邮件
<?php
require_once("vendor/autoload.php");
use Mailgun\Mailgun;
$client = new Http\Adapter\Guzzle6\Client();
$mailer = new Mailgun("key-", $client);
$domain = "inc.berlinix.com";
$res = $mailer->sendMessage($domain, [
"from" => "Sales <sales@inc.berlinix.com>",
"to" => "jack@163.com",
"subject" => "Say hello",
"text" => "Top sale news."
]);
echo $res->http_response_code . "\n";
echo $res->http_response_body->id . "\n";
echo $res->http_response_body->message . "\n";
?>
通过SMTP发送邮件
<?php
require_once("vendor/autoload.php");
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = "smtp.mailgun.org";
$mail->SMTPAuth = true;
$mail->Username = "postmaster@inc.berlinix.com";
$mail->Password = "password";
$mail->SMTPSecure = "tls";
$mail->From = "sales@inc.berlinix.com";
$mail->FromName = "Sales";
$mail->addAddress("jack@163.com"); // 收件人邮箱
$mail->Subject = "Say hello";
$mail->Body = "Test for my MailGun.";
if(!$mail->send()) {
echo "Message cannot be sent.\n";
echo "Mailer Error: " . $mail->ErrorInfo . "\n";
} else {
echo "Message has been sent.\n";
}
?>
本文出自:
文章评论