Red de conocimiento informático - Conocimiento de Internet de las cosas - ¿Cómo enviar correo electrónico a través de php? ¡La función de correo PHP no funciona!

¿Cómo enviar correo electrónico a través de php? ¡La función de correo PHP no funciona!

No parece haber muchos servidores de correo nacionales que admitan Linux.

Si instala un servidor de correo en su propia computadora y no puede enviarlo, puede probarlo usted mismo

Muchos sistemas de administración ahora usan Para usar fsocketopen para conectarse al servidor de correo y enviar correo, puede usar 163 buzones y 126. Hay muchos modelos en Internet. Si no le importa, me gustaría reenviar uno de ellos. Los tres archivos que te modifiqué para que puedas usar fsocketopen para enviar mensajes masivos o individuales Mail

MailClass.php 》》》》》》

class Smtp

{

var $host; //host

var $port //el puerto suele ser 25

var $user; // Cuenta utilizada para la autenticación SMTP

var $pass; // Contraseña de autenticación

var $debug = false // Si se muestra la información de la sesión con el ¿servidor?

var $conn;

var $result_str; //Resultado

var $in //Comando enviado por el cliente

var $from; //El buzón de origen donde el destinatario recibe el correo electrónico

var $email //Dirección real

var $to;

var $; sujeto ; //Tema

var $cuerpo; //Contenido

var $error;

var $Todos;

función Smtp ( $array)

{

$this->host = $array['host'];

$this->port = $array[ ' puerto'];

$this->email= $array['trueemail'];

$this-> from = $array['from'];

$this->usuario = base64_encode($array['nombre de usuario']);

$this->pass = base64_encode($array['contraseña'] );

$this->debug = $array['debug'];

$this->socket = socket_create (AF_INET, SOCK_STREAM, SOL_TCP

if($this-); > socket){

$this->result_str = "Creando SOCKET:".socket_strerror(socket_last_error());

$this->debug_show($this->result_ str)

}

else

die("Error en la inicialización, verifique la conexión de red y los parámetros"); >conn = socket_connect($this->socket,$this->host,$ this->port);

if($this->conn){

$this- >result_str = "Creando conexión SOCKET

ción: ".socket_strerror(socket_last_error());

$this->debug_show($this->result_str);

}

else

die("La inicialización falló, verifique su conexión de red y sus parámetros");

$this->result_str = "El servidor respondió: &... lt;font color=#cc0000> ".socket_read ($this->socket, 1024)." ";

$this->debug_show($this->result_str);

} p>

función debug_show($str)

{

if($this-& gt;debug)

{

echo $str."

\r\n";

}

}

}

función setmail ($ a,$sujeto,$cuerpo){

$this->to = $ a;

$this->asunto = $asunto;

$this ->body = $body;

$All = "Content-type: text/html;charset=gb2312\r\n" // El método de codificación del correo electrónico se puede cambiar según sus necesidades.

$Todos .= "De:".

$Todos = "Para:".$esto->a."\r\n";

$Todos . = "Asunto:".$este->asunto."\rn\rn";

$Todos .= $este->cuerpo;

$esto -> Todo = $Todos;

}

/**

* Enviar parte del correo electrónico

* Recibir matriz de buzones

*

función enviar($toarray,$ sujeto,$cuerpo)

{

//Aquí está la sesión con el servidor

$this->in = "EHLO HELO\r\n";

$this->docommand();

$this->in = " INICIO DE SESIÓN AUTH\r\n";

$this->docommand();

$this->in = $this->usuario."\r\n";< / p>

$this->docommand();

$this->in = $this->pass."\r\n";

$this- > docommand();

foreach( $toarray as $to ) {

$this -> setmail($to,$subject,$body);

$esto

->in = "RSET\r\n";

$this->docommand();

$this->in = "MAIL FROM:<".$this- >correo electrónico.">\r\n";

$this->docommand();

$this->in = "RCPT TO:<".$this-> a.">\r\n";

$this->docommand();

$this->in = "DATA\r\n";

$this->docommand();

$this-> in = $this->Todos."\r\n.\r\n";

$this->docommand();

}

$this->in = "SALIR\r\n";

$this->docommand( );

//Finalizar, cerrar conexión

}

function docommand()

{

socket_write ($this->socket, $this->in, strlen ($this->in));

$this->debug_show("Acción del cliente: ".$this->in);

$this->result_str = "Servidor: ".socket_read ($this->socket, 1024)." ";

$ this->debug_show($this->result_str);

}

}

/>

MailConfig.inc.php 》》 》》》》

< ;?php

$mailconfig['host'] = "smtp.126..com" //host

$ mailconfig['port'] = "25"; //puerto Generalmente 25

$mailconfig['trueemail'] = " mhz1600@126.com" //dirección real

$mailconfig['username'] = "mhz1600";

$ mailconfig['password'] = "*****" //cambiar al suyo propio

$ mailconfig ['debug'] = false; // ¿se debe mostrar información sobre la sesión con el servidor?

$ mailconfig['from'] = "test@test.com" //mostrar el remitente al usuario

include_once "MailClass.php";

set_time_limit(180);

SendDemo.php 》》》》》》

include_once "MailConf

ig.inc.php"; /CAPTCHA de validación de código temporal simple en el momento actual (hasta la hora)/if( vacío($_GET['s ']) || $_GET['s'] != md5(fecha( 'Y-m-d-H',time())){header(" El servidor de envío de correo de NetEase 163 es smtp.163.com. Todos los buzones tienen instrucciones relevantes y también hay una función. Parece que el nuevo buzón no es fácil de uso, porque NetEase en 2006 El buzón se ajustó en octubre. Antes de este registro, no había ningún problema con el buzón. Si se registra después de esto, parece que puede activar algunas otras funciones y usarlas por un período de tiempo. p>

A través del símbolo del sistema anterior, puede probar el enlace al servidor smtp:

Primero, telnet smtp.126.com 25

Porque smtp usa el puerto 25. para proporcionar servicios, verá

Esta es la primera vez que prueba el servidor smtp usando el símbolo del sistema y luego estará listo para usar. Verá

220 126. com Anti-spam GT para sistemas Coremail (126com[071018]

Escriba EHLO HELO

El servidor devuelve

250 ​​correos

250-PIPELINING<

250-AUTH LOGIN PLAIN

250-AUTH=LOGIN PLAIN

250 ​​​​8BITMIME

Ingrese AUTH INICIAR SESIÓN

El servidor devuelve

334 dXNlcm5hbWU6

Luego ingrese nuevamente el nombre de usuario y la contraseña cifrados en base64 y podrá usar comandos para comunicarse con el servidor, incluido el envío. correos electrónicos

Si está interesado en más comandos, busque

Este programa php emula esta funcionalidad

Si no puede conectarse al servidor mediante telnet, significa que el servidor no está en la ubicación correcta

Si no puede, si usa telnet para conectarse directamente al servidor, significa que el servidor está en la ubicación incorrecta.