Найти - Пользователи
Полная версия: Не понимаю Python. Объект MIMEMultipart. Присвоение значения свойству срабатывает один раз.
Начало » Python для новичков » Не понимаю Python. Объект MIMEMultipart. Присвоение значения свойству срабатывает один раз.
1
xintrea
Вот пример кода, в котором перебираются элементы кортежа 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"]
волшебным образом оказывается старое значение?
py.user.next
>>> 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'
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB