gpt4 book ai didi

python - 用python编写简单的SMTP服务器

转载 作者:行者123 更新时间:2023-12-01 04:57:44 27 4
gpt4 key购买 nike

我正在尝试编写一个简单的 smtp 服务器程序。我编写了一个简单的 smtp 客户端(用 C# 编写),用于发送电子邮件。我已经用 smtp4dev 测试了该程序。到目前为止一切正常。

我还想编写自己的简单程序来接收电子邮件(而不是 smtp4dev)。我尝试了在网络上找到的许多不同的代码片段(例如: Here ),但我似乎无法让它们工作。

我也尝试过使用twisted .

首先我可以看到使用 TCPView代码中的端口号不是正在使用的端口号。

我感觉我错过了一些概念性的东西并且朝着错误的方向前进。

编辑

如果您有兴趣,这里是 C# 代码

MailMessage mail = new MailMessage();
mail.Subject = "Your Subject";
mail.From = new MailAddress("test@test.com.au");
mail.To.Add("soslab@soslab.lab");
mail.Body = "Hello! your mail content goes here...";
mail.IsBodyHtml = true;

SmtpClient smtp = new SmtpClient("LOCALHOST", 26);
smtp.EnableSsl = false;

try
{
smtp.Send(mail);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
<小时/>

这是Python代码

import smtpd
import asyncore

class EmailServer(smtpd.SMTPServer):
def process_message(self, peer, mailfrom, rcpttos, data):
print 'a'

def run():
foo = EmailServer(('localhost', 26), None)
try:
asyncore.loop()
except KeyboardInterrupt:
pass

if __name__ == '__main__':
run()

mail tcp

最佳答案

出于某种原因,当我从命令行运行该程序时,该程序运行良好

import smtpd
import asyncore
import winsound

class PYEmailServer(smtpd.SMTPServer):
def __init__(*args, **kwargs):
smtpd.SMTPServer.__init__(*args, **kwargs)

def process_message(self, peer, mailfrom, rcpttos, data):
winsound.Beep(2500, 1000)

def run():
foo = PYEmailServer(('localhost', 26), None)
try:
asyncore.loop()
except KeyboardInterrupt:
foo.close()

if __name__ == '__main__':
run()

当我从空闲状态运行它时,它不起作用。 (C# 程序只是抛出异常,就像服务不存在一样)。我不知道为什么会这样,但我原来的问题正在解决。

关于python - 用python编写简单的SMTP服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26987643/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com