Работы Cron и приложения электронной почты

Я надеюсь, что кто-то может помочь мне здесь. Я искал везде и спрашивал друга, но ничего не могу найти. У меня есть скрипт python, который читает пару файлов, исправляет некоторые номера штрихкодов, а затем электронные письма, используя smtplib, 2 файла в виде вложений. Сценарий отлично работает из командной строки, оба вложения отправляются по электронной почте. Но, из Cron отправляется электронное письмо, но вложений нет. Кто-нибудь знает, есть ли какая-либо конфигурация, которая должна быть изменена, или если в сценарии python должно быть что-то еще, чтобы позволить Cron отправлять вложения?

Вот моя строка в crontab, ничего необычного [ ! d1] 15 01 * * * /home/user/folder/./script.py

Я использую cron для отправки других писем из скриптов python и не имел никаких проблем. Единственное отличие в том, что ни у кого из других нет вложений.

Если кто-то слышал об этом и может помочь, это было бы здорово! Если вам нужна часть или весь код python, сообщите мне.

Спасибо

0
задан 17 January 2018 в 04:22

2 ответа

Если у кого-то есть эта проблема, вот как я ее решил, возможно, есть много других способов, и если у кого-то есть лучший, пожалуйста, дайте мне знать.

Cron не запускал скрипт в правильной среде, чтобы он мог запускать скрипт, но он искал неправильный каталог для вложений. Он не мог их найти. То, что я сделал, это написать сценарий оболочки следующим образом:

#!/bin/bash cd /path/to/directory python file.py

Это позволяет среде изменять каталог, в котором я хочу работать. Теперь эти вложения найдены, так как сценарий и вложения находятся в тот же каталог.

Я изменил задание Cron для запуска сценария оболочки:

30 01 * * * /path/to/script/./script.sh

Я не уверен, что это просто работа или фактическое решение, но это работает, и это полезно для меня!

0
ответ дан 17 July 2018 в 22:50

Если у кого-то есть эта проблема, вот как я ее решил, возможно, есть много других способов, и если у кого-то есть лучший, пожалуйста, дайте мне знать.

Cron не запускал скрипт в правильной среде, чтобы он мог запускать скрипт, но он искал неправильный каталог для вложений. Он не мог их найти. То, что я сделал, это написать сценарий оболочки следующим образом:

#!/bin/bash cd /path/to/directory python file.py

Это позволяет среде изменять каталог, в котором я хочу работать. Теперь эти вложения найдены, так как сценарий и вложения находятся в тот же каталог.

Я изменил задание Cron для запуска сценария оболочки:

30 01 * * * /path/to/script/./script.sh

Я не уверен, что это просто работа или фактическое решение, но это работает, и это полезно для меня!

0
ответ дан 24 July 2018 в 13:26
  • 1
    Это скорее обходной путь. Но не бери в голову. Вероятно, вы должны искать вложения в (или относительно) пути, где находится скрипт Python: import os; script_dir=os.path.dirname(os.path.realpath(__file__)) Теперь вы можете найти прикрепления относительно script_dir и отбросить оболочку оболочки. /// Вы также можете изменить свой cronjob на 30 01 * * * cd /path/to/script; python file.py (и снова опустить оболочку оболочки). – PerlDuck 18 January 2018 в 18:07

Другие вопросы по тегам:

Похожие вопросы: