A dicho escript lo quiero modificar para que consulte a una base de datos una lista de correos electronicos y mande el mail a los mismos...
El problema es que no se como conformar esa lista de emails para que las acepte el sendmail
Código
# Import smtplib to provide email functions import smtplib import sys import mysql.connector # Import the email modules from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText # Create MySQL conector Conexion = mysql.connector.connect(user='pepito',password='pepitopepe', host='10.11.12.13', database='HELLO') # Define cursor cursor=Conexion.cursor() # Create a MySQL Query # ARGV[2] level of issue elevation cursor.execute("select email from emails where nivel= '%s'" % sys.argv[2] ) # Define email addresses to use addr_to = cursor.fetchone() #addr_to = ['pepito1@tepelandia.com', 'pepito2@pepelandia.com'] addr_from = 'Check@pepelandia.com' # Define SMTP email server details smtp_server = 'smartrelay.pepelandia.com' # Construct email msg = MIMEMultipart('alternative') msg['To'] = ", ".join(addr_to) msg['From'] = ", ".join(addr_from) msg['Subject'] = 'Alerta' # Open a plain text file for reading. For this example, assume that # the text file contains only ASCII characters. # ARGV[1] html file to send fp = open(sys.argv[1], 'rb') # Create a text/plain message msg = MIMEText(fp.read(), 'html') fp.close() # Send the message via an SMTP server s = smtplib.SMTP(smtp_server) s.sendmail(addr_from, addr_to, msg.as_string()) s.quit()
Al ejecutar el cofigo...
Código
Traceback (most recent call last): File "SendMail.py", line 48, in <module> s.sendmail(addr_from, addr_to, msg.as_string()) File "/usr/lib64/python2.7/smtplib.py", line 742, in sendmail raise SMTPRecipientsRefused(senderrs) smtplib.SMTPRecipientsRefused: {u'pepito1@pepelandia.com': (550, '#5.1.0 Address rejected.')}
cuando separo el codigo y solo me quedo con la consulta de la DB y veo como me devuelve la lisla de emails...
Código
# Create MySQL conector Conexion = mysql.connector.connect(user='pepito',password='pepitopepe', host='10.11.12.13', database='HELLO') # Define cursor cursor=Conexion.cursor() # Create a MySQL Query cursor.execute("select email from emails where nivel= '%s'" % sys.argv[1] ) # Define email addresses to use addr_to = cursor.fetchall() for row in addr_to: print(addr_to)
resultado de la consulta:
Código
# python get_list.py 1 # el 1 es el parametro que paso para la consulta de SQL [(u'pepito1@pepelandia.com',), (u'pepito2@pepelandia.com',)] [(u'pepito1@pepelandia.com',), (u'pepito2@pepelandia.com',)]
evidentemente la lista que estoy pasando esta mal conformada, pero no encuentro como hacer que la lista que arma la consulta quede con los mails solamente separada por comas.
alguien tiene alguna idea?