Уведомления

Группа в Telegram: @pythonsu

#1 Май 15, 2015 10:18:41

xintrea
Зарегистрирован: 2013-10-29
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Не понимаю Python. Объект MIMEMultipart. Присвоение значения свойству срабатывает один раз.

Вот пример кода, в котором перебираются элементы кортежа reportMail:

# -*- coding: utf-8 -*-
import os
from subprocess import Popen, PIPE

import smtplib
from email import Encoders
from email.MIMEBase import MIMEBase
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.Utils import formatdate

import time
import datetime

# Емайл для отправки отчетов
reportMail=( 'alice@mail.ru', 'bob@mail.ru' )

msg = MIMEMultipart()
msg["From"] = "Monitoring script"
msg["Subject"] = "Monitoring"
msg['Date'] = formatdate(localtime=True)

msg.add_header('From', 'Monitoring')
msg.add_header('Reply-To', 'Monitoring')
msg.add_header('X-Mailer', 'Python')
msg.add_header('Content-type', 'text/html charset=utf-8')

# Добавление текста сообщения
msg.attach(MIMEText("Это текст письма"))

# Перебор значений кортежа
for currentReportMail in reportMail:
print "Почтовый ящик "+currentReportMail+"\n"
msg["To"] = currentReportMail

print "А в конце "+msg["To"]+"\n"

Я ожидаю, что в конце будет показан e-mail Боба.

А на деле лог такой:

Почтовый ящик alice@mail.ru
Почтовый ящик bob@mail.ru
А в конце alice@mail.ru

Почему так? Почему в
msg["To"]
волшебным образом оказывается старое значение?

Офлайн

#2 Май 15, 2015 11:22:23

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Не понимаю Python. Объект MIMEMultipart. Присвоение значения свойству срабатывает один раз.

>>> from email.mime.multipart import MIMEMultipart
>>> 
>>> m = MIMEMultipart()
>>> str(m)
'From nobody Fri May 15 18:21:46 2015\nContent-Type: multipart/mixed; boundary="===============1058888429=="\nMIME-Version: 1.0\n\n--===============1058888429==\n\n--===============1058888429==--'
>>> m['To'] = 'x@x'
>>> m['To'] = 'y@y'
>>> m['To']
'x@x'
>>> str(m)
'From nobody Fri May 15 18:21:46 2015\nContent-Type: multipart/mixed; boundary="===============1058888429=="\nMIME-Version: 1.0\nTo: x@x\nTo: y@y\n\n--===============1058888429==\n\n--===============1058888429==--'
>>> 
>>> del m['To']
>>> m['To'] = 'z@z'
>>> m['To']
'z@z'
>>>



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version