Foros del Web » Administración de Sistemas » Unix / Linux »

[SOLUCIONADO] Ubuntu, LAMP Server, función php mail(), como enviar emails

Estas en el tema de Ubuntu, LAMP Server, función php mail(), como enviar emails en el foro de Unix / Linux en Foros del Web. Un saludo a todos. He estado tiempo intentando ver como en mi servidor casero con Ubuntu Server 12.04 LTS, LAMP Server (apache, php, mysql y ...
  #1 (permalink)  
Antiguo 11/09/2014, 02:10
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 8 meses
Puntos: 10
Ubuntu, LAMP Server, función php mail(), como enviar emails

Un saludo a todos.
He estado tiempo intentando ver como en mi servidor casero con Ubuntu Server 12.04 LTS, LAMP Server (apache, php, mysql y phpmyadmin) puedo enviar emails en formularios etc.
Postee hace tiempo unas preguntas en foros del web para ver que podía hacer pero sin llegar a hacer nada en claro.
Lo he conseguido y lo comparto para quien pueda tener este mismo problema.
OJO, esto no es montar un servidor de correos completo solo que php pueda usar su función "mail()".

a) Lo podemos hacer con la clase "phpmailer" que hay que trastocar un archivo para poner los datos de tu cuenta de gmail para que php pueda enviar email. Este método está muy bien pero tiene un problemilla para mi, tengo que meter la clase en cada web que haga y use en mi servidor casero.

b) He encontrado otra forma de hacerlo que no hay que subir con cada web la clase phpmailer y es de la siguiente manera (funciona 100%, comprobado) por lo que paso a exponerlo para quien le interese:

Cuendo instalas ubuntu ya trae instalado "sendmail", en mi caso estuve haciendo pruebas por lo que lo desinstalé e instalé "postfix" para probar con varios tutoriales que encontré pero que nunca puede hacerlo:

1) desinstalé postfix y volví a instalar sendmail:
# apt-get purge postfix
# apt-get install sendmail

2) Instalar ssmpt:
# apt-get install ssmtp

3) Configurar ssmpt para gmail. Vamos al archivo /etc/ssmtp/ssmtp.conf y cambiamos estas líneas:
Código:
mailhub=smtp.gmail.com:587
UseSTARTTLS=YES
[email protected]
AuthPass=tupassworddetucuentagmail
4) Nos vamos a /etc/php5/apache2/php.ini y deben estar comentadas todas las líneas excepto las que os pongo, quedaría así:
Código PHP:
[mail function]
 ; For 
Win32 only.
 ; 
http://php.net/smtp
 
SMTP localhost
 
http://php.net/smtp-port
 
smtp_port 25
; For Win32 only.
 ; 
http://php.net/sendmail-from
 
sendmail_from me@example.com
; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
 ; 
http://php.net/sendmail-path
 
sendmail_path = /usr/sbin/sendmail --i
Force the addition of the specified parameters to be passed as extra parameters
 
to the sendmail binaryThese parameters will always replace the value of
 
the 5th parameter to mail(), even in safe mode.
 ;
mail.force_extra_parameters =
Add X-PHP-Originating-Scriptthat will include uid of the script followed by the filename
 mail
.add_x_header On
The path to a log file that will log all mail() callsLog entries include
 ; 
the full path of the scriptline numberTo address and headers.
 ;
mail.log 
OJO, Redirigir puerto 25 a la ip interna del servidor, yo particularmente tengo redirigidos todos los puertos a esa ip.

5) Nos vamos a la cuenta de nuestro gmail y arriba a la derecha hay una ruidita con un desplegable, desplegamos y vamos a configuración, dentro, nos vamos a cuentas e importación, dentro, nos vamos a la línea que pone "enviar mensaje como", aparecera tu nombre y cuenta de gmail, debajo hay un enlace que dice "Añadir otra dirección de correos tuya", se abrirá un desplegable en el cual podrás:

Nombre: El de tu empresa o el que quieras
Dirección de correos electrónico: El email del remitente que quieras que tenga el envío de email con la función php mail().
OJO desmarcad la casilla "Tratarlo como unalias" por el siguiente motivo:

Ejemplo: Juan, a veces, envía mensajes a clientes en nombre de su directora, María, así que añade la dirección de María como dirección de Enviar mensaje como y desmarca la casilla Tratar como un alias. Ahora, los mensajes que Juan envía a María no aparecen como no leídos en la carpeta "Recibidos" de Juan y, si María le envía un mensaje, el campo "Para:" se rellena automáticamente con la dirección de María cuando él responde.

