Buenas changos, otra ves por aca pidiendo ayuuuuuuuda!!!
El tema es asi, en los ultimos dias a la fuerza cambie de hosting mi foro http://argentronicap2p.awardspace.com/smf/index.php y desde entonces lo nuevos que se registraban no recibian la confirmacion, probe mandandome un mailing pero tampoco me llego, intente cambiarlo a smtp, pero tampoco anduvo.
Alguien podria tirarme una punta de que es lo que puedo hacer para solucionar el tema, ya vi la comunidad de SMF, pero no caso un fulbo de lo que hablan.
gracias (dax , predi, telefono) jajaja :palmas:
Cazador, fijate que si mal no recuerdo la función de mail de PHP puede estar deshabilitada, si es así no hay vuelta salvo que puedas pedirle a los de tu servidor que la habiliten.
Saludos.
y si esta activada?? no hay solucion?? :(
podes probár si la función de PHP funciona subiendo una pagina php con el siguiente codigo
<?
$from = "From:you@yourdomain.com";
$to = "you@yourdomain.com";
$subject = "Hi! ";
$body = "TEST";
if(mail($to,$subject,$body,$from)) echo "MAIL - OK";
else echo "MAIL FAILED";
?>
modifica los datos obvios en ese script y si no te llega un mail queire decir que hay problemas con dicha función.
Pero me parece que tu gran problema es que en el hosting gratuito no tenes habilitado el SMTP :S
Saludos.
no tiene habilitado el smtp, por eso lo puse en php
hice esa prueba y me aparece mail faild estoy en el horno, no rosti?
Cita de: cazador en Marzo 28, 2007, 15:39:47
no tiene habilitado el smtp, por eso lo puse en php
hice esa prueba y me aparece mail faild estoy en el horno, no rosti?
Esperemos que vengan los que saben de verdad :P, pero me parece que sí :-\.
Saludos.
o sea que aparentemente tengo algo de mail php, porque encontre esta info del server
Sendmail path /usr/sbin/sendmail
sendmail_from php@mail1.awardspace.com
SMTP localhost
smtp_port 25
Hola,
Es bastante normal en los hostings gratuitos que deshabiliten funciones de mail para evitar a los spamers.
Tambien puede ser que depende de como quien firmas (es el campo FROM) el mail (para evitar spoofing); pero creo que mayormente estas frito.
Baii
gracias predi, buuuu, tuve que poner el registro automatico, o sea sin activacion, y que sea lo que dios quiera
saludos, manden candado y borren :up:
caza, activa el CAPTCHA asi no se te registran spambots!
Baii
y como o desde donde lo activo?? ni J de esto
el captcha es la confirmacion visual !!! tambien te recomiendo qeu busques en el foro de smf cosas para evitar bots sino estas de nuevo frito como escuche por ahi. y intenta de ponerte enc ontacto con el del server y pedir que te habiliten el smtp.
suerte.!
el tema es que si kiero el smtp activo, hay que pagar, esa es la cagada. vere que hago :up:
Haceme acordar la semana que viene (porque tengo que busca por ahi) que yo hice una clase para mandar mail directo al SMTP (necesitas tener uno). O sea creas un objeto mail, le agregas from, recipientes, subject, cuerpo y la opción enviar se conecta via SOCK al smtp y manda el mail de acuerdo a las respuestas que recibe. Lo hice hace unos años y fue un interesante ejercicio de programación
gracias came, espero a la semana que viene, o cuando puedas, no hay drama :up:
El tema es que hoy viajo y no vuelvo a la Internet hasta el miercoles, así que tengo que buscar primero si esta en un CD o que y despues pasarlo aca
todo bien came, cuando puedas, de verdad, no hay drama, espero, si hasta ahora anduvo todo ok, unos dias mas puede esperar.
otra ves gracias :up:
interesante lo tuyo cam !!! yo tmb quiero probar eso (Y)!
Para los que lo pidieron aca va
(aviso modifique la parte de copyrigth poruqe tiene mi nombre personal y un mail viejo)
<?php
/*
* Class smtp_sender
*
* (c) Camello_AR <camello.ar@gmail.com>
* Una simple clase con motor SMTP propio (una alternativa para el comando mail)
*
* Uso:
* $smtp = new smtp_sender;
* $smtp->from[name] = nombre del sender (si vacio = direccion)
* $smtp->from[dir] = direccion del sender
* $smtp->smtp_add_rcpt(dir, name, type) = a quien se envia el correo (type = 0-to, 1-cc, 2-bcc)
* $smtp->reply_to[dir][name] = direccion y nombre de respuesta (si estan vacios los toma del from)
* $smtp->server = servidor en forma IP (sino poner = gethostbyname("nombre servidor")
* $smtp->helo = nombre del host que ejecuta esta apliación
* $smtp->asunto = Asunto del Mensaje
* $smtp->body = cuerpo del mensaje (debe ser final)
* $smtp->smtp_send();
*
* TODO:
* - Mejorar el sistema de errores (estoy en eso) para armar arrays de errores
* - Agregar un codificador para el body_gen() asi se pueden agregar archivos attach
* Se puede usar como base la parte relativa al decodificador en la parte visor de mails
*/
Class Smtp_Sender {
var $helo;
var $server;
var $from;
var $rcpt;
var $asunto;
var $mail; //smtp_body_gen()
var $body;
var $socket;
var $reply_to;
var $rec_tot = 0 ;
var $error = 0;
var $errores;
//$rcpt = [name] [dir] (si name vacio = dir)
//$from = [name] [dir] (si name vacio = dir)
//$reply_to = [name] [dir] (si dir vacia=$from si name vacio = dir)
/*
Conectar Al Servidor SMTP y enviar el Mensaje
*/
function smtp_send() {
$this->errores[totales] = 0;
$this->socket = socket_create(AF_INET, SOCK_STREAM, getprotobyname("TCP"));
if (!$this->socket) {
echo "No se abrio el socket por: ".socket_strerror($this->socket)."<br>\n";
} else {
$conexion = socket_connect($this->socket, $this->server, 25);
$this->smtp_body_gen();
// var_dump($this->rcpt);
$this->smtp_comando("", "220", "No se consiguio realizar conexión con el servidor {this->server}");
$this->smtp_comando("HELO {$this->helo}\n", "250", "No se reconocio la sentencia {$this->helo} como bienvenida");
$this->smtp_comando("MAIL FROM: {$this->from[dir]}\n", "250", "El remitente ".$this->from[dir]." no fue reconocido");
$totales = $this->rec_tot;
for ($i = 0; $i<$totales; $i++) {
$this->smtp_comando("RCPT TO: ".$this->rcpt[dir][$i]."\n", "250", "El recipiente ".$this->rcpt[dir][$i]." no fue reconocido", 1, $i);
}
$this->smtp_comando("DATA\n", "354", "No se puede escribir el cuerpo, no hay recipientes");
$this->smtp_comando("{$this->mail}\n", "data", "No esta listo para aceptar el correo");
$this->smtp_comando("\r\n.\r\n", "250", "");
$this->smtp_comando("QUIT\n", "data", "No se termino el cuerpo del correo");
socket_close($this->socket);
}
}
/*
Funcion smtp_comando
Lee las respuestas del servidor y escribe la información despues
*/
function smtp_comando($buffer, $cod, $action, $tipo = 0, $orden = 0) {
if (!$this->socket) {
echo "Se perdio la conexión con el servidor {$this->server}";
} else {
if ($this->error == 0) {
//echo $buffer;
socket_write($this->socket, $buffer, strlen($buffer));
if ($cod!="data") {
$buf = socket_read($this->socket, 128);
//$this->rcpt[error][$orden] = "0";
if (substr($buf,0,3)!=$cod) {
$this->errores[totales] = $this->errores[totales] +1;
$errnum = $this->errores[totales];
$this->errores[$errnum] = $action;
//echo $action;
if ($tipo == 0) {
$this->error = 1;
} else {
$this->rcpt[error][$orden] = "1";
}
}
}
}
}
}
/*
Funcion smtp_body_gen
Genera el Cuerpo del Mensaje con el subject, el x-origen-ip, el from, el to, etc
*/
function smtp_body_gen() {
if (!$this->from[name]) {
$this->from[name] = $this->from[dir];
}
if (!$this->reply_to[dir]) {
$this->reply_to[dir] = $this->from[dir];
}
if (!$this->reply_to[name]) {
$this->reply_to[name] = $this->from[name];
}
$h_from = "{$this->from[name]} <{$this->from[dir]}>";
$totales = $this->rec_tot;
for ($i = 0; $i<$totales; $i++) {
if ($this->rcpt[type][$i]==0) {
$dire = $this->rcpt[dir][$i];
$nam = $this->rcpt[name][$i];
$h_to .= $nam." <".$dire.">, ";
} else if ($this->rcpt[type][$i]==1) {
$dire = $this->rcpt[dir][$i];
$nam = $this->rcpt[name][$i];
$h_cc .= $nam." <".$dire.">, ";
}
}
$h_to = substr($h_to, 0, strlen($h_to)-2);
$h_cc = substr($h_cc, 0, strlen($h_cc)-2);
$h_reply_to = "{$this->reply_to[name]} <{$this->reply_to[dir]}>";
$x_ip = "X-Origen-IP: ".getenv("REMOTE_ADDR");
$x_ver = phpversion();
$x_mail = "X-Mailer: mailto:web - PHP/$x_ver";
$header = "From: $h_from\r\nReply-To: $h_reply_to\r\n$x_mail\r\n$x_ip\r\nTo: $h_to\r\nCC: $h_cc\r\nSubject: {$this->asunto}\r\n\r\n";
$this->mail = $header.$this->body;
}
function end() {
socket_close($this->socket);
}
function smtp_add_rcpt($dir, $name, $type) {
$ya_hay = $this->rec_tot;
if (!$name) {$name = $dir;}
$this->rcpt[dir][$ya_hay] = $dir;
$this->rcpt[name][$ya_hay] = $name;
$this->rcpt[type][$ya_hay] = $type;
$this->rec_tot += 1;
}
}
?>
EDIT: Este es un archivo que incorpore en una proyecto de webmail llamado "mailto:web" que nunca vio la luz (engo varios proyectos en PHP como uno que se llama DeliveryNet que es una especie de portal de compras de un comercio delivery (una pizzeria por ejemplo) que imprime los tiquet de pedido en la impresora del comercio. Para mi muchos de esos son escuelas porque es una manera de aprender a manejar los comandos e integrarlos en situaciones reales. (webmail, pedidos con impresión, uso de temas y graficos, etc)
NOTAS:
1)
en * $smtp->body = cuerpo del mensaje (debe ser final)
Final significa no lo ultimo que se carga, sino que debe ser el texto codificado, formateado o como sea (dado que no recibe postproceso salvo las cabeceras)
2) Copiar el texto pegarlo en un archivo de texto y renombralo a .php (darle el nombre que quieran, el original es "smtp.php") y luego incluirlo en el archivo que llame a la clase (o si tienen un framework o archivo que llama las funciones y eso se puede agregar ahi) con el comando
include("smtp.php");
ACLARACION: Doble post para que estas notas no se pierdan
EJEMPLO DE USO
Este es un archivo que recibe los datos de un formulario, si manejan un poco de PHP y HTML enseguida se daran cuenta de la extructura
header.php, ss.txt y barra.php son archivos que hacen a la visualización de la page (un poco lo que hablaba de un framework)
<?
include("header.txt");
include("smtp.php");
$page = "sendmail";
require_once("barra.php");
//
$cc = explode(", ", $HTTP_POST_VARS["ccopy"]);
$to = explode(", ", $HTTP_POST_VARS["to"]);
$de = $HTTP_POST_VARS["from"];
$smtp = new Smtp_Sender;
$smtp->from[dir] = $de;
$smtp->from[name] = ucfirst($usr);
if ($HTTP_POST_VARS[to]!="") {
for ($i=0 ; $i<count($to); $i++) {
$smtp->smtp_add_rcpt($to[$i], $to[$i], 0);
}
}
if ($HTTP_POST_VARS[ccopy]!="") {
for ($i=0 ; $i<count($cc); $i++) {
$smtp->smtp_add_rcpt($cc[$i], $HTTP_POST_VARS[$i], 1);
}
}
$smtp->server = "127.0.0.1";
$smtp->helo = getenv("SERVER_NAME");
$smtp->asunto = $HTTP_POST_VARS["subject"];
$smtp->body = $HTTP_POST_VARS["msg"];
$totales = $smtp->rec_tot;
for ($i = 0; $i<$totales; $i++) {
$para .= $smtp->rcpt[dir][$i].", ";
}
$para = substr($para, 0, strlen($para)-2);
$smtp->smtp_send();
/*
$ip = getenv("REMOTE_ADDR");
$de = $HTTP_POST_VARS[from];
$para = $HTTP_POST_VARS[to];
$motivo = $HTTP_POST_VARS[subject];
$mensaje = $HTTP_POST_VARS[msg];
$cc = $HTTP_POST_VARS[ccopy];
if (!$cc) {
$cch = "";
} else {
$para = $para.",".$cc;
$cch = "\nCC: ".$cc;
}
$cabecera = "From: ".$de."\nReply-To: ".$de.$cch."\nX-Mailer: mailto:web - PHP/" . phpversion()."\nX-Origen-IP: ".$ip;
mail($para, $motivo, $mensaje, $cabecera);
*/
?>
<font face=Verdana>
<h1>Envio de Correo Electronico de **SITIO**.Com.Ar</h1>
<p><small>
<?
if ($smtp->error == 1) {
echo "Error enviando el mensaje<br>";
$tot = $smtp->errores[totales];
if ($tot >= 1) {
for ($n = 1; $n <= $tot; $n++) {
echo "<i>".$smtp->errores[$n]."</i><br>";
}
}
}
for ($i = 0; $i<$totales; $i++) {
$para = $smtp->rcpt[dir][$i];
if ($smtp->rcpt[error][$i] == 1) {
echo "No se pudo enviar el mensaje a <b><i>".$para."</b></i><BR>";
if ($smtp->error == 0) {
$tot = $smtp->errores[totales];
if ($tot >= 1) {
for ($n = 1; $n <= $tot; $n++) {
echo "<i>".$smtp->errores[$n]."</i><br>";
}
}
}
} else {
echo "Se envio el mensaje a <b><i>".$para."</b></i> correctamente<BR>";
}
}
?>
</small></p>
<?
echo $barran;
include("ss.txt");
?>
</font>
Muy bueno Camello !!!.
PD: che.... ¿ vos no eras abogado ? :jaja: :jaja:, porque tenes mas pinta de programador que de abogado...
Es que antes de ser abogado soy informatico. De hecho estuve 2 años intentando estudiar ing. en sistemas, y por suerte compatibilizo los dos gustos
EDIT: Me gustaría que prueben la clase y me avisen como les anda
gracias camellin, en cuanto pueda la mando al foro mio
salutes
POr nada caza
en sintesis, ara redondear,y lo tuyo came, kede de primera, yo tengo el foro SMF, del cual no puedo mandar mails ni via PHP ni via SMTP.
Lo que vos pones es para que arme un archivo nuevo, que modifique uno existente, de ser nuevo, tendria que modificar alguno existente o no? ni idea de esto de la programacion. me lo podes explicar un poquitin mas camellin.
mil gracias :up:
Cazador: creo que para tus necesidades deberias modificar a mano SMF ( lo cual luego lleva problemas y laburo en mantenimiento, pero eso ya es otro tema).
En cada lugar que SMF intenta mandar un mail ( ejemplo al momento de pedir la confirmación para el registro) deberias modificar el codigo y remplazar la llamada a la función por la función de Camello.
Todo eso suponiendo que lo que te estan restringiendo es el acceso al SMTP configurado en PHP. Para estar seguro te acnosejo subir un pequeño ejemplo atu servidor y tratar de usarlo.
Aunque, Cazador, Con todo respeto, con tus conocimientos de programación dudo mucho que puedas meterle mano a SMF para hacer todas las modificaciones necesarias.
Saludos.
gracias rosti por la sinceridad :jaja:
Cita de: cazador en Abril 05, 2007, 17:35:16
gracias rosti por la sinceridad :jaja:
:up:
Tengo ese defecto ::)
por otro lado, camellin, que me podra decir al respecto??
Ejem, lo que podes hacer una funcione que pasandole los parametros reemplaze a la función mail de PHP (y luego reemplazar en todos los archivos las llamadas a esa función por la nueva (podría llamarse mail2())
Entonces la función tomaria la siguiente estructura
function mail2($de, $para, $servidor = DIR SMTP, $encabezado, $asunto, $cuerpo) {
$smtp = new smtp_sender;
$smtp->from[dir] = $de;
$smtp->smtp_add_rcpt($para, $para, 0);
$smtp->reply_to[dir] = $de;
$smtp->reply_to[name] = "Argentronica";
$smtp->server = gethostbyname($servidor);
$smtp->helo = "SMF via SMTP Class by Camello_AR";
$smtp->asunto = $asunto;
$smtp->body = $cuerpo;
$smtp->smtp_send();
}
Excelente idea camello, no se me habia ocurrido.
caza, capas que el lunes puedo ayudarte a implementar la idea de camello.
saludos.
lo unico hay que evaluar los parametros de una y otra función
ok, esero al lunes, para ver como meter todo esto en el foro. saludos y otra ves gracias :up:
rosti o came. sigo con el problema, si me pueden tirar un salbavidas, les estare eternamente agradecido
buscame el lunes en el canal y vemos como puedo ayudarte.
saludos.
ok 10,4 recibido ;)
hice un curso de dreamweaver y estoy medio perdido en unas cosas y como "vendi" una paginita a la ke tengo ke hacerle un formulario de contacto (aclaro ke me lei 20 millones de paginas y tutos de formularios y cada uno me mareo mas ke otro) 1) aparte de la pagina html tengo ke tener otra con un codigo llamada mail.php o algo asi? un server ke contrate me dice Ruta interna del Sendmail: /usr/bin/sendmail 2)como hago para ke me aparezca la leyenda mail enviado? 3)hay diferencia si el server es con windows o linux? ME ESTOY VOLVIENDO LOCO, en este post vi varios codigos pero no entendi bien donde ponerlos, si en mi html o en el .php
Gasto, este post no es el mas adecuado para tu consulta, ya que tratan de problemas un tantito diferentes, pero date una leida por http://www.argentop2p.net/index.php?topic=8134.0 que ahi esta tu solucion.
Baii