Solicitando el código fuente de la clase de correo web
& lt?
$ servidor SMTP = " SMTP . 163 . com "; // servidor SMTP p >
$ smtpserverport = 25 // puerto del servidor SMTP p >
$ smtpusermail = " 123 @ 163 . com "; // Buzón de usuario del servidor SMTP
$ smtpemailto = " 8123 @ QQ com "; // ¿A quién?
$ smtpuser = " 123 @ 163 . com "; // Cuenta de usuario del servidor SMTP
$ smtppass = " sdffds // Contraseña de usuario del servidor SMTP
$ asunto del correo = $_POST[" form _ name "];//Asunto del correo electrónico
$ cuerpo del correo = " contenido//Contenido del correo electrónico
$ tipo de correo = " TXT / /Formato de correo electrónico (HTML/TXT), TXT es un correo electrónico de texto
$smtp = new smtp($smtpserver, $smtpserverport, true, $smtpuser, $SMTP pass); Significa utilizar autenticación; de lo contrario, no se utiliza ninguna autenticación.
$ SMTP-> debug = FALSE // ¿Quieres mostrar la información de depuración enviada?
$SMTP->sendmail($smtpemailto, $smtpusermail, $mailsubject, $mailbody, $mailtype);
clase smtp
{
/*Variables públicas*/
var $ smtp_port
var $time_out
var $host_name p>
var $ log_file
var $retransmisión_host
var $debug
var $auth
var $usuario ;
var $ pasar
/*variable privada*/
var $ calcetín
/*constructor*/
Función smtp($relay_host = " ", $smtp_port = 25, $auth = false, $usuario, $pass)
{
$ this-& >debug = FALSO
$this-& >smtp_port = $smtp_port
$this-& >relayhost = $relayhost;
p>$this->time_out= 30//Usado en fsockopen()
#
$this->auth=$auth/ /auth
$ this-& gt;user = $ usuario
$ this-& gt;pass = $ pass
#
$ this->host_name = "localhost//Usar en el comando HELO
$this->log_file =
$this-> calcetín = FALSE
}
/*Función principal*/
Función enviarcorreo($a, $de, $asunto = " ", $cuerpo = " ", $tipo de correo, $cc = " ", $bcc = " ", $additional_headers = " ") p>
{
$mail_from = $this->get _ dirección($this-& gt;strip _ comentario($ from));
$ cuerpo = ereg_replace("(^|(\r\n))(\\.)", "\ \1.\\3 ",$cuerpo);
$encabezado. = "Versión MIME:1.0 \ r \ n ";
if($mailtype=="HTML"){
$header. = " Tipo de contenido:text/html \ r \ n ";
}
$encabezado. = "Para:". $a. "\ r \ n";
if ($cc!= "") {
$encabezado. = "CC:". $cc. "\r\n";
}
$encabezado. = "De:$ De <.$de." & gt\ r \n ";
$header. = "Tema:".
$asunto. "\r\n";
$encabezado. = $additional_headers
$encabezado. = "Fecha:". fecha("r"). "\r\n";
$encabezado. = "X-Mailer:Por Redhat (PHP/".phpversion().")\r\n";
list($msec, $sec) = explotar(", microtime());
$header. = "ID del mensaje:<. fecha(" YmdHis ", $sec). "." ($mseg*1000000). "." $correo_de. " & gt\ r \ n ";
$TO = explotar(",",$this->strip_comment($to));
si ($ cc! = "") {
$TO = array_merge($TO,explode(",",$this->strip_comment($cc)));
}
if ($bcc != "") {
$TO = array_merge($TO,explode(",",$this->strip_ comentario($ bcc))); p>
}
$ enviado = VERDADERO
foreach ($TO como $rcpt_to) {
$rcpt_to = $this->get_address( $rcpt_to);
if (!$this->smtp_sockopen($rcpt_to)) {
$this->log_write("Error: No se puede enviar el correo electrónico a ". $rcpt_to."\n");
$ enviado = FALSE
Continuar;
p>
}
si ($this->SMTP_send($this->nombre de host,$remitente de correo,$destinatarios,$título,$texto){
$ this->log_write("Correo electrónico enviado a <.$rcpt_to ." >\ n ");
}else{
$this->log_write("Error: No se puede enviar correo electrónico a <. $rcpt_to.
" & gt\ n ");
$ enviado = FALSE
}
fclose($ this-& gt; calcetines);
$ this->log_write("Desconectado del host remoto\n");
}
Echo" <br>;
echo $ encabezado
devolver $ enviado
}
/*Función privada*/
Función smtp_send($helo, $from , $to, $ encabezado, $cuerpo = " ")
{
if (!$this->smtp_putcmd("HELO ",$helo)) { p>
return $this->smtp_error("Enviar comando HELO");
}
#auth
if ($this- >auth){ p>
if (!$this->smtp_putcmd("AUTH LOGIN",base64_encode($this->user))){
return $this->smtp_error("Enviar HELO comando");
}
if (! $this->smtp_putcmd(",base64_encode($ this->pass))){
return $ this->smtp_error("Enviar comando HELO");
}
}
#
IF(!$ this->smtp_putcmd("MAIL"," FROM:<.$from." >)) {
return $this->smtp_error("Enviar correo desde el comando");
}
if (!$this->smtp_putcmd("RCPT","Recibir a: <. $to. " >)) {
return $this ->smtp_error("Enviar RCPT al comando");
}
if(!$this->smtp_putcmd("DATOS")) {
return $this->smtp_error("Enviar comando de datos");
}
If(! $ this->smtp_message($header,$body)) {
return $this->smtp_error("Enviar correo");
}
if (!$this->smtp_eom()) {
return $this->smtp_error("Enviar <CR><LF>.
& ltCR & gt& ltLF & gt[EOM]";
}
if(!$this->smtp_putcmd("SALIR")) {
return $this-& gt;smtp_error("Enviar comando de salida");
}
Devuelve TRUE
}
Función smtp_sockopen ($dirección)
{
if ($this->relay_host == "") {
return $this->SMTP _ calcetín abierto _ MX($ dirección);
}else {
return $ this-> SMTP _ sock open _ retransmisión(); >
}
Función smtp_sockopen_relay()
{
$ this-& gt; log_write("try".$ this- >relay_host. ":".$this->smtp_port."\n");
$this->sock = @fsockopen($this->relay_host. , $this->smtp_port, $ errno, $errstr, $this->time_out);
if (!($this->socks&&$this- >smtp_ok())) {
$this ->log_write("Error: No se puede conectar con Relay_host." $this->relay_host." \n ") ;
$ this->log_write("Error: ".$errstr. " ("$errno")\n");
Devuelve FALSO
}
$ this->log_write("Conectado al host de retransmisión. " $ this->relay_host."\n");
Devuelve VERDADERO;
}
Función smtp_sockopen_mx($dirección)
{
$dominio = ereg_replace("^.+@( [^@]+)$ "," \\1 ",$ dirección);
Si (! @getmxrr($dominio, $MXHOSTS)) {
$this->log_write("Error: No se puede resolver MX\"). $dominio. \ " \ n ");
Devuelve FALSO
}
foreach ($MXHOSTS como $host) {
$ esto- >log_write("Intentando ".$host.":".$this->smtp_port."\n");
$this->sock = @fsockopen($host , $ this->smtp_port, $errno, $errstr, $this->time_out);
if (!($this->socks&&$this- >smtp_ok())) { p>
$this->log_write("Advertencia: No se puede conectar al host mx". $host.
"\n");
$ this->log_write("Error: ".$errstr." (".$errno")\n");
Continuar;
}
$ this->log_write("Conectar al host mx".$host."\n");
Devolver VERDADERO
}
$ this->log_write("Error: No se puede conectar a ningún host mx (".implode(",",$MXHOSTS).")\n" );
Devuelve FALSO
}
Función smtp_message($header, $body)
{
fputs($ this->calcetines,$cabeza.\r\n.$cuerpo);
$this->smtp_debug(">.str_replace("\r\n "," \n "." >, $encabezado. " \n & gt $cuerpo.
Devuelve VERDADERO
}
Función smtp_eom()
{
fputs($ this-& gt; calcetín, " \ r \ n . " \ r \ n ");
$this->smtp_debug(".[EOM ]\n");
return $this->SMTP_ok();
}
Función smtp_ok()
{
$respuesta = str_replace("\r\n ","",fgets($this->sock, 512));
$ this->SMTP_debug($ respuesta."\n");
if (!ereg("^[23]",$ respuesta)) {
fputs($ this-& gt; calcetín, " QUIT \ r \ n ");
fgets($ this-& gt; sock, 512);
$ this->log_write("Error: El host remoto devolvió \ "".$respuesta."\"\n");
Devuelve FALSO
}
Devuelve VERDADERO
} p>
Función smtp_putcmd($cmd, $arg = " ")
{
if ($arg! = "") {
if($ cmd = = " ")$ cmd = $ arg;
si no $cmd = $cmd. " ".$ arg
}
fputs($ this-& gt; calcetines, cmd. " \ r \ n ");
$ this- >smtp_debug(">.$cmd."\n");
return $this->SMTP_ok();
}
Función smtp_error ($string)
{
$ this->log_write("Error: El error ocurrió en ".$string.
".\ n ");
Devuelve FALSO
}
Función log_write($mensaje)
{
$this->SMTP_debug($message);
if ($this->log_file == "") {
Devuelve VERDADERO
}
$mensaje = fecha("M d H:i:s "). Obtener usuario actual(). "[".getmypid(). "]: ".$ mensaje
if (!@ archivo _ existe($this->log_file) ||!($FP = @fopen($this->log_file," a ") )) {
$ this->smtp_debug("Advertencia: No se puede abrir el archivo de registro\"".$this->log_file.\"\n");
Devuelve FALSO
}
flock($fp, LOCK_EX);
fputs($fp, $message);
fclose( $ FP);
Devuelve VERDADERO
}
Función bar_comment ($dirección)
{
$ comentario = " \\([^()]*\\)";
mientras (ereg($comentario, $dirección)) {
$dirección = ereg_replace($comentario) , "", $dirección);
}
Devuelve $dirección;
}
Función get_address($dirección) p>
{
$ dirección = ereg _ replace("([\ t \ r \ n])+", "", $ dirección p>
$dirección); = ereg_replace("^.*<(.+)>.*$","\\1",$dirección);
Devuelve $dirección;
} p>
Función smtp_debug($mensaje)
{
if ($ this-& gt;debug){
echo $mensaje "<br. >;
}
}
Función get_attach_type($image_tag) { //
$ datos de archivo = matriz();
$img_file_con=fopen($image_tag, " r ");
unset($ image_data);
while($tem_buffer = agregar barras(fread($ img_file_con, tamaño del tamaño($image_tag)))
$image_data.
= $ tem _ buffer
fclose($ img _ file _ con);
$ file data[' context ']= $ image _ data;
$ datos de archivo[' nombre de archivo ']= nombre base($ etiqueta_imagen);
$extensión=substr($etiqueta_imagen,strrpos($etiqueta_imagen," "),strlen($etiqueta_imagen)-str rpos($etiqueta_imagen ),"));
cambiar($extensión){
caso". gif":
$ datos del archivo[' tipo ']= " imagen/gif ";
Pausa;
Caso". gz":
$ datos del archivo[' tipo ']= " aplicación/x-gzip ";
Pausa;
Caso". htm ":
$ datos del archivo[' tipo ']= " texto/html ";
Pausa;
Caso". html":
$ datos del archivo[' tipo ']= " texto/html ";
Pausa;
Caso". jpg":
$ datos de archivo[' tipo ']= " imagen/JPEG ";
Pausa;
Caso". tar":
$ datos del archivo[' tipo ']= "aplicación/x-tar";
Rotura;
Caso". txt ":
$ datos del archivo[' tipo ']= " texto/plain ";
Pausa;
Caso". zip ":
$ datos del archivo[' tipo ']= " aplicación/zip ";
Pausa;
Valor predeterminado:
$ datos de archivo[' tipo ']= " aplicación/flujo de octeto ";
Pausa;
}
Devuelve $ datos de archivo
}
}
& gt