Я слежу за этими примерами -> https://docs.python.org/3.4/library/email-examples.html, чтобы отправить сообщение MIME, в которое можно вложить изображения.
Этот пример кода доставляет мне неприятности:
# Import smtplib for the actual sending function
import smtplib
# Here are the email package modules we'll need
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
COMMASPACE = ', '
# Create the container (outer) email message.
msg = MIMEMultipart()
msg['Subject'] = 'Our family reunion'
# me == the sender's email address
# family = the list of all recipients' email addresses
msg['From'] = me
msg['To'] = COMMASPACE.join(family)
msg.preamble = 'Our family reunion'
# Assume we know that the image files are all in PNG format
for file in pngfiles:
# Open the files in binary mode. Let the MIMEImage class automatically
# guess the specific image type.
with open(file, 'rb') as fp:
img = MIMEImage(fp.read())
msg.attach(img)
# Send the email via our own SMTP server.
s = smtplib.SMTP('localhost')
s.send_message(msg)
s.quit()
В частности это:
for file in pngfiles:
# Open the files in binary mode. Let the MIMEImage class automatically
# guess the specific image type.
with open(file, 'rb') as fp:
img = MIMEImage(fp.read())
msg.attach(img)
pngfiles не определен, и я не знаю, как его определить. Я попытался:
pngfiles = "C:\\Users\\Public\\Documents\\FamilyPics"
Но всякий раз, когда я запускаю код, он возвращает:
PermissionError: [Errno 13] Permission denied: 'C:\\Users\\Public\\Documents\\FamilyPics'
Я понимаю, что эта ошибка появляется, потому что я даю ей каталог вместо указанного c файл. Я могу отправить одно изображение, если я укажу непосредственно на изображение и его имя с использованием:
path = 'C:\\Users\\Public\\Documents\\FamilyPics\\picture.png'
f = open(path, 'rb')
img = MIMEImage(f.read())
msg.attach(img)
Но я действительно не могу понять, как указать каталог, содержащий вместо этого несколько изображений одного указанного c файла. Пожалуйста помоги. Вот мой полный код, который работает для отправки одного файла:
import smtplib
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
me = 'my_email'
me_pass = 'my_pass'
family = 'receiver_email'
COMMASPACE = ', '
text = """\
Hi,
How are you?
:)
"""
part1 = MIMEText(text, "plain")
msg = MIMEMultipart()
msg['Subject'] = 'Our family reunion'
msg['From'] = me
msg['To'] = COMMASPACE.join(family)
msg.preable = 'Our family reunion'
path = 'C:\\Users\\Public\\Documents\\FamilyPics\\picture.png'
f = open(path, 'rb')
img = MIMEImage(f.read())
msg.attach(part1)
msg.attach(img)
s = smtplib.SMTP('smtp.gmail.com', 587)
s.ehlo()
s.starttls()
s.ehlo()
s.login(me, me_pass)
s.send_message(msg, me, family)
s.quit()