使用Python从文本文件发送电子邮件的最后几行

1 投票
5 回答
2061 浏览
提问于 2025-04-15 17:18

我正在尝试设置一个电子邮件功能,想用Python发送results.txt文件的最后15行内容。可是我不太确定该怎么做,我想知道是否需要连接到一个邮件服务器,或者Python有没有其他发送邮件的方法。下面是我目前写的代码,任何帮助都非常感谢。谢谢!

import smtplib  

# Import the email modules we'll need
from email.mime.text import MIMEText

# Open a plain text file for reading.  For this example, assume that
# the text file contains only ASCII characters.
fp = open('/home/build/result.txt', 'r')
# Create a text/plain message
msg = MIMEText(fp.read())
fp.close()

me = 'name@server.com'
you = 'name@server.com'
msg['Subject'] = 'The contents of %s' % '/home/build/result.txt'
msg['From'] = me
msg['To'] = you

# Send the message via our own SMTP server, but don't include the
# envelope header.
s = smtplib.SMTP()
s.sendmail(me, [you], msg.as_string())
s.quit()

再次问好,

当我尝试连接时,服务器无法连接。我知道我不应该输入电子邮件地址。有人能建议我该怎么写主机信息吗?谢谢!

smtplib.SMTPServerDisconnected: please run connect() first

5 个回答

1
2

在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在程序中使用这些数据。这个过程可能会涉及到很多步骤,比如连接到数据库、查询数据、处理数据等等。

当我们在写代码的时候,可能会遇到一些错误或者问题,这时候就需要调试。调试就是找出代码中哪里出了问题,并进行修正。这个过程可能需要我们仔细检查每一行代码,看看是不是有拼写错误、逻辑错误或者其他问题。

有时候,程序运行得很慢,可能是因为代码写得不够高效。我们可以通过优化代码来提高程序的运行速度,比如减少不必要的计算、使用更好的算法等。

总之,编程就像是解决一个个小难题,我们需要耐心和细心,才能把这些问题一个个解决掉。

msg = MIMEText(''.join(fp.readlines()[-15:]))
4

你的电脑想要发送邮件,必须先连接到一个服务器,不然邮件怎么能从你的电脑发出去呢?大多数人都有一个现成的SMTP服务器,这个服务器要么是公司提供的(如果是在公司内部网络上),要么是互联网服务提供商(ISP)提供的(如果是在家里使用)。你需要知道服务器的主机名(通常像是smtp1.myispdomain.com,当然myispdomain会是你自己的ISP的名字)和一个端口号,通常是25。有时候,服务器的地址会以数字形式提供,比如192.168.0.1。

使用SMTP()这个调用可以把这些参数传进去,它会自动连接到服务器。如果你在创建SMTP对象时没有提供这些参数,之后你就得调用connect()方法,并提供相同的信息。想了解更多,可以查看文档

需要注意的是,默认情况下,它会连接到localhost和25端口。如果你是在运行自己邮件转发程序的Linux系统上(比如Postfix、Sendmail、Exim),这样是可以的。但如果你是在Windows电脑上,通常需要使用ISP提供的地址。

撰写回答