PHP利用smtp类发送邮件实例

流氓凡 PHP程序源码 2019-11-11 5.47 K 0

需要的类文件:class.phpmailer.php    class.smtp.php

这两个文件内容较多,这里直接提供下载了 类文件.zip 

模拟测试使用的是QQ邮箱,邮箱密码一定要使用的是授权码而不是邮箱密码,无论是163还是qq还是什么其他邮箱。

index.php文件代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PHP利用smtp类发送邮件范例</title>
</head>

<body>

<form action="doMail.php" method="post">
<p>收件人:<input type="text" name="smtprmail" /></p>
<p>标&nbsp;&nbsp;题:<input type="text" name="smtprtitle" /></p>
<p>内&nbsp;&nbsp;容:<textarea name="smtprbody" cols="50" rows="5"></textarea></p>
<p><input type="submit" value="发送" /></p>
</form>
</body>

</html>

doMail.php文件代码:

<?PHP
header("Content-Type:text/html;charset=utf-8");
//配置发件信息
$smtpserver = "smtp.qq.com"; //邮件服务器
$smtpserverport = "465"; //端口
$smtpusermail = "1234@qq.com"; //用于发信的地址,如:1234@qq.com
$smtpname = "你的小可爱"; //用于显示的发信名称
$smtpuser = "1234@qq.com"; //用于发信的邮件账户,如:1234@qq.com
$smtppass = "qvnpxdsakdajefe"; //SMTP服务器的授权码,注意:这里不要去填写邮箱的密码,需要填写邮箱的授权码才可以

//收件人信息
$smtprmail = $_POST['smtprmail']; //获取收件人地址
$smtprtitle = $_POST['smtprtitle']; //获取邮件标题
$smtprbody = $_POST['smtprbody']; //获取邮件正文

//引入PHPMailer类文件
require_once("class.phpmailer.php");
//实例化PHPMailer对象
$mail = new PHPMailer();
//是否启用smtp的debug进行调试
$mail->SMTPDebug = 0;
$mail->isSMTP();
//smtp需要鉴权 这个必须是true
$mail->SMTPAuth = true;
//服务器地址
$mail->Host = $smtpserver;
//设置使用ssl加密方式登录鉴权
$mail->SMTPSecure = 'ssl';
//设置ssl连接smtp服务器的远程服务器端口号 可选465或587
$mail->Port = intval($smtpserverport);
$mail->CharSet = 'UTF-8';
//设置发件人名称
$mail->FromName = $smtpname;
//smtp登录的账号
$mail->Username = $smtpuser;
//smtp登录的密码
$mail->Password = $smtppass;
//发件人邮箱地址
$mail->From = $smtpusermail;
//邮件正文是否为html编码
$mail->isHTML(true);
//设置收件人邮箱地址
$mail->addAddress($smtprmail);
//添加该邮件的主题
$mail->Subject = "=?utf-8?B?" . base64_encode($smtprtitle) . "?=";
//添加邮件正文
$mail->Body = $smtprbody;

//执行发送命令 返回布尔值
$status = $mail->send();
echo "<div style='width:300px; margin:36px auto;'>";
//简单的判断与提示信息
if ($status) {
echo "恭喜!邮件发送成功!!";
echo "<a href='index.php'>点此返回</a>";
} else {
echo "对不起,邮件发送失败!请检查邮箱填写是否有误。";
echo "<a href='index.php'>点此返回</a>";
exit();
}
echo "</div>";

?>

这里还需要注意的是,如果收件人不存在,并且不出现错误的情况下,依然会返回true。也就是说,自己需要再写一些方法实现先判断这个收件人邮箱是否有效,然后在进行发送操作。

先暂时到这里,因为这次的邮箱功能我准备自己实现一些功能的邮件报警系统,暂不需要进行验证注册机制什么的,后面有需要的时候再继续更新。

评论