首页 > 编程技术 > php

使用php的编码功能-实例调用(3)

发布时间:2016-11-25 17:02

<?php
include_once("mime.inc");
$mm = new MIME();
$to = "customer@263.net";
$subject = $mm->encode("商城","gb2312"); // 编码
$msg = "注册会员成功<br>";
$msg .= "会员名:wayne<br>";
$msg .= "密码:wayne</font>";
$headers = "From: webmaster@263.net Content-Type: text/html; charset=gb2312 ";
mail("$to", "$subject", "$msg", "$headers");    
?>
进行编码以后,中文问题解决。
用Socket发送电子邮件--续篇    
作者:limodou    
  在前面我曾经写过一篇文章,介绍了如何利用socket编程来发送邮件,以解决web服务器不支持mail()函数的问题。经过我的测试也是可以使用的。但目前众多的免费邮件提供商(从263开始,163,新浪网也快开始了)均在smtp功能上增加了认证功能,使得原邮件发送类无法使用。在经过对相应smtp后续rfc的学习之后,经过了多次的试验,我终于试验成功了。于是怀着急迫的心情向大家介绍。
 
SMTP 认证功能介绍    
  此处不想向你详细介绍SMTP认证功能,因为我也说不清楚,详细的请参考[RFC 2554]规范。SMTP的认证功能主要是增加了AUTH命令。AUTH命令有多种用法,而且有多种认证机制。AUTH支持的认证机制主要有LOGIN,CRAM-MD5[注1]等。LOGIN应该是大多数免费邮件服务器都支持的,263与新浪都支持。而新浪还支持CRAM-MD5机制。认证机制一般只在真正发送邮件之前进行,而且只需要执行一次。当认证成功后,即可按原来正常的处理发送邮件。原理是口令-应答(Challenge-Response),即由服务器发送命令要求客户端回答,客户端根据服务器发送信息进行回答,如果应答通过了,则认证成功,即可继续处理。下面对这两种制作一个简单介绍。S:表示服务器返回,C:表示客户端发送。
 
LOGIN    
它应该比较简单。口令-应答过程如下:    
1     C: AUTH LOGIN    
2     S: 334 dXNlcm5hbWU6    
3     C: dXNlcm5hbWU6    
4     S: 334 cGFzc3dvcmQ6    
5     C: cGFzc3dvcmQ6    
6     S: 235 Authentication successful.    
1 为客户端向服务器发送认证指令。
 
2 服务端返回base64编码串,成功码为334。编码字符串解码后为“username:”,说明要求客户端发送用户名。
 
3 客户端发送用base64编码的用户名,此处为“username:”。
 
4 服务端返回base64编码串,成功码为334。编码字符串解码后为“password:”,说明要求客户端发送用户口令。
<?php
/*
    include "mime_mail.inc";
    $filename     = "testfile.jpg";
    $content_type = "image/jpeg";
    # 坐取磁碟彦的 JPEG <?php
// $Horde: horde/lib/MIME.php,v 1.63 2001/08/08 21:00:27 chuck Exp $
$mime_types =
array(
        TYPETEXT => 'text', 'text' => TYPETEXT,
        TYPEMULTIPART => 'multipart', 'multipart' => TYPEMULTIPART,
        TYPEMESSAGE => 'message', 'message' => TYPEMESSAGE,
        TYPEAPPLICATION => 'application', 'application' => TYPEAPPLICATION,
        TYPEAUDIO => 'audio', 'audio' => TYPEAUDIO,
        TYPEIMAGE => 'image', 'image' => TYPEIMAGE,
        TYPEVIDEO => 'video', 'video' => TYPEVIDEO,
        TYPEOTHER => 'unknown', 'unknown' => TYPEOTHER
        );
$mime_encodings =
array(
        ENC7BIT => '7bit', '7bit' => ENC7BIT,
        ENC8BIT => '8bit', '8bit' => ENC8BIT,
        ENCBINARY => 'binary', 'binary' => ENCBINARY,
        ENCBASE64 => 'base64', 'base64' => ENCBASE64,
        ENCQUOTEDPRINTABLE => 'quoted-printable', 'quoted-printable' => ENCQUOTEDPRINTABLE,
        ENCOTHER => 'unknown', 'unknown' => ENCOTHER
        );
/**
* The MIME:: class provides methods for dealing with MIME standards.
*
* @author    Chuck Hagenbuch <chuck@horde.org>
* @version $Revision: 1.64 $
* @since     Horde 1.3
应用实例
(作者:陈俊清 2000年10月18日 11:58)
  POP3收取邮件的类在前面的文章中已经给大家做了详细的介绍,下面我们来看看如何应用这个类:
  <?
  include("pop3.inc.php");
  $host="pop.china.com";
  $user="boss_ch";
  $pass="026007";
  $rec=new pop3($host,110,2);
  if (!$rec->open()) die($rec->err_str);
  echo "open ";
  if (!$rec->login($user,$pass)) die($rec->err_str);
  echo "login";
  if (!$rec->stat()) die($rec->err_str);
  echo "共有".$rec->messages."封信件,共".$rec->size."字节大小<br>";
  
  if ($rec->messages>0)
   {
   if (!$rec->listmail()) die($rec->err_str);
   echo "有以下信件:<br>";
   for ($i=1;$i<=count($rec->mail_list);$i++)
   {
   echo "信件".$rec->mail_list[$i][num]."大小:".$rec->mail_list[$i][size]."<BR>";
   }
   $rec->getmail(1);
   echo "邮件头的内容:<br>";
   for ($i=0;$i<count($rec->head);$i++)
   echo htmlspecialchars($rec->head[$i])."<br> ";
   echo "邮件正文 :<BR>";
   for ($i=0;$i<count($rec->body);$i++)
   echo htmlspecialchars($rec->body[$i])."<br> ";
   }
  $rec->close();
  ?>
  如果你把pop3类中的debug设为true的话,你还可以看到程序与pop3服务器是如何对话的,用于正在调试的程序来说,这样显得更为直观。
  小结
  从以上的这个实例我们可以看到PHP真的是网站开发的一个功能非常强大的工具,但是也可以感觉到,PHP做为一种混合形的语言,其面对对象的开发与其它的工具如java相比还存在不少让人遗憾的地方。这个pop类的实现也还有不少需要改进之处,欢迎各位同仁们指导。
  如有想要取得完整的源代码的朋友,请与本人联系: boss_ch@netease.com
标签:[!--infotagslink--]

您可能感兴趣的文章: