以下脚本正确发送:
import smtplib, argparse
parser = argparse.ArgumentParser(description="fdsafsa")
parser.add_argument('-r', nargs='?', default=False, help='help')
args = parser.parse_args()
foo = 1
baz = 'fdsa'
TEXT = 'This is the message %d%s' %(foo,baz)
message = '\
From: me@yahoo.com \n\
To: %s \n\
Subject: Data saved successfully \n\
%s' %(args.r,TEXT)
s = smtplib.SMTP('localhost')
s.sendmail('me@yahoo.com',args.r,message)
但是此脚本无法正确发送电子邮件(请注意for loop
)
import smtplib, argparse
parser = argparse.ArgumentParser(description="fdsafsa")
parser.add_argument('-r', nargs='?', default=False, help='help')
args = parser.parse_args()
for ii in range(2):
foo = 1d
baz = 'fdsa'
TEXT = 'This is the message %d%s' %(foo,baz)
message = '\
From: me@yahoo.com \n\
To: %s \n\
Subject: Data saved successfully \n\
%s' %(args.r,TEXT)
s = smtplib.SMTP('localhost')
s.sendmail('me@yahoo.com',args.r,message)
在后一个示例中,电子邮件不包含主题或来自字段。它们出现在身体中。
示例正文:
来自:me@yahoo.com
致:me@yahoo.com
主题:数据已成功保存
这是消息1fdsa
在前面的例子中只有"这是消息1fdsa"部分出现在体内。为什么smtplib模块在message
处于for loop
时无法正确读取$('#clickme').click( function(){
中的from,to和subject字段?
答案 0 :(得分:2)
您已将代码缩进为循环的一部分,但多行字符串还包含每行上的前导空格作为字符串本身的一部分 - 因为您看看是否将其打印出来。电子邮件对这类内容非常敏感,因此不再将这些行视为标题。
通过字符串连接做到这一点要好得多:
message = (
'From: me@yahoo.com \n'
'To: %s \n'
'Subject: Data saved successfully \n'
'%s' %(args.r,TEXT)
)
由于这些行都在括号内,因此它们将自动连接。