Red de conocimiento informático - Conocimiento sistemático - Solicitando el código fuente de la clase de correo web

Solicitando el código fuente de la clase de correo web

Lenguaje de programación del lado del servidor (abreviatura de Preprocesador de hipertexto profesional)

& lt?

$ servidor SMTP = " SMTP . 163 . com "; // servidor SMTP

$ smtpserverport = 25 // puerto del servidor SMTP

$ 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

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 = " ")

{

$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)));

}

$ 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)) {

return $this->smtp_error("Enviar comando HELO");

}

#auth

if ($this- >auth){

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())) {

$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

}

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)

{

$ dirección = ereg _ replace("([\ t \ r \ n])+", "", $ dirección

$dirección); = ereg_replace("^.*<(.+)>.*$","\\1",$dirección);

Devuelve $dirección;

}

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

上篇: Organizaciones internas de la Oficina General del Gobierno Popular de la provincia de Henan 下篇: Colección de código fuente¡Todo es difícil al principio! Muchas personas son impacientes pero lentas, incapaces de encontrar una salida para sus avances y, a menudo, caen en la ansiedad. Pero mientras des el primer paso, estarás a mitad del camino. No importa en qué campo se encuentre, debe prestar atención a los métodos de aprendizaje sistemáticos. Todo el contenido relacionado con Android se divide en 8 módulos y 729 puntos de conocimiento, que cubren el conocimiento más importante de todos los fabricantes de Internet y los puntos tecnológicos más vanguardistas de la industria. ¡Aprender estos ocho módulos significa que básicamente dominas todos los puntos de conocimiento del desarrollo de Android! ! (Si tiene dificultades para encontrar el método avanzado, puede hacer clic para guardar esta nota. O hacer clic en la tarjeta a continuación para obtener la versión completa del pdf) Tabla de contenido 1. Habilidades esenciales para que los arquitectos construyan cimientos 1. Obtenga más información sobre Java Genéricos 2. Explicado en términos simples. Programación concurrente 4. Principios de serialización y transmisión de datos 5. Máquina virtual Java 6. Efficient IO 2, análisis del código fuente del marco Android Top 100 1. Análisis de fuentes de Transformación 2.0 2. Análisis del código fuente Okhttp3 3. Análisis de fuentes de ButterKnife 4. Análisis de la fuente Mpandroidhart 5. Análisis de las fuentes de declive 6. Análisis de la fuente del canal de fuga 7. Análisis del código fuente del cargador de imágenes universal 8. Análisis del código fuente de EventB Us3.0 9.zxing análisis del código fuente 10. Análisis del código fuente de Picasso 11. Explicación detallada del uso de LottieAndroid y análisis del código fuente 12. Análisis del código fuente de Fresco: proceso de carga de imágenes 3, análisis de optimización del rendimiento de Android 1. Tencent Bugly: cierta comprensión de los algoritmos de coincidencia de cadenas 2. iQIYI: solución de captura de fallas de aplicaciones de Android-XCRASH 3. ByteDance: comprenda en profundidad uno de los marcos de Gradle: complementos, extensiones y construcción. Tecnología Baidu APP: primera práctica de optimización de pantalla de AndroidH5. Análisis de la arquitectura del cliente Alipay: recolección de basura optimizada para la velocidad de inicio del cliente Android. Ctrip: práctica de arquitectura de componentes del proyecto Zhixing de Android. NetEase News Optimización de la construcción: ¿Cómo hacer que la velocidad de su construcción sea "tan rápida como un rayo"? 4. Combate avanzado mejorado de Kotlin 1. Tutorial de introducción a Kotlin 2. Guía práctica de Kotlin para evitar pozos 3. Práctica del proyecto "Práctica de Kotlin Jetpack" Kotlin ¿Cuál es la experiencia de escribir guiones de Gradle a partir de una demostración que adora al gran dios? Programación de Kotlin triple reino Funciones de alto orden de Kotlin Genéricos de Kotlin Extensión de Kotlin Concurrencia delegada de Kotlin Habilidades de depuración "desconocidas" Concurrencia de gráficos: suspender V, marco de código abierto de interfaz de usuario avanzada de Android descifrado avanzado 1. Utilice el diseño SmartRefresh 2. Análisis del código fuente del control de actualización desplegable de Android 3. Uso básico de Android: biblioteca de actualización desplegable 4. Marco de gestión de páginas de comentarios de carga eficiente y fácil de usar 5. Carga universal de Android. Descripción detallada del marco de carga de vistas 6. MPAndroidChart implementa LineChart 7. guía del usuario de hellocharts-android 8. Guía del usuario de Smart Desk 9. Introducción al proyecto de código abierto android-uitableview 10. Guía del usuario de ExcelPanel 11. y análisis en profundidad del proyecto de código abierto Roid SlidingMenu 12. Guía del usuario del cajón de materiales VI. Desarrollo del módulo NDK 1. Desarrollo del módulo NDK 2. JNI módulo 3. Herramientas de desarrollo nativas 4. Programación Linux. Procesamiento de imágenes de bajo nivel6. Desarrollo de audio y vídeo. Ciencia de las máquinas 7. Tecnología avanzada de tramado1. Descripción general del desarrollo multiplataforma de Flutter 2. Construcción del entorno de desarrollo de flutter. Windows 3. Escribiendo tu primera aplicación Flutter 4. Construyendo y depurando el entorno de desarrollo Flutter 5. Capítulo de gramática de Dart Gramática básica (1) 6. Análisis de uso y fuente de la colección de artículos gramaticales de DART (2) 7. Establecer la función del operador y el análisis del código fuente 7. Artículos de gramática de Dart (3) 8. Desarrollo del subprograma WeChat 1. Descripción general e introducción del mini programa 2. Desarrollo de UI de mini programa 3. Operación API 4. Debido a la gran cantidad de artículos sobre proyectos reales de centros comerciales, el espacio es limitado y los materiales se han compilado en documentos PDF.