PHP利用smtp类发送邮件实例
需要的类文件: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>标 题:<input type="text" name="smtprtitle" /></p> <p>内 容:<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。也就是说,自己需要再写一些方法实现先判断这个收件人邮箱是否有效,然后在进行发送操作。
先暂时到这里,因为这次的邮箱功能我准备自己实现一些功能的邮件报警系统,暂不需要进行验证注册机制什么的,后面有需要的时候再继续更新。
评论