在CentOS系统中配置PHP通过SMTP发送邮件,核心思路是借助PHPMailer或SwiftMailer这类成熟的开源库,将邮件发送的底层细节(如协议握手、认证、加密等)封装好,开发者只需专注于业务逻辑即可。下面以PHPMailer为例,详细讲解完整的配置流程。

先解决依赖管理问题。PHPMailer官方推荐使用Composer进行安装,其优势在于自动加载与版本控制,能显著提升开发效率。如果你尚未安装Composer,只需两步即可完成:
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
然后在项目根目录下执行以下命令:
composer require phpmailer/phpmailer
下一步是SMTP配置的核心环节。你需要准备真实的SMTP服务器信息,例如使用网易、QQ邮箱的SMTP服务,或者自建邮件服务器。下面这段代码展示了标准的使用方法,关键参数已添加注释:
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
$mail = new PHPMailer(true);
try {
// 服务器设置
$mail->SMTPDebug = SMTP::DEBUG_SERVER; // 开启调试输出,上线时建议改为0
$mail->isSMTP(); // 使用SMTP
$mail->Host = 'smtp.example.com'; // SMTP服务器地址
$mail->SMTPAuth = true; // 启用SMTP认证
$mail->AuthType = SMTP::AUTH_LOGIN; // 认证类型
$mail->Port = 587; // TCP端口(常用587或465)
$mail->SMTPSecure = SMTP::ENCRYPTION_STARTTLS; // 启用TLS加密
// 认证信息
$mail->Username = 'your_email@example.com'; // SMTP用户名
$mail->Password = 'your_password'; // SMTP密码
// 收件人
$mail->setFrom('from@example.com', 'Mailer');
$mail->addAddress('recipient@example.com', 'Joe User');
// 内容
$mail->isHTML(true);
$mail->Subject = '这里是邮件的主题';
$mail->Body = '这是一封测试邮件
这里是HTML格式的邮件内容';
$mail->AltBody = '这是一封测试邮件,这里是纯文本内容';
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
将上述代码中的SMTP服务器地址、端口、用户名和密码替换为你自己的实际信息即可。运行该脚本也很简单,保存为sendmail.php,然后在终端中执行:
php sendmail.php
如果一切正常,你将看到输出“Message has been sent”。但需要注意,不同的SMTP服务商在端口和安全协议上可能略有差异——例如QQ邮箱的SMTP端口为465,此时需要将SMTPSecure改为'ssl';而许多企业邮箱默认使用587端口并搭配TLS加密。此外,安全性是必须重视的环节:直接在代码中硬编码用户名和密码并不可取,更推荐通过环境变量或配置文件来管理敏感信息,从而有效避免泄露风险。
