2016-05-05 79 views
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 
+0

どのようにあなたのcrontabを設定しますか? – fedorqui

+0

OK構文はうまくいくようです。 [debugging crontab](http://stackoverflow.com/tags/crontab/info)をチェックしてみてください。また、それは本当に動作する必要がありますか?私が[ubuntu crontabのpythonスクリプトを実行しようとしている](http://stackoverflow.com/q/17518073/1983854)_ cronjobはGUI_を表示できるディスプレイにアクセスできません。 – fedorqui

+0

私はコンピュータにあるディスプレイを使用するようスクリプトに指示しているので、これはうまくいくはずです。 'os.environ [" DISPLAY "] =":0.0 "' – rafaelcpalmeida

答えて

0

それはすでにユーザーpath、すなわちに含まれていた場合、pythonフルパスを提供する、または単にpython

30 10 * * * /full/path/to/python /usr/local/bin/reportSender.py 

または

30 10 * * * python /usr/local/bin/reportSender.py 
+0

それはうまくいかなかった:( – rafaelcpalmeida

関連する問題