.jar输出到python smtp emai

2024-06-16 13:08:19 发布

您现在位置:Python中文网/ 问答频道 /正文

在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+'\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]))

问题解决并反映在上面。你知道吗


Tags: sampleimportcom电子邮件usernameloginpasswordgmail
3条回答

检查执行字符串串联的行。你知道吗

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

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

你知道吗子流程调用返回退出代码,而不是标准输出。你需要使用popen方法。你知道吗

你知道吗子流程调用返回程序的返回代码,而不是程序的输出。所以在您的例子中,“内容”是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")

相关问题 更多 >