Python:如何向smtp消息体添加一个函数

时间:2014-01-30 12:20:42

标签: python smtp

我是python的新手,遇到了问题。 我想将一个函数附加到smtp消息的主体。 函数返回信息的结果,我需要这些结果在我的身体信息中,以便其他人可以在收到电子邮件时看到它,不知道该怎么做。

对这个新手的任何帮助都会很棒!!

这是我的代码:

import smtplib

# For guessing MIME type
import mimetypes

# Import the email modules we'll need
import email
import email.mime.application

# Create a text/plain message
msg = email.mime.Multipart.MIMEMultipart()
msg['Subject'] = 'Greetings'
msg['From'] = 'test1@mail.com'
msg['To'] = 'test2@mail.com'

# The main body is just another attachment
body = email.mime.Text.MIMEText("""Hello, how are you? I am fine.
This is a rather nice letter, don't you think?""")
msg.attach(body)


# send via Gmail server
# NOTE: my ISP, Centurylink, seems to be automatically rewriting
# port 25 packets to be port 587 and it is trashing port 587 packets.
# So, I use the default port 25, but I authenticate. 
s = smtplib.SMTP('localhost', 25)
s.starttls()
s.login(username, password)
s.sendmail('To', 'From', msg.as_string())
s.quit() 

if len(argument1) > 0:
    startThebootstrap.function (argument1, t.argument2 ())

当前正文仅接受文本,我想更改此内容以获取函数结果。 这可能吗?

我使用argsparse命令我想要的部分,结果出现在CMD上,我希望这些结果在我的电子邮件中。

我有一个开始显示结果的命令。

1 个答案:

答案 0 :(得分:0)

<强> 1。您想发送一些python对象(函数参数或结果)

一般的方法是使用“序列化器”来对字符串创建对象(而不是函数)。

import pickle # pickle is not a save serializer. you can build virusses with it.
string = pickle.dumps(object) # string can be attached to the email.
object = pickle.loads(string) 

pickle可以传输病毒和功能,但这两个不能:

import json
string = json.dumps(object).encode('utf-8') # string can be attached to the email.
object = json.loads(string.decode('utf-8'))

import ast
string = repr(["smile!"])
object = ast.literal_eval(string)

<强> 2。您想发送函数的源代码

import linecache
def function():
    return 5
source_lines = inspect.getsourcelines(function)[0]
source_code = ''.join(source_lines) # make the list to a string

现在您可以将source_code添加到邮件正文中。

请告诉我您对此的看法以及您是否理解。