.jar输出到Python SMTP电子邮件



在Linux系统上运行。我有一个可执行的.jar文件,我试图将输出输出到我正在发送Python程序的电子邮件正文中。但是,尽管该程序执行,但在身体中什么也没有收到电子邮件。因此,.jar的输出在子过程中丢失。

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

问题解决并反映了上述。

subprocess.call返回程序的返回代码,而不是程序的输出。因此,在您的情况下,"内容"是int而不是string

尝试类似:

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

检查您要执行字符串串联的行。

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

这些线是否试图将str和int对象串联在一起?也就是说,replytosendtoShowmailtextsubjectcontent实际上是CC_7中的任何一个吗?为了避免猜测,只需像您在最后一行一样将它们扔到str

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

最新更新