我正在将shell脚本转换为python。在我的python代码中,当我尝试发送电子邮件时,我收到错误消息。我是python的新手。请帮我解决这个问题。
Shell代码:
id=`whoami`
userid_list=2nd_user
SUBJECT=mail
echo "Content-Type: text/html; charset=iso-8859-1
Content-Transfer-Encoding: 7bit
From: $id
To: $userid_list
Subject: $SUBJECT
" > $email
SENDMAIL=/usr/lib/sendmail
$SENDMAIL -oi -t < $email
python代码:
sender_id = getpass.getuser()
userid = getpass.getuser()
content = """Content-Type: text/html; charset=iso-8859-1
Content-Transfer-Encoding: 7bit
From: """ + sender__id + """
To: """ + userid + """
Subject: mail"""
email= "/tmp/mail"
with open(email, 'a') as f:
f.write(content)
SENDMAIL = "/usr/lib/sendmail"
subprocess.call(SENDMAIL + " -oi -t < " + email, shell=True)
错误讯息:
sendmail:致命:vijay(1254164854):邮件标题中找不到收件人地址
答案 0 :(得分:0)
内容变量中的sender__id
有两个下划线,而不是原始声明的sender_id
只有一个。
Python将每个变量视为一个对象,并且不需要声明每个变量以供其使用,因此编译器/解释器在遇到诸如您发布的情况之类的情况时不会发出警告。
答案 1 :(得分:0)
两个邮件文件(1个来自shell&amp; 1表单python)的行对齐方式不同。当我更改对齐时,它有效。
来自shell的电子邮件文件:
Content-Type:text / html;字符集= ISO-8859-1
Content-Transfer-Encoding: 7bit
来自:vijay
致:kumar
主题:测试邮件
来自python的电子邮件文件(&#34; / tmp / mail&#34;):
Content-Type:text / html;字符集= ISO-8859-1
Content-Transfer-Encoding: 7bit
From: vijay
To: kumar
Subject: test mail
我将电子邮件文件(从python代码生成)的对齐方式更改为shell.It工作