首页 > 解决方案 > .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+'\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]))

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

标签: javapythonjar

解决方案


检查您正在执行字符串连接的行。

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

这些行是否试图将 str 和 int 对象连接在一起?也就是说,是replyto, sendtoShow, mailtext, subject, 还是content实际上的int对象?为避免猜测,只需将它们投射到str最后一行的样子即可。


推荐阅读