2013-07-03 109 views
0

我有一個文本文件通過電子郵件發送。我使用下面的代碼通過smtplib發送電子郵件。此代碼將附件打印爲電子郵件正文。由於我的文本文件有點大,所有內容在郵件正文中都不可見?如何顯示電子郵件正文中的所有內容?有什麼建議麼?電子郵件大文本文件

from email.MIMEMultipart import MIMEMultipart 
from email.MIMEText import MIMEText 
from email.MIMEImage import MIMEImage 
msg = MIMEMultipart() 
msg['Subject'] = 'ANALYSIS REPORT' 

filename = "report.txt" 
f = file(filename) 
attachment = MIMEText(f.read()) 
msg.attach(attachment) 

smtpObj = smtplib.SMTP('mail.my-domain.com', 25) 
smtpObj.sendmail(sender, receivers, msg.as_string())   
print "e-mail Successfully Sent!" 
+1

你是什麼意思與 '不可見',看不到在哪裏?文件被截斷了嗎? 「大」有多大?你有沒有考慮壓縮文本? – mata

+0

@mata:在電子郵件的正文中缺少文本文件的最後部分。我的文本文件由使用python漂亮表格打印的表格組成。 –

+0

也許你正在打消息大小限制?你應該檢查'smtpObj.sendmail(...)'的返回值' – mata

回答

2

我會嘗試壓縮內容正文,也許這會得到足夠的郵件大小以獲取郵件。

例子:

from email.MIMEMultipart import MIMEMultipart 
from email.MIMEText import MIMEText 
from email.mime.application import MIMEApplication 
from email.MIMEImage import MIMEImage 
import io 
import gzip 

msg = MIMEMultipart() 
msg['Subject'] = 'ANALYSIS REPORT' 

msg.attach(MIMEText('report attached')) 

filename = "report.txt" 
with open(filename, 'rb') as f, io.BytesIO() as b: 
    g = gzip.GzipFile(mode='wb', fileobj=b) 
    g.writelines(f) 
    g.close() 
    attachment = MIMEApplication(b.getvalue(), 'x-gzip') 
    attachment['Content-Disposition'] = 'attachment; filename=report.txt.gz' 
msg.attach(attachment) 

smtpObj = smtplib.SMTP('mail.my-domain.com', 25) 
print smtpObj.sendmail(sender, receivers, msg.as_string())   
print "e-mail Successfully Sent!" 
+0

對不起,回覆遲!感謝它很好地工作!.. :) –