2016-03-15 1 views
1

В настоящее время я пытаюсь создать программу, которая отправляет несколько писем в мое я в цикле. Я уже написал 2 патча кода, но я не могу заставить их работать. (Я запускаю это на малине pi, чтобы использовать любые странные каталоги).отправка писем в цикле В PYTHON 2.7

Это мой первый патч, а код цикла

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' 

Вот что мы используем, чтобы отправить альтернативные сообщения Мим альтернативного органа. Это не обязательно, хотя вы можете отправлять простые текстовые сообщения.

Готово отправить с локального хоста, но вы можете легко изменить его, чтобы использовать его правильно.

+0

Прошу прощения, но где я помещаю список писем в основную часть python. – TylerTotally

+0

Просто скопируйте мой полный код вместе (сверху и снизу с примером майлиста) в один файл, и он будет работать. Не забудьте настроить функцию, чтобы использовать свой логин, пароль и сервер. – Andrew

+0

Очевидно, я очень новичок в этом, судя по моему повторению и моей способности программировать на питоне. Мой «родной язык» - это JavaScript, так что это все новые воды. – TylerTotally