2
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
from Tkinter import *
import tkMessageBox
import smtplib
import sys
from email.mime.multipart
import MIMEMultipart
from email.mime.text import MIMEText
from email.header import Header
def Call():
global root
sender = 'Nome 1 <[email protected]>'
receivers = ['Nome 2 <[email protected]>',
'Nome 3 <[email protected]>',
'Nome 4 <[email protected]>']
msg = MIMEMultipart('alternative')
msg['Subject'] = Header("Envio de relatório diário", 'utf-8')
msg['From'] = sender
msg['To'] = ", ".join(receivers)
text = "A actividade de hoje foi:\n\n\n\n" + tb.get("1.0",'end-1c')
msg.attach(MIMEText(text.encode('utf-8'), 'plain', 'utf-8'))
try:
smtpObj = smtplib.SMTP('smtp.office365.com',587)
smtpObj.ehlo()
smtpObj.starttls()
smtpObj.ehlo()
smtpObj.login('emailAqui','passwordAqui')
smtpObj.sendmail(sender, receivers, msg.as_string())
smtpObj.quit()
tkMessageBox.showinfo("Sucesso", "A sua mensagem foi enviada com sucesso.")
root.quit()
except SMTPException:
tkMessageBox.showinfo("Erro", "Ocorreu um erro a enviar a mensagem")
os.environ["DISPLAY"] = ":0.0"
root = Tk()
root.wm_title("Report sender")
root.geometry('600x675')
tb = Text(root, height = 40)
tb.pack(side=TOP,pady=10)
button = Button(root, text = 'Send report!', command = Call)
button.pack(side=TOP,pady=10)
root.mainloop()
root.destroy()
私は上記のコードを持つpythonスクリプトを持っています。それは私が、それは絶対パスを使用して呼び出した場合は期待どおりに動作:Pythonのtkinterがcrontabで動作しない
/usr/local/bin/reportSender.py
をしかし、私はcrontab
に配置するとき、私はそれは絶対パスです使用してそれを実行したときにそれがないとして、それは、任意のウィンドウを表示されません。
私crontab
は、テスト目的のために、次のようになります。
30 10 * * * /usr/local/bin/reportSender.py
どのようにあなたのcrontabを設定しますか? – fedorqui
OK構文はうまくいくようです。 [debugging crontab](http://stackoverflow.com/tags/crontab/info)をチェックしてみてください。また、それは本当に動作する必要がありますか?私が[ubuntu crontabのpythonスクリプトを実行しようとしている](http://stackoverflow.com/q/17518073/1983854)_ cronjobはGUI_を表示できるディスプレイにアクセスできません。 – fedorqui
私はコンピュータにあるディスプレイを使用するようスクリプトに指示しているので、これはうまくいくはずです。 'os.environ [" DISPLAY "] =":0.0 "' – rafaelcpalmeida