.jar输出到python smtp电子邮件[重复]

问题描述 投票:0回答:3

这个问题在这里已有答案:

在Linux系统上运行。我有一个可执行的.jar文件,我试图将输出输入到我正在发送我的python程序的电子邮件正文中。但是,虽然此程序执行,但收到​​的电子邮件中没有任何内容。因此.jar的输出在子进程中丢失。

import smtplib
import subprocess

s = smtplib.SMTP('smtp.gmail.com', 587)
s.starttls()
s.ehlo()
# login cred
username='[email protected]'
password='password'
s.login(username,password)
# email objects
replyto='[email protected]'
sendto=['[email protected]']
sendtoShow='[email protected]' 
subject='Example Subject'
content=subprocess.run(['java', '-jar', 'Example.jar'], stdout=subprocess.PIPE)
mailtext='From: '+replyto+'\r\nTo: '+sendtoShow+'\r\n'
mailtext=mailtext+'Subject:'+subject+'\r\n\r\n'+content.stdout.decode("utf-8")
s.sendmail(replyto, sendto, mailtext)
rslt=s.quit()
print('Sendmail result=' + str(rslt[1]))

问题解决了并反映在上面。

java python jar
3个回答
0
投票

subprocess.call返回程序的返回码,而不是程序的输出。所以在你的情况下,“内容”是int而不是string

尝试类似的东西:

content=subprocess.run(['java', '-jar', 'Example.jar'], stdout=subprocess.PIPE)
mailtext='From: '+replyto+'\r\nTo: '+sendtoShow+'\r\n'
mailtext=mailtext+'Subject:'+subject+'\r\n\r\n'+content.stdout.decode("utf-8")

0
投票

检查执行字符串连接的行。

mailtext='From: '+replyto+'\nTo: '+sendtoShow+'\n'
mailtext=mailtext+'Subject:'+subject+'\n'+content
...
print('Sendmail result=' + str(rslt[1]))

这些行中的任何一行都试图将str和int对象连接在一起吗?那就是replytosendtoShowmailtextsubjectcontent中的任何一个int物体?为了避免猜测,只需像在最后一行那样将它们转换为str


0
投票

subprocess.call返回退出代码,而不是stdout。你需要使用popen方法。

© www.soinside.com 2019 - 2024. All rights reserved.