目的
利用 php 网页实现邮件通知
支持 tls 或者 smtp 带用户密码校验进行邮件发送
问题
默认下 php 支持通过 sendmail 命令, 通过 smtpserver 进行邮件发送
但 php mail() 函数默认不提供用户密码验证方法
解决方法
php required
yum install -y epel-release
yum install -y php-PHPMailer
利用上面这个库可以使用默认 PHP rpm 完成发送邮件功能
假如你使用编译方法运行 php , 那么可以到 官方 git 下载最新版本软件 (编译 php + php-phpMailer 略)
php 代码 example:
<?php
require "/usr/share/php/PHPMailer/class.phpmailer.php";
require "/usr/share/php/PHPMailer/class.smtp.php";
header("Content-Type: text/html;charset=utf-8");
function mailtest() {
$mail = new PHPMailer;
$mail->setFrom('warning@xxxx.com '); <- 等于 From:
$mail->addAddress('terry.zeng@xxxxx.com'); <- 等于 To:
$mail->Subject = "[告警] : title and 中文测试";
$mail->Body = "hi 邮件内容 <br><table><tr><th>header</th></tr><tr><td>中文测试1</td></tr><tr><td>创建客户端</td></tr></table>";
// $mail->CharSet = PHPMailer::CHARSET_UTF8; (新版本语法)
$mail->isHTML(true);
$mail->isSMTP();
$mail->SMTPDebug = SMTP::DEBUG_SERVER;
$mail->CharSet = 'utf-8'; <- rpm 版本语法
//$mail->SMTPSecure = 'smtp';
$mail->Host = 'smtp.mailserveraddresscom';
$mail->SMTPAuth = true;
$mail->Port = 25;
$mail->Username = 'mailuser';
$mail->Password = 'mailpasswd';
if(!$mail->send()) {
echo 'Email is not sent.';
echo 'Email error: ' . $mail->ErrorInfo;
} else {
echo 'Email has been sent.';
}
}
mailtest();
?>
本文介绍如何在 CentOS7 系统中利用 PHP 的 mail() 函数结合 phpMailer 库,实现通过 TLS 或 SMTP 并进行用户密码验证的方式发送邮件。针对 PHP 默认不支持密码验证的问题,提供了解决方案和代码示例。

4137

被折叠的 条评论
为什么被折叠?



