そのため、MYSQL データベースに基づいてテキスト ファイルを生成し、そのファイルを gmail 経由で添付ファイルとして電子メールで送信するスクリプトに取り組んでいます。ほとんどすべてが機能していますが、添付ファイルは正しく名前が付けられていますが、空白として表示されます。ここでドキュメントと多くの質問を調べました(これが私ができる限りの方法です)が、私の特定の間違いがどこにあるかを完全に推測することはできません. 明らかなことだと確信していますが、過去7時間これを使用した後、それを見ることができません. 私はプログラミングの初心者ではありませんが、Pythonとプログラムで電子メールを操作するのは初めてなので、それもおそらく問題の一部です。とにかく、これが問題のファイルです。どんな援助も大歓迎です。余談ですが、私が過去に Android アプリの開発に携わっていたときに助けてくれたすべての人に感謝したいと思います。すべてを機能させ、ストアに公開することができました。=)
(データベース ログインと電子メール ログインの両方の認証情報を偽の値に編集しました)
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 = "USER@GMAIL.com"
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@fakesite.com",
"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]))