2016-03-15 86 views
1

我目前正試圖讓一個程序發送多個電子郵件到我自己的循環。我已經寫了2個代碼補丁,但我似乎無法讓他們工作。 (我在一個覆盆子pi上運行這樣的軟件,因此可以省掉任何怪異的導演)。在一個循環中發送電子郵件在PYTHON 2.7

這是我的while循環代碼

import os 
i = 0 
while i < 2: 
    os.pause(4) 
    os.system("home/Tyler/desktop/test.py") 
    i += 1 

這將打開郵件 「發送」 部分/ \第一個補丁。

這樣下來這裏是 「送」 的一部分/

import smtplib 

smtpUser = '[email protected]' 
smtpPass = 'password' 

toAdd = '[email protected]' 
fromAdd = smtpUser 

subject = 'yep' 
header = 'to: ' + toAdd + '\n' + 'From: ' + fromAdd + '\n' + 'Subject: ' + subject 
body = 'hi' 

print header + '\n' + body 

s = smtplib.SMTP('smtp.gmail.com',587) 

s.ehlo() 
s.starttls() 
s.ehlo() 


s.login(smtpUser, smtpPass) 
s.sendmail(fromAdd, toAdd, header + '\n\n' + body) 

s.quit() 
+0

程序輸出什麼?它成功完成嗎? – pholtz

+0

不,它不是它只是強調了在第二行代碼 – TylerTotally

+0

我所有的變數是哪一行? – pholtz

回答

2
import datetime 
import smtplib 
from email.mime.multipart import MIMEMultipart 
from email.mime.text import MIMEText 
from email.header import Header 
from email import Charset 
Charset.add_charset('utf-8', Charset.QP, Charset.QP, 'utf-8') 

maillist = [] 

def send_email(messages_list, smtpUser=None, smtpPass=None, tls=False): 
    failed = [] 
    try: 
     s = smtplib.SMTP('smtp.gmail.com',587) 
     s.ehlo() 
     if tls: 
      s.starttls() 
      s.ehlo() 
     if smtpUser and smtpPass: 
      s.login(smtpUser, smtpPass) 
    except: 
     print "ehlo failed" 
     failed = [x[0] for x in messages_list] 
    else: 
     for to_address,from_address,subject,encoding,mesg in messages_list: 
      try: 
       if len(mesg) == 2: 
        msg = MIMEMultipart('alternative') 
       else: 
        msg = MIMEText(mesg[0],'plain','utf-8') 
       msg['Subject'] = "%s" % Header(subject, 'utf-8') 
       if len(from_address) == 2: 
        msg['From'] = "\"%s\" <%s>" % (Header(from_address[0], 'utf-8'), from_address[-1]) 
       else: 
        msg['From'] = from_address[-1] 
       if len(to_address) == 2: 
        msg['From'] = "\"%s\" <%s>" % (Header(to_address[0], 'utf-8'), to_address[-1]) 
       else: 
        msg['To'] = to_address[-1] 
       msg.set_charset("utf-8") 
       if len(mesg) == 2: 
        part1 = MIMEText(mesg[0], 'plain','utf-8') 
        part2 = MIMEText(mesg[1], 'html','utf-8') 
        msg.attach(part1) 
        msg.attach(part2) 
       s.sendmail(from_address[-1], to_address[-1], msg.as_string()) 
      except: 
       traceback.print_exc() 
       failed.append(to_address[-1]) 
    try: 
     s.quit() 
    except: 
     pass 
    return failed 

maillist.append((['[email protected]'],["Me","[email protected]"],'Subject','utf-8',['text_message','html but you can delete this list element'])) 
for k in send_email(maillist, smtpUser='[email protected]', smtpPass='pwd', tls=True): 
    print k, 'not delivered' 

下面是我們用來與替代體發送備選MIME消息。儘管如此,您也可以發送簡單的文本消息。

它準備從本地主機發送,但您可以輕鬆修改它以正確使用它。

+0

我很抱歉,但我在哪裏把郵件列表放到Python的主體。 – TylerTotally

+0

只需要將我的完整代碼全部複製到一個文件中(頂部和底部的maillist示例),它就可以工作。不要忘記調整功能來使用您的登錄名,密碼和服務器。 – Andrew

+0

很明顯,我對這一點很新,這是通過我的重複和我的python編程能力來判斷的。我的「母語」是JavaScript,所以這是所有新水域 – TylerTotally