我正在尝试设置一个电子邮件功能,该功能将通过电子邮件发送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
答案 0 :(得分:4)
您的机器无法在未连接服务器的情况下发送邮件(否则邮件将如何从您的计算机中传出?)。大多数人都有为他们提供的随时可用的SMTP服务器,可以是他们的公司(如果是在内部网上),也可以是他们的ISP(如果是家庭用户)。您需要主机名(通常类似于smtp1.myispdomain.com,其中myispdomain当然是其他东西)和端口号,通常为25.有时主机是作为数字IP地址提供的,如192.168.0.1。 / p>
SMTP()
调用可以使用这些参数并自动连接到服务器。如果在创建SMTP对象时未提供参数,则必须稍后在其上调用connect()
,并提供相同的信息。有关详情,请参阅documentation。
请注意,默认情况下是连接到localhost
和端口25.如果您在运行自己的邮件转发器的Linux机器上(例如Postfix,Sendmail,Exim),这是有效的,但如果您正在使用Windows机器通常您必须使用ISP提供的地址。
答案 1 :(得分:2)
msg = MIMEText(''.join(fp.readlines()[-15:]))
答案 2 :(得分:1)
msg = MIMEText("\n".join(fp.read().split("\n")[-15:]))
或者如果你最后不需要空白行,请点击
msg = MIMEText("\n".join(fp.read().strip().split("\n")[-15:]))
答案 3 :(得分:1)
答案 4 :(得分:0)
您可能想查看我的mailer模块。它将电子邮件模块包装在标准库中。
from mailer import Mailer
from mailer import Message
message = Message(From="me@example.com",
To="you@example.com",
charset="utf-8")
message.Subject = 'The contents of %s' % '/home/build/result.txt'
message.Body = ''.join(fp.readlines()[-15:])
sender = Mailer('smtp.example.com')
sender.login('username', 'password')
sender.send(message)