成长值: 252 签到天数: 4709 天 [LV.Master]伴坛终老
|
发表于 2020/2/25 21:54
|
显示全部楼层
|阅读模式
|Google Chrome 80.0.3987.122 |Windows 10
linux PHP函数发送邮件为什么在垃圾箱介绍 发信软件,为什么要设置spf
Linux下发送邮件的软件主要是sendmail和postfix
sendmail是老牌的邮件软件,知名度非常高。
postfix是sendmail的升级进化版,主要配置文件是/etc/postfix/main.cf,配置文件的注释非常全,选项基本是自解释的。
PHP的mail函数
作为PHP开发中,了解sendmail/postfix还是有点用处。mail函数默认使用sendmail/postfix发送邮件,了解相关配置,就能知道为啥能工作/为啥不能工作。
简单来说,要让PHP自带的mail函数正常工作,需要做以下事情:
申请域名,在DNS解析中设置MX记录,指向本机(非合法主机(FQDN, Fully Qualified Domain Name)发送的所有邮件都会被当做垃圾邮件直接拦截丢弃或者进入垃圾箱);
安装sendmail/postfix,配置软件并运行;
配置防火墙、安全组,放行25端口。
发送效率低、配置麻烦以及vps云服务器的端口封锁,是使用mail函数的最大阻碍。
PHP发送邮件
首先,在项目中引入Swift Mailer:
- composer require "swiftmailer/swiftmailer:^6.0"
复制代码
然后准备好邮件内容(以文本文件为例,不带附件):
- $message = (new Swift_Message('Test Message'))
- ->setFrom(['admin@baidu.com' => 'admin'])
- ->setTo(['no-reply@baidu.com'])
- ->setBody('Hello, this is a test mail from Swift Mailer!');
复制代码
接着,设置好邮件传输方式(使用Gmail邮箱):
- $transport = (new Swift_SmtpTransport('smtp.gmail.com', 465, 'ssl'))
- ->setUsername('username')
- ->setPassword('password');
复制代码
或者使用sendmail/postfix的方式(不推荐):
- $transport = (new Swift_SendmailTransport());
复制代码
最后,使用transport构造mailer实例,成功发送邮件:
- $mailer = new Swift_Mailer($transport);
- $result = $mailer->send($message);
复制代码
php发信没有ip过白名单信誉度最好不要搞,百分百进垃圾箱
也就是上面所说的(设置MX记录,指向本机(非合法主机(FQDN, Fully Qualified Domain Name))
并且需要增加txt记录值,内容为 v=spf1 include:spf.itzmx.com -all
例如WordPress,php发信使用的是sendmail软件,如果你用的postfix那么也是发不出的
php发信要设置好系统和php.ini,具体百度下,如果发不出去都有php报错
|
评分
-
查看全部评分
|