作者:维生素-熙 | 来源:互联网 | 2013-08-06 09:34
在thinkphp学习中,往往会遇到很多的问题,邮箱发送问题在开发大型的站的时候不间断的会用到以及涉及;
下边就说下邮件发送的两种机制:
其一:站内发送邮件机制:这个不难理解,在同一个站内进行的邮件发送,即一个网站内的注册会员进行的网站内的邮件通信功能,这个非常多见在开发当中闲暇之余不妨多探讨一下,他的机制说简单也确实有点复杂,不过相比下一种比较简单的:
站内两个用户之间的通信,当然得先建立好用户发邮件时所用到的邮件数据,简单的说下:既然是用户之间的通信,必须得有用户名称抑或加一个用户昵称两 个字段,这是必须的,即使你不想让接收者看到发送者是谁 你也得必须建立,接受邮件一般有邮件标题,邮件内容,以及邮件附件内容(这个可以暂时不提及)
这两条抑或者是三条你必须得有字段保存数据之用,还有考虑到的就是用户在看是否有新的邮件未读的时候这需要一个独立的字段吧,这个字段简单里边储存1,2(举例说明下)在有新邮件发送的时候默认在这个字段里边填充数据1 在用户已经观看过以后更新成2 这个方便吧
在一个用户向另一个用户发送邮件的时候发送,向另一用户表下的字段填充为:标题,内容,判断是否以及读取的字段
在另一个用户读取的时候,更新数据字段
这是第一种站内短信形式的发送邮件,就是麻烦些,写起代码来也简单
邮件发送
第二种:通过邮件协议发送邮件pop3 stmp ==
这里小寒附上源码,
class MessageAction extends Action{
public function mail(){ //邮发方法的定义
$respOnse= trim($_POST['comment']); //用户通过表单POST过来的意见字符串。
if($respOnse==”)
{$this->redirect(‘index’,’Test’,”,APP_NAME,”1);//留言为空时跳转到留言页面
}
vendor(“PHPMailer.class#phpmailer”);//导入函数包的类class.phpmailer.php
//下面定义一个发送邮件的函数,已经测试通过。
//$sendto_email:邮件发送地址
//$subject:邮件主题
//$body:邮件正文内容
//$sendto_name邮件接受方的姓名,发送方起的名字。一般可省。
function smtp_mail ( $sendto_email, $subject=null, $body=null,$sendto_name=null) {
$mail = new PHPMailer(); //新建一个邮件发送类对象
$mail->IsSMTP();
// send via SMTP
$mail->Host = “202.38.64.8″; // SMTP 邮件服务器地址,这里需要替换为发送邮件的邮箱所在的邮件服务器地址
$mail->SMTPAuth = true;// turn on SMTP authentication 邮件服务器验证开
$mail->Username = “sdaping@mail.ustc.edu.cn”;// SMTP服务器上此邮箱的用户名,有的只需要@前面的部分,有的需要全名。请替换为正确的邮箱用户名
$mail->Password = “123456″;// SMTP服务器上该邮箱的密码,请替换为正确的密码
$mail->From = “sdaping@mail.ustc.edu.cn”;// SMTP服务器上发送此邮件的邮箱,请替换为正确的邮箱,$mail->Username 的值是对应的。
$mail->FromName =”网站用户”;// 真实发件人的姓名等信息,这里根据需要填写
$mail->CharSet = “utf-8″;// 这里指定字符集!
$mail->Encoding = “base64″;
$mail->AddAddress($sendto_email,$sendto_name);// 收件人邮箱和姓名
$mail->AddReplyTo(’sdaping@mail.ustc.edu.cn’,”管理员”);//这一项根据需要而设
//$mail->WordWrap = 50; // set word wrap
//$mail->AddAttachment(“/var/tmp/file.tar.gz”); // 附件处理
//$mail->AddAttachment(“/tmp/image.jpg”, “new.jpg”);
$mail->IsHTML(true);// send as HTML
// 邮件主题
$mail->Subject = $subject;
// 邮件内容
$mail->Body = ‘
’.$body.’’;
$mail->AltBody =”text/html”;
if(!$mail->Send())
{
echo”
”;
echo “
邮件发送有误
”;
echo “
邮件错误信息: ” . $mail->ErrorInfo.”
”;
echo “”;
exit;
}
else {
echo”
”;
echo “
邮件发送成功!
”;
echo “”;
}
}
// 参数说明(发送到的邮箱地址, 邮件主题, 邮件内容, 接受方的的姓名)
$sendto_mail=’admistrator@sites.com’;//填写要发送给管理员的邮件接受地址,请改为正确的地址
$subject=’网站建议’;//邮件主题
$body=$response;//意见内容
mail($sendto_mail,$subject,$body);//发送邮件
}
}
?>