答案:PHP命令行脚本可通过mail()函数、PHPMailer或第三方API发送邮件和短信通知。1. 使用mail()函数可快速实现简单邮件告警,但依赖服务器配置;2. PHPMailer支持SMTP认证,适合生产环境,可发送HTML邮件并处理异常;3. 短信通知推荐阿里云等平台SDK,通过RPC调用SendSms接口;4. 建议封装sendAlert等通用函数复用逻辑;5. 定期测试通道有效性,确保告警及时送达。

在PHP命令行脚本中发送系统通知,比如邮件或短信,常用于定时任务、服务监控、日志告警等场景。这类通知能帮助开发者及时掌握程序运行状态。下面介绍几种实用的方法。
对于简单的邮件通知,可以使用PHP的内置 mail() 函数,无需额外扩展,适合轻量级需求。
注意:该方式依赖服务器配置的sendmail或SMTP支持,部分主机可能禁用。示例代码:
$to = 'admin@example.com';
$subject = '系统告警:服务异常';
$message = '检测到服务停止,请立即处理。';
$headers = 'From: notify@yourapp.com' . "\r\n" .
'Reply-To: notify@yourapp.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
if (mail($to, $subject, $message, $headers)) {
echo "邮件已发送。\n";
} else {
echo "邮件发送失败。\n";
}
推荐在生产环境中使用 PHPMailer,它支持SMTP认证,发送更稳定,可设置HTML内容、附件等。
立即学习“PHP免费学习笔记(深入)”;
安装方法(建议使用Composer):
composer require phpmailer/phpmailer
命令行脚本中使用示例:
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
$mail = new PHPMailer(true);
try {
$mail->isSMTP();
$mail->Host = 'smtp.example.com';
$mail->SMTPAuth = true;
$mail->Username = 'your@email.com';
$mail->Password = 'your-password';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
$mail->setFrom('from@example.com', '系统通知');
$mail->addAddress('admin@example.com');
$mail->isHTML(true);
$mail->Subject = '【紧急】系统错误';
$mail->Body = '数据库连接失败,请检查服务状态。';
$mail->send();
echo "邮件通知已发出。\n";
} catch (Exception $e) {
echo "邮件发送失败:{$mail->ErrorInfo}\n";
}
短信适合紧急告警。国内常用阿里云、腾讯云、七牛云等平台提供短信服务。
以阿里云为例,需安装SDK:
composer require alibabacloud/sdk
发送短信示例:
require 'vendor/autoload.php';
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
AlibabaCloud::accessKeyClient('your-access-key', 'your-secret')
->regionId('cn-hangzhou')
->asDefaultClient();
try {
$result = AlibabaCloud::rpc()
->product('Dysmsapi')
->scheme('https')
->version('2017-05-25')
->action('SendSms')
->method('POST')
->host('dysmsapi.aliyuncs.com')
->options([
'query' => [
'PhoneNumbers' => '13800138000',
'SignName' => '你的签名',
'TemplateCode' => 'SMS_12345678',
'TemplateParam' => json_encode(['code' => '9527'])
]
])
->request();
print_r($result->toArray());
} catch (ClientException | ServerException $e) {
echo $e->getMessage();
}
将邮件和短信功能封装成函数,在命令行脚本中按需调用。
例如:
function sendAlert($title, $message) {
// 发送邮件
sendEmail('admin@example.com', $title, $message);
// 可选:同时发短信
// sendSMS('13800138000', $message);
}
// 在CLI脚本中使用
if ($serviceDown) {
sendAlert('服务中断', 'MySQL服务无响应');
}
基本上就这些。根据实际环境选择合适的方式,确保关键信息能及时送达。注意保护密钥,避免泄露。不复杂但容易忽略的是测试通道是否畅通,建议定期验证通知机制。
以上就是PHP命令怎么发送系统通知_PHP命令行发送邮件/短信通知方法的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号