› Foros › PC › Software libre
nombre_script archivo_correo
kyo2009 escribió:A mi jefe se le ha ocurrido que sus correos electrónicos se descarguen solos... y se guarden en el servidor solos.
-En un principio he visto un par de scripts en python que sirven para descargar correos.
El punto es : se descargan los correos y luego deberia pasarselos segun pienso a algun otro script que los recibiera como argumentonombre_script archivo_correo
y me insertara el nombre en una base de datos para despues poder descargarlos.
Ahora seria algo como un cron para estar descargando los correos (los correos pueden llegar en cualquier momento) así que este cron debiese estar funcionando todo el tiempo. Luego como hacer para que cuando se descargue se realice la acción automática para pasarle el archivo al script que lo insertara en la bd para su posterior descarga
PD : lo del cron es un ejemplo. Tal vez hay otra cosa que desconozco
¿Por qué descargar los correos? porque necesito el adjunto...
Cualquier idea es bienvenida. Saludos
Newton escribió:kyo2009 escribió:A mi jefe se le ha ocurrido que sus correos electrónicos se descarguen solos... y se guarden en el servidor solos.
-En un principio he visto un par de scripts en python que sirven para descargar correos.
El punto es : se descargan los correos y luego deberia pasarselos segun pienso a algun otro script que los recibiera como argumentonombre_script archivo_correo
y me insertara el nombre en una base de datos para despues poder descargarlos.
Ahora seria algo como un cron para estar descargando los correos (los correos pueden llegar en cualquier momento) así que este cron debiese estar funcionando todo el tiempo. Luego como hacer para que cuando se descargue se realice la acción automática para pasarle el archivo al script que lo insertara en la bd para su posterior descarga
PD : lo del cron es un ejemplo. Tal vez hay otra cosa que desconozco
¿Por qué descargar los correos? porque necesito el adjunto...
Cualquier idea es bienvenida. Saludos
No sé si es necesario que programes eso que quieres hacer en Python; tal vez con herramientas ejecutándose en segundo plano cada X tiempo podrías hacerlo.
Si estamos hablando de un equipo que corre bajo GNU/Linux tal vez esto te pueda venir bien: http://sgcg.es/articulos/2009/08/09/cor ... l-y-msmtp/
Ya nos comentarás cómo evoluciona la solución.
Saludos
import imaplib
import email
import re
# Connect to an IMAP server
def connect(server, user, password):
m = imaplib.IMAP4_SSL(server)
m.login(user, password)
m.select()
return m
# Download all attachment files for a given email
def downloaAttachmentsInEmail(m, emailid, outputdir):
resp, data = m.fetch(emailid, "(BODY.PEEK[])")
email_body = data[0][1]
mail = email.message_from_string(email_body)
emailRegex = re.search(r'[\w\.-]+@[\w\.-]+', mail['From'])
emailFrom = emailRegex.group(0)
if mail.get_content_maintype() != 'multipart':
return
for part in mail.walk():
if part.get_content_maintype() != 'multipart' and part.get('Content-Disposition') is not None:
print "Correo desde: " + emailFrom
open(outputdir + '/' + part.get_filename(), 'wb').write(part.get_payload(decode=True))
# Download all the attachment files for all emails in the inbox.
def downloadAllAttachmentsInInbox(server, user, password, outputdir, nuevos=False):
m = connect(server, user, password)
tipo = "(ALL)"
if nuevos:
tipo = "(UNSEEN)"
resp, items = m.search(None, tipo)
items = items[0].split()
for emailid in items:
downloaAttachmentsInEmail(m, emailid, outputdir)
downloadAllAttachmentsInInbox('imap.gmail.com', 'Email', 'Pass', 'PATH', nuevos=True)
<?php
$mysqli = new mysqli('localhost', 'user', 'pass', 'NameBD');
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
date_default_timezone_set("America/Santiago");
$fecha_subida = date("d-m-Y H:i:s");
if (isset($argv[1])) {
$archivo = $argv[1];
$file_sin_extension = basename($archivo, ".csv");
$nombreNuevoArchivo = $file_sin_extension."_".uniqid(rand(0,10)).".csv";
$stmt = $mysqli->prepare("INSERT INTO correo (nombre_archivo,fecha_subida) VALUES (?,?)");
$stmt->bind_param('ss', $nombreNuevoArchivo,$fecha_subida);
$stmt->execute();
$mysqli->close();
}
else{
echo "error...\n";
}