Hola a todos los que lean esto.El siguiente script trata de automatizar el envió de correos, por medio del uso de dos ficheros.
1.carta.txt:
Estimado/a H #CLIENTE#
Tenemos noticias de que usted don/doña H #CLIENTE# no a abonado el importe
de la cuota mensual a que le obliga el draconiano contrato que firmó.
2.cliente.txt:
alguncorreo@gmail.com nombre apellido
alguncorreo@gmail.com nombre apellido
La idea es sustituir #CLIENTE# por el nombre y apellido del cliente, que es lo que ya he logrado hasta el momento y sustituir H(hombre) si esta presente o M(mujer) por su correspondiente identificativo Estimado/a y don/doña esta es la parte que aun no he podido hacer si me pudieran dar alguna idea de como optimizar y como finalizar este ejercicio se los agradeceriaGracias por responder al final lo solucione usando expresiones regulares puede que no sea muy
eficiente pero lo logre hacer ;D.
Este es el código
def envio_correo_personalizado():
try:
# variables y apertura de ficheros
nombre = []
mensaje = ""
carta = open("carta.txt", "r")
carta_copia = open("carta.txt.copia", "w")
cliente = open("cliente.txt", "r")
# lectura de clientes
for _cliente in cliente:
nombre += _cliente.rstrip().split("/")
# Leyendo el fichero carta
linea = carta.readline()
while linea != "":
mensaje += linea
linea = carta.readline()
# TODO Cambiando los valores del mensaje segun el genero usando expresiones regulares.
# FIXME Buscar otra forma de hacerlo.
mensaje = re.sub(
r"/a|/doña|H", "", mensaje) if "H" in mensaje else re.sub(r"o/|don/|M", "", mensaje)
mensaje = re.sub(r"#CLIENTE#", nombre[1], mensaje)
print("Mensaje cambiado")
print(mensaje)
for i in mensaje:
carta_copia.write(i)
# cierre de ficheros
carta.close()
cliente.close()
carta_copia.close()
except IOError:
print("Fichero no existe")
Saludos,
- De momento me está funcionando lo siguiente:
carta.txt
#ESTIMAD@# #CLIENTE#
Tenemos noticias de que usted #DON@# #CLIENTE# no a abonado el importe
de la cuota mensual a que le obliga el draconiano contrato que firmó.
clientes.txt
carlos_aguero@gmail.com ; Carlos Alberto ; Agüero López ; H
camila_valerio@gmail.com ; Camila ; Valerio Gómez ; M
clientes = open("clientes.txt", "r")
for cliente in clientes :
datos = cliente.split(";")
correo = datos[0].strip()
nombres = datos[1].strip()
apellidos = datos[2].strip()
sexo = datos[3].strip()
carta = open("carta.txt", "r")
correo_cliente = open(correo + ".txt", "w")
for linea in carta :
tmp = linea
if "#ESTIMAD@#" in linea :
if sexo == "H" :
tmp = tmp.replace("#ESTIMAD@#", "Estimado")
elif sexo == "M" :
tmp = tmp.replace("#ESTIMAD@#", "Estimada")
if "#DON@#" in linea :
if sexo == "H" :
tmp = tmp.replace("#DON@#", "don")
elif sexo == "M" :
tmp = tmp.replace("#DON@#", "doña")
if "#CLIENTE#" in linea :
tmp = tmp.replace("#CLIENTE#", nombres + " " + apellidos)
correo_cliente.write(tmp)
carta.close()
correo_cliente.close()
clientes.close()
- He tenido algunos problemas con la
ñ XD, pero viendo como lee dicha
ñ el propio python y poniéndola así he visto que no tiene problemas, este mismo método lo usa en Batch, debe haber otros métodos que más tarde revisaré...
Resultados:
carlos_aguero@gmail.com.txt
Estimado Carlos Alberto Agüero López
Tenemos noticias de que usted don Carlos Alberto Agüero López no a abonado el importe
de la cuota mensual a que le obliga el draconiano contrato que firmó.
camila_valerio@gmail.com.txt
Estimada Camila Valerio Gómez
Tenemos noticias de que usted doña Camila Valerio Gómez no a abonado el importe
de la cuota mensual a que le obliga el draconiano contrato que firmó.