2013-12-10 10 views
2

Я пытаюсь создать небольшой SMTP-сервер, с помощью которого я могу отправлять сообщения. Глядя на библиотеку smtpd, выяснилось, что что-то есть. Но я только смог создать сервер, который читал полученное письмо, но никогда не отправлял его по запрошенному адресу.Отправка почты через SMTP-сервер Python

import smtpd 
import asyncore 

class CustomSMTPServer(smtpd.SMTPServer): 

def process_message(self, peer, mailfrom, rcpttos, data): 
    print 'Receiving message from:', peer 
    print 'Message addressed from:', mailfrom 
    print 'Message addressed to :', rcpttos 
    print 'Message length  :', len(data) 
    return 

server = CustomSMTPServer(('127.0.0.1', 1025), None) 

asyncore.loop() 

клиент:

import smtplib 
import email.utils 
from email.mime.text import MIMEText 

# Create the message 
msg = MIMEText('This is the body of the message.') 
msg['To'] = email.utils.formataddr(('Recipient', '[email protected]')) 
msg['From'] = email.utils.formataddr(('Author', '[email protected]')) 
msg['Subject'] = 'Simple test message' 

server = smtplib.SMTP('127.0.0.1', 1025) 
server.set_debuglevel(True) # show communication with the server 
try: 
    server.sendmail('[email protected]', ['[email protected]'], msg.as_string()) 
finally: 
    server.quit() 
+0

Почему вы хотите написать свой собственный MTA? –

+0

Уметь настраивать и хранить все, что удобно. – Blas

+0

См. Мой ответ ниже. Много хороших реализаций MTA предлагают довольно много вариантов конфигурации. –

ответ

3

Если вы действительно хотите сделать это затем проверить Twisted примеры:

http://twistedmatrix.com/documents/current/mail/examples/index.html#auto0

Я действительно не рекомендую вам написать ваш собственный MTA (Mail Transfer Agent), так как это сложная задача с множеством краевых случаев и стандартов, о которых нужно беспокоиться.

Используйте существующий MTA, такой как Postfix, Exim или Sendmail.

+0

Спасибо человеку! Я не знал о Postfix или Exim – Blas

+1

Нет проблем. Нет смысла повторно изобретать колесо или колесо (колеса). –

Смежные вопросы