LINUX.ORG.RU

Отправка письма на несколько почтовых адресов:

 ,


0

1

сделал вот что :

          mail_from = 'f'  # отправитель
          mail_to = 'f '  # получатель
          mail_text = message  # текст письма
          mail_subj = type  # заголовок письма
          mail_coding = 'utf-8'
          attach_file = 'log.txt'  # прикрепляемый файл

          # Параметры SMTP-сервера
          smtp_server = "smtp.gmail.com"
          smtp_port = 587
          smtp_user = "u"  # пользователь smtp
          smtp_pwd = "p"  # пароль smtp

          # формирование сообщения
          multi_msg = MIMEMultipart()
          multi_msg['From'] = Header(mail_from, mail_coding)
          multi_msg['To'] = Header(mail_to, mail_coding)
          multi_msg['Subject'] = Header(mail_subj, mail_coding)
          multi_msg["Cc"] = "сюда не отправляет"
          msg = MIMEText(mail_text.encode('utf-8'), 'plain', mail_coding)
          msg.set_charset(mail_coding)
          multi_msg.attach(msg)

          # присоединяем атач-файл
          if (os.path.exists(attach_file) and os.path.isfile(attach_file)):
              file = open(attach_file, 'rb')
              attachment = MIMEBase('application', "octet-stream")
              attachment.set_payload(file.read())
              email.encoders.encode_base64(attachment)
              file.close()
              only_name_attach = Header(os.path.basename(attach_file), mail_coding);
              attachment.add_header('Content-Disposition', 'attachment; filename="%s"' % only_name_attach)
              multi_msg.attach(attachment)
          else:
              if (attach_file.lstrip() != ""):
                  print("Файл для атача не найден - " + attach_file)

          # отправка
          smtp = smtplib.SMTP(smtp_server, smtp_port)
          smtp.ehlo()
          smtp.starttls()
          smtp.ehlo()
          smtp.login(smtp_user, smtp_pwd)
          smtp.sendmail(mail_from, mail_to, multi_msg.as_string())
          smtp.quit()
все устраивает , се прекрасно , но нужно это отправить на 3 почтовых ящика , так вот , что бы я не делал не отправляет ,даже копию не отправляет,работает только на один,кто подскажет,в чем я затупил ?


тебе же писали, система анти-спам у гуглов

что если три раза одно письмо с разными адресами? а может пауза N минут нужна? если первое не поможет, что если чуть менять содержимое письма? чтобы гуглы не думали что ты рассылаешь одно и то же

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

хотелось бы как то без мегакостылей =)

вообще можно было бы даже в цикл вальнуть что бы оно по очереди отправляло но это ужс , вот нарыл в инете такой код :

# coding: utf8

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

toaddr = ['<user@mail.ru>', '<user2@mail.ru>', '<user3@mail.ru>']
me = 'From: My Name <user@gmail.com>'
you = 'To: ' + ', '.join(toaddr)

server = 'smtp.gmail.com' # Сервер отпраитель
port = 25 # возможные порты: 587, 465
user_name = 'user@gmail.com' # Адрес отправителя
user_passwd = 'password' # Пароль отправителя

# Формируем заголовок письма
msg = MIMEMultipart('mixed')
msg['Subject'] = 'Заголовок письма'
msg['From'] = me
msg['To'] = ', '.join(toaddr[0:2]) # отправка 2-м адресаиам
msg['cc'] = ', '.join([ toaddr[2] ]) # отправка копии 1-му адресату

# Формируем письмо
part1 = MIMEText('Содержимое письма', 'plain')
part2 = MIMEText('Содержимое приложенного файла', 'text/html;name="tasks.htm"', 'utf-8')
msg.attach(part1)
msg.attach(part2)

# Подключение
s = smtplib.SMTP(server, port)
s.ehlo()
s.starttls()
s.ehlo()
# Авторизация
s.login(user_name, user_passwd)
# Отправка пиьма
s.sendmail(me, toaddr, msg.as_string())
s.quit()
он отправляет на несколько адресов , но чет не могу его так сказать воссоеденить со своим творением

echo_
() автор топика
assert isinstance(send_to, list)
multi_msg['To'] = COMMASPACE.join(send_to)
Ip0 ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.