Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python 3.3中从.txt向收件人发送电子邮件_Python_Python 3.x_Smtp_Smtplib - Fatal编程技术网

在python 3.3中从.txt向收件人发送电子邮件

在python 3.3中从.txt向收件人发送电子邮件,python,python-3.x,smtp,smtplib,Python,Python 3.x,Smtp,Smtplib,我正在尝试使用python 3.3中的smtp向文本文件中列出的收件人发送电子邮件。 我收到的错误是: session.sendmail(发件人、收件人、msg.as\u string()) smtplib.smtprecipientsreference:{} sendmail中的错误在哪里?谢谢 完整代码如下: #!/usr/bin/python import os, re import sys import smtplib from email.mime.image import MIME

我正在尝试使用python 3.3中的smtp向文本文件中列出的收件人发送电子邮件。 我收到的错误是:
session.sendmail(发件人、收件人、msg.as\u string())
smtplib.smtprecipientsreference:{}

sendmail中的错误在哪里?谢谢

完整代码如下:

#!/usr/bin/python
import os, re
import sys
import smtplib

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

mails = open('/path/emails.txt','r+')
mailList = mails.read()
mailList = [i.strip() for i in mails.readlines()] 
directory = "/path/Desktop/"

SMTP_SERVER = 'smtp.gmail.com'
SMTP_PORT = 587

sender = 'Sender@gmail.com'
password = "Sender'sPassword"
recipient = [i.strip() for i in mails.readlines()] 
subject = 'Python (-++-) Test'
message = 'Images attached.'

def main():
    msg = MIMEMultipart()
    msg['Subject'] = 'Python (-++-) Test'
    msg['To'] = recipient
    msg['From'] = sender

    files = os.listdir(directory)
    pngsearch = re.compile(".png", re.IGNORECASE)
    files = filter(pngsearch.search, files)
    for filename in files:
        path = os.path.join(directory, filename)
        if not os.path.isfile(path):
            continue

         img = MIMEImage(open(path, 'rb').read(), _subtype="png")
         img.add_header('Content-Disposition', 'attachment', filename=filename)
         msg.attach(img)

    part = MIMEText('text', "plain")
    part.set_payload(message)
    msg.attach(part)

    session = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)

    session.ehlo()
    session.starttls()
    session.ehlo
    session.login(sender, password)

    session.sendmail(sender, recipient, msg.as_string())
    session.quit()

if __name__ == '__main__':
    main()

您想再次检查您的收件人代码。看起来您不止一次地尝试使用文件的内容,这是行不通的--文件对象应该被理解为一个流,而不是一个数据块,因此,一旦您执行了
f.read()
[i.strip()for i in mails.readlines()]
一次,该流就是空的,因此,第二次这样做将产生一个空列表。您应该通过打印
收件人

然后试试这个:

mails = open('/path/emails.txt','r+')
#mailList = mails.read()
#mailList = [i.strip() for i in mails.readlines()] 
directory = "/path/Desktop/"

SMTP_SERVER = 'smtp.gmail.com'
SMTP_PORT = 587

sender = 'Sender@gmail.com'
password = "Sender'sPassword"
recipient = [i.strip() for i in mails.readlines()] 
print(recipient)
subject = 'Python (-++-) Test'
message = 'Images attached.'
现在,您应该有一个已填充的收件人列表,并进入下一期