Найти - Пользователи
Полная версия: Отправка почты
Начало » Web » Отправка почты
1 2 3
denz
Это уже вопрос работы удаленного SMTP сервера.
Он может отвергать соединение потому что просто сервера там нет, или он настроен отвергать такое соединение (например по твоему IP), или он не настроен на авторизацию.
Нормальная практика - разрешать авторизацию только в режиме TLS.
попробуй так:

#!/usr/bin/env python

import smtplib

server = smtplib.SMTP('mail.bk.ru')
server.set_debuglevel(1)
server.ehlo()
server.starttls()
server.ehlo()
server.login(“login”, “password”)
server.sendmail(“sobaka@bk.ru”,“barabaka@bk.ru”, “Subject: testing message\r\n”)
server.quit()
Все ники заняты
denz, спасибо большое, получилось отправить так:
# -*- coding: cp1251 -*-
import smtplib
from email.MIMEText import MIMEText

# отправитель
me = 'me@bk.ru'
# получатель
you = 'you@gmail.com'
# текст письма
text = 'Это тестовое письмо!\nС наилучшими пожеланиями!'
# заголовок письма
subj = 'Привет от Python'

# параметры SMTP-сервера
server = "194.67.23.114" # "smtp.bk.ru"
port = 25
user_name = "me"
user_passwd = "pass"

msg = MIMEText(text, "", "cp1251")
msg['Subject'] = subj
msg['From'] = me
msg['To'] = you

s = smtplib.SMTP(server, port)
s.starttls()
s.login(user_name, user_passwd)
s.sendmail(me, you, msg.as_string())
s.quit()
Однако, осталось две проблемы:
1. Бред с кодировками. Тема письма приходит по-русски, тело письма - в кракозябрах.
2. Как отправить письмо с аттачем файла?
j2a
Все ники заняты
1. Бред с кодировками. Тема письма приходит по-русски, тело письма - в кракозябрах.
2. Как отправить письмо с аттачем файла?
http://docs.python.org/lib/module-email.html
Все ники заняты
j2a, не нашёл по ссылке ответа на свои вопросы.
pythonwin
вот ещё пример, правда для входящей почты, но там есть решение проблемы по кодировке:
http://python.com.ua/forum/viewtopic.php?id=671
Все ники заняты
Спасибо, но не получается. Код:
# -*- coding: cp1251 -*-
import smtplib, os
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.MIMEBase import MIMEBase
from email import Encoders

# отправитель
me = 'me@bk.ru'
# получатель
you = 'you@gmail.com'
# текст письма
text = 'Это тестовое письмо!\nС наилучшими пожеланиями!'
text = unicode(text, "cp1251").encode("koi8-r")
# заголовок письма
subj = 'Привет от Python'
# вложение
myfile = 'C:\\Temp\\cshadow.zip'

# параметры SMTP-сервера
server = "194.67.23.114" # "smtp.bk.ru"
port = 25
user_name = "me"
user_passwd = "pass"

# msg = MIMEText(text, "", "cp1251")
msg = MIMEMultipart()
msg['Subject'] = subj
msg['From'] = me
msg['To'] = you
msg.attach(MIMEText(text, "", "cp1251"))

part = MIMEBase('application', "octet-stream")
part.set_payload(open(myfile,"rb").read())
Encoders.encode_base64(part)
part.add_header('Content-Disposition',
'attachment; filename="%s"' % os.path.basename(myfile))
msg.attach(part)

s = smtplib.SMTP(server, port)
s.starttls()
s.login(user_name, user_passwd)
s.sendmail(me, you, msg.as_string())
s.quit()
Почта уходит, но вместо отправленного в почтовом клиенте получаю “Mail delivery failed: returning message to sender”:
SMTP error from remote mailer after end of data:
host gmail-smtp-in.l.google.com :
552 5.7.0 Illegal Attachment y37si705888iky
Самое смешное, что если посылать какой-нибудь boot.ini - всё доходит, zip - не доходит.
И по кодировкам. Я вообще не понимаю, с какого перепугу работает только вот так:
text = unicode(text, “cp1251”).encode(“koi8-r”)
У меня WinXP SP2, ActivePython 2.5. Откуда взялась эта “koi8-r” ??????
Все ники заняты
Помогите поправить код, please. Из почтового клиента этот сервер без проблем отправляет и получает zip'ы, так что проблема точно в коде.
VIN
j2a
Странно пишешь…
1) Модуль string устарел. Нужно пользоваться методами.
2) Зачем переменная host, если в smtplib.SMTP все равно указываешь ip?
3) А ты вообще никаких заголовков не указал. Не путай заголовки в письме и адресат, кому отправляешь.

import smtplib
from email.MIMEText import MIMEText

me = ‘xxx@mail.ru
me_in_header='bugaga@mail.ru'
you = ‘xxx0@mail.ru
you_in_header = ‘opa@mail.ru
they = ‘yyy@mail.ru, zzz@list.ru
they_in_header = ‘malchick@mail.ru, devotchka@list.ru
text = “”“
This email brings BCC news for you!!
Best Regards!!!
”“”

msg = MIMEText(text)
msg = ‘Hey from Python’
msg = me_in_header
msg = you_in_header
msg = they_in_header

recipients = list(you) +

s = smtplib.SMTP() # means localhost
s.connect()
s.sendmail(me, recipients, msg.as_string())
s.close()
В качестве разминки - подумай, кто же реально получит сообщение и с какими заголовками.
в качестве разминки протестируй сначала сам
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