在 CentOS 上配置 PHP 以发送邮件,通常需要以下几个步骤:
首先,确保已经安装了以下软件包:
使用以下命令安装这些软件包:
sudo yum install php php-mysql php-pdo php-mbstring php-xml php-gd php-mcrypt php-curl
Sendmail 是一个常用的邮件传输代理(MTA),用于在本地和远程系统之间发送邮件。要安装 Sendmail,请运行以下命令:
sudo yum install sendmail sendmail-cf mailx
接下来,配置 Sendmail。打开 /etc/mail/sendmail.cf
文件:
sudo vi /etc/mail/sendmail.cf
找到 O DaemonPortOptions
行,并取消注释(删除行首的 #
),将端口号更改为 587(或您选择的任何其他端口):
O DaemonPortOptions=Port=smtp, Name=MTA-v4, M=Ea
保存并关闭文件。
现在,重启 Sendmail 服务以应用更改:
sudo systemctl restart sendmail
以 PHPMailer 为例,首先使用 Composer 安装 PHPMailer:
composer require phpmailer/phpmailer
然后,在您的 PHP 脚本中使用 PHPMailer 发送邮件。创建一个名为 send_email.php
的新文件,并添加以下内容:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
$mail = new PHPMailer(true);
try {
// Server settings
$mail->SMTPDebug = SMTP::DEBUG_SERVER;
$mail->isSMTP();
$mail->Host = 'localhost';
$mail->SMTPAuth = true;
$mail->AuthType = SMTP::AUTH_LOGIN;
$mail->Port = 587;
$mail->SMTPSecure = SMTP::ENCRYPTION_STARTTLS;
// Sender and recipient
$mail->setFrom('your-email@example.com', 'Mailer');
$mail->addAddress('recipient@example.com', 'Recipient Name');
// Content
$mail->isHTML(true);
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
将 your-email@example.com
和 recipient@example.com
替换为您的发件人和收件人电子邮件地址。
最后,运行脚本以发送邮件:
php send_email.php
如果一切正常,您应该会看到 “Message has been sent” 的消息,并且收件人将收到一封电子邮件。
注意:在实际生产环境中,建议使用更安全的邮件传输代理(如 Postfix 或 Exim)以及更强大的身份验证和加密设置。此外,不要在脚本中硬编码敏感信息,如电子邮件地址和密码。相反,使用环境变量或配置文件来存储这些信息。