Итак, я работаю над скриптом, который будет генерировать текстовый файл на основе базы данных MYSQL и отправить файл в виде прикрепленного файла через gmail. У меня почти все работает, но файл, который он прикрепляет, именовался правильно, отображается как пустое. Я просумлял документацию и много вопросов здесь (так я мог получить, насколько я знаю), но не могу понять, где моя конкретная ошибка. Я уверен, что это нечто очевидное, но после работы с ним в течение последних 7 часов я не вижу этого. Я не новичок в программировании, но я новичок в python и для работы с электронной почтой, так что это, вероятно, также является частью проблемы. В любом случае, вот этот файл. Любая помощь очень ценится. В стороне я хочу поблагодарить всех здесь за помощь, которую я получил в прошлом, когда я работал над Android-приложением. Я смог получить все, чтобы работать, и опубликовать его в магазине. =)Отправка текстового вложения с Python 2.7 через Gmail почти работает
(Я редактировал мои документы здесь как для входа в базу данных и электронной почты для входа, чтобы быть поддельные значения)
import MySQLdb as mdb
import sys, time, datetime
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email import Encoders
import os
try:
# prompt = ('> ')
t = time.localtime()
fp = file('bus_rep_%s-%s-%s--%s.%s.%s.txt' % (t[0], t[1], t[2], t[3], t[4], t[5]), 'a+')
fp.write("Business Name\t\tEIN\t\tSub Date\tDays\tAction\n")
con = mdb.connect('XXX.XXX.XXX.XXX', 'USERNAME', 'USERPASS', 'DBNAME');
# print "Enter start date: YYYY-MM-DD"
start_date = 2000-01-01
cur = con.cursor()
current_date = datetime.date.today()
# print "Current Date = %r" % current_date
cur.execute('SELECT BusName, EIN, DWHDateSubmitted FROM Business WHERE DWHSubmitted LIKE %d AND DWHDateSubmitted IS NOT NULL' % (1))
# Fetch all the rows in a list of lists.
results = cur.fetchall()
for row in results:
bname = row[0]
ein = row[1]
subdate = row[2]
# print bname
# print ein
# print subdate
days_passed = current_date - subdate
days_passed = days_passed.days
# print "days_passed = %r" % days_passed
if days_passed > 30:
action = 'Contact Claims'
else:
action = ' '
# print "bname = %s, EIN = %s, subdate = %s, days_passed = %d, action = %s" % (bname, ein, subdate, days_passed, action)
fp.write("%s\t%s\t%s\t%d\t%s\n" % (bname, ein, subdate, days_passed, action))
except mdb.Error, e:
print "Error: %d: %s" % (e.args[0],e.arge[1])
sys.exit(1)
con.close()
gmail_user = "[email protected]"
gmail_pwd = "GMAILPASS"
def mail(to, subject, text, attach):
msg = MIMEMultipart()
msg['From'] = gmail_user
msg['To'] = to
msg['Subject'] = subject
msg.attach(MIMEText(text))
part = MIMEBase('application', 'octet-stream')
part.set_payload(open(attach, 'r').read())
Encoders.encode_base64(part)
part.add_header('Content-Disposition',
'attachment; filename="%s"' % os.path.basename(attach))
msg.attach(part)
mailServer = smtplib.SMTP("smtp.gmail.com", 587)
mailServer.ehlo()
mailServer.starttls()
mailServer.ehlo()
mailServer.login(gmail_user, gmail_pwd)
mailServer.sendmail(gmail_user, to, msg.as_string())
mailServer.close()
mail("[email protected]",
"Daily Business Claim Submission Report",
"Attached is the automatically generated Daily Business Claim Report.",
"bus_rep_%s-%s-%s--%s.%s.%s.txt" % (t[0], t[1], t[2], t[3], t[4], t[5]))