小樱 发表于 2020/2/25 21:54

linux PHP函数发送邮件为什么在垃圾箱介绍 发信软件,为什么要设置spf

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报错

页: [1]
查看完整版本: linux PHP函数发送邮件为什么在垃圾箱介绍 发信软件,为什么要设置spf