Bash to python convertion用于发送电子邮件

时间:2018-05-29 04:44:28

标签: bash python-2.7 email subprocess

我正在将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):邮件标题中找不到收件人地址

2 个答案:

答案 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工作