使用来自txt文件的smtplib发送电子邮件

时间:2015-01-08 18:41:13

标签: python email smtp smtplib

我在txt文件中读取了一个电子邮件列表,并从我的smtp服务器发送。

我使用的是From:和To:的相同电子邮件地址,即example@email.com

因此,txt文件中的所有电子邮件都是:example@email.com

我可以收到来自我的txt文件的所有电子邮件。我的问题如下:

主题字段为空白,字段To:看起来像e,x,a,m,p,l,e @,e,m,a,i,l,。,c,o,m而不是示例@ email.com

我做错了什么?

这是我的python代码。

import smtplib

def send_email(TOADDRS):

FROMADDR = "example@email.com"
LOGIN    = FROMADDR
PASSWORD = "password"
SUBJECT  = "Welcome to Stack Overflow"

server = smtplib.SMTP('smtp.example.com',587)
server.set_debuglevel(1)
server.ehlo()
server.starttls()
server.login(LOGIN, PASSWORD)

msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n"
   % (FROMADDR, ", ".join(TOADDRS), SUBJECT) )
msg += """ This a test \r\n"""

server.sendmail(FROMADDR, TOADDRS, msg)
server.quit()

如果名称 ==“主要”:

f= open("email.txt","r")
linea=f.readline()
while linea !="":
 send_email(linea)
 linea = f.readline()
f.close()

1 个答案:

答案 0 :(得分:0)

我认为你这样做有点错误。一种更简单的方法是:

import smtplib
from email.mime.text import MIMEText

with open ("email.txt", "r") as myfile:
    while linea !="":
        data=myfile.readline().replace('\n', '')
        send_email(data)

def send_email(TOADDRS):    
    FROMADDR = "example@email.com"
    LOGIN    = FROMADDR
    PASSWORD = "password"
    SUBJECT  = "Welcome to Stack Overflow"
    BODY = "Test body"


    msg = MIMEText(BODY)
    msg['Subject'] = SUBJECT
    msg['From'] = 'example@email.com'
    msg['To'] = TOADDRS
    send = smtplib.SMTP('smtp.example.com',587)
    send.set_debuglevel(1)
    send.ehlo()
    send.starttls() 
    send.login(LOGIN, PASSWORD)
    send.sendmail(msg['From'], msg['To'], msg.as_string())
    send.quit()

这是我的头脑,它应该适合你。您可能希望一次将文件中的数据读入列表,然后遍历列表。它会更有效率。我只是想让你看看它应该如何运作。