2017-05-09 30 views
0

我試圖通過電子郵件發送附件的蟒蛇,但我得到這個錯誤:Python:試圖通過電子郵件發送附件〜字符串錯誤?

msg.attach(msgImage) AttributeError的:「海峽」對象有沒有屬性「附加」

下面是代碼:

import smtplib 
from email.mime.multipart import MIMEMultipart 
from email.MIMEText import MIMEText 
from email.mime.image import MIMEImage 


def send_email(): 
    fromaddr = '[email protected]' 
    toaddrs = 'Toemail' 
    global msg 
    subject = 'RESPOSTA' 
    message = 'Subject: %s\n\n%s' % (subject, msg) 

    username = '[email protected]' 
    password = 'xxxxxxxx' 

    server = smtplib.SMTP('smtp.gmail.com:587') 
    server.starttls() 
    server.login(username,password) 

    fp = open ('C:\Python27\Scripts\pares.txt', 'rb') 
    msgImage = MIMEImage (fp.read(), _subtype='txt') 
    fp.close() 
    msg.attach(msgImage) 

    server.sendmail(fromaddr, toaddrs, message, msg.as_string()) 
    server.quit() 

msg = 'Email test, please, see the attachments' 
send_email() 

任何人有什麼問題的提示?

+0

提示:msg的類型是什麼? – jwodder

+0

'msg'是一個字符串,但我仍然不明白問題,當腳本讀取txt文件時,是否無法將內容「附加」爲字符串? – Milteven

回答

1

您的代碼很奇怪,不正確。您開始使用先進的概念,而不具備語言,smtp協議和電子郵件模塊的基本知識。

msg變量在您的代碼中有str類型。 str是一個純字符串 - 一個字符列表。它沒有方法.attach

我想你想使用類email.message而不是一個字符串的實例。另外,不需要使用全局變量。全局變量很糟糕,在你的情況下使用全局變量是完全沒有必要的。

+0

感謝您的答案,我正在使用一個全局變量,因爲也許將來它將用於另一個函數。 – Milteven

+1

如果你想編寫一個稍後被另一個函數使用的函數,那麼全局變量是傳遞參數的最糟糕的可能方式。您需要使用正常的函數參數,而不是全局變量。例如: 'def send_mail(msg):' –

相關問題