Guardais los cambio y vuala, tu servidor personal con ubuntu, LAMP y ssmpt ya puede enviar email con la función de php "mail()".

Un saludo a todos y espero que os sirva de algo: Manyblue

Última edición por manyblue; 11/09/2014 a las 13:37
  #2 (permalink)  
Antiguo 16/11/2014, 13:36
 
Fecha de Ingreso: noviembre-2003
Mensajes: 24
Antigüedad: 21 años, 1 mes
Puntos: 0
Respuesta: Ubuntu, LAMP Server, función php mail(), como enviar emails

GRACIAS CAPO, justo lo que buscaba, funciona perfecto !

Como solucionaste lo del www-data que sale cuando uno envia, puse como root el email y nada ?
Pudiste corregir eso ?

gracias

Última edición por elricho; 16/11/2014 a las 13:53
  #3 (permalink)  
Antiguo 04/12/2014, 15:53
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 10 meses
Puntos: 29
Respuesta: Ubuntu, LAMP Server, función php mail(), como enviar emails

Recupero este post para hacer una pregunta. Desde que instalé sendmail muy defectuosamente, ahora cada vez que desde localhost ejecuto una función mail() el servidor tarda horrores en devolver la página. Apunto que sendmail está desinstalado y sigue haciendo lo mismo. mail() devuelve true como que lo ha enviado (aunque no es cierto), así que me gustaría saber cómo volver al estado inicial.

Saludos
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #4 (permalink)  
Antiguo 24/02/2015, 02:51
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 8 meses
Puntos: 10
Respuesta: Ubuntu, LAMP Server, función php mail(), como enviar emails

# apt-get purge sendmail
# apt-get install sendmail
-----------------------------------------------
Como solucionaste lo del www-data - Estoy en ello pero no he tenido tiempo de verlo. Ya te digo ahora lo de root debería de funcionar.
  #5 (permalink)  
Antiguo 24/02/2015, 03:27
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 8 meses
Puntos: 10
Respuesta: Ubuntu, LAMP Server, función php mail(), como enviar emails

Para corregir lo de www-data hacer esto:


sudo apt-get install ssmtp

Editar, ‘/etc/ssmtp/ssmtp.conf’:

[email protected]
mailhub=smtp.gmail.com:587
rewriteDomain= [email protected]
UseSTARTTLS=YES AuthUser=username
AuthPass=password
FromLineOverride=YES

A continuación, agregue cada cuenta que dese que sea capaz de enviar correo "From" editando, ‘/etc/ssmtp/revaliases‘:

root:[email protected]:smtp.gmail.com:587 localusername:[email protected]:smtp.gmail.com:58 7


Saludos: Manyblue
  #6 (permalink)  
Antiguo 24/02/2015, 06:19
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 8 meses
Puntos: 10
Respuesta: Ubuntu, LAMP Server, función php mail(), como enviar emails

Para verlo mejor, a mi me queda esto, incluye sacar el www-Data:


ssmtp.conf:


[email protected]
mailhub=smtp.gmail.com:587
[email protected]
UseTLS=YES
UseSTARTTLS=YES
[email protected]
AuthPass=mipassword
FromLineOverride=YES
rewriteDomain=gmail.com


revaliases


root:[email protected]:smtp.gmail.com:587
#www-data:[email protected]:gmail.com: 587
#Si sigues recibiendo www-data, descomenta la línea anterior tambien pero no es necesario


Y no te olvides que dentro de php.ini debes hacer esto:

[mail function]
; For
Win32 only
.
;
http:
//php.net/smtp
SMTP =
localhost
; http:
//php.net/smtp-port
smtp_port =
25
; For Win32 only
.
;
http:
//php.net/sendmail-from
; sendmail_from = me@example.
com
; For Unix only. You may supply arguments as well (default: "sendmail -t -i"
).
;
http:
//php.net/sendmail-path
sendmail_path = /usr/sbin/sendmail -t -
i
; Force the addition of the specified parameters to be passed as
extra parameters
; to the sendmail binary.
These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode
.
;
mail.force_extra_parameters
=
;
Add X-PHP-Originating-Script: that will include
uid of the script followed by the filename
mail
.add_x_header =
On
; The path to a log file that will log all mail() calls. Log entries
include
;
the full path of the script, line number, To address and headers
.
;
mail.log
=

Para más información consultar este wiki:
https://wiki.archlinux.org/index.php/SSMTP

Espero que con esto quede solucionado el problema.
Un saludo: Manyblue

Última edición por manyblue; 25/02/2015 a las 01:47

Etiquetas: emails, ip, lamp, mail, php, server, servidor, ubuntu
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 20:32.