Как отправить программу на python

Рано или поздно практически у каждого разработчика возникает задача отправки электронной почты. Часто это связано с необходимостью информирования получателя о наступлении какого-нибудь события.

Материалы данной статьи используются в статье о камере для Raspberry Pi 3, в разделе о построении простой системы безопасности, суть которой заключается в отправке фотографии пользователю по электронке, при детектировании движения в зоне действия датчика.

Для отправки письма по электронной почте используется штатная, предустановленная в системе, библиотека smtplib :

import smtplib

Для получения справки о любом импортированном классе или библиотеке, в интерпретаторе Python, после непосредственно импорта, нужно выполнить команду:

>>> import smtplib >>> help (smtplib)

Или из скетча — вывод в консоль через функцию print() :
import smtplib print ( help (smtplib))

  • Gmail — https://support.google.com/mail/answer/7126229?hl=ru
  • Mail.ru — https://help.mail.ru/mail-help/mailer/popsmtp
  • Yandex — https://yandex.ru/support/mail-new/mail-clients.html

Для упрощения работы с письмами понадобится пакет email . Он позволяет работать с сообщениями электронной почты как с отдельными объектами. Пакет содержит также подклассы, описывающие различные MIME-типы. Для работы понадобятся 2 из них — MIMEMultipart и MIMEText :

Как отправить сообщение на почту с помощью Python | Email рассылка | Python send Gmail

import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText

Общий шаблон отправки сообщения выглядит так:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

Если необходимо добавить HTML-фрагмент, нужно присоединить к объекту msg ещё один подкласс:

Фрагмент HTML-кода
msg.attach(MIMEText(html, ‘html’ , ‘utf-8’ )) # Добавляем в сообщение HTML-фрагмент

server = smtplib.SMTP( ‘smtp-server’ , 587) # Создаем объект SMTP server.set_debuglevel( True ) # Включаем режим отладки — если отчет не нужен, строку можно закомментировать server.starttls() # Начинаем шифрованный обмен по TLS server.login(addr_from, password) # Получаем доступ server.send_message(msg) # Отправляем сообщение server.quit() # Выходим

В случае проблем с кодировкой, для тех полей, которым это необходимо, её необходимо указывать явно:

msg.attach(MIMEText(body, ‘html’ , ‘utf-8’ )) # или msg[ ‘Subject’ ] = Header( ‘Тема сообщения’ , ‘utf-8’ )

При включении режима отладки server.set_debuglevel(True) вся информация о процессе будет выводиться в консоль оболочки Shell. Это скажется на производительности, особенно в случаях вложения в отправление файлов.
При наличии вложений, использовать отладку server.set_debuglevel(True) не рекомендуется!

По такому же принципу к сообщению добавляются файлы — создаются экземпляры соответствующих подклассов и присоединяются к объекту msg . Код для включения различных типов файлов представлен ниже. Также необходимо импортировать дополнительные MIME-типы, энкодеры и библиотеки:

Читайте также:
Программа роды в радость отзывы

Программы на Python | Как отправить письмо с вложением на почту с помощью Python | Email рассылка

import mimetypes # Импорт класса для обработки неизвестных MIME-типов, базирующихся на расширении файла from email import encoders # Импортируем энкодер from email.mime.base import MIMEBase # Общий тип from email.mime.text import MIMEText # Текст/HTML from email.mime.image import MIMEImage # Изображения from email.mime.audio import MIMEAudio # Аудио # . filepath= «full_file_path_with_filename» # Имя файла в абсолютном или относительном формате filename = os.path.basename(filepath) # Только имя файла if os.path.isfile(filepath): # Если файл существует ctype, encoding = mimetypes.guess_type(filepath) # Определяем тип файла на основе его расширения if ctype is None or encoding is not None : # Если тип файла не определяется ctype = ‘application/octet-stream’ # Будем использовать общий тип maintype, subtype = ctype.split( ‘/’ , 1) # Получаем тип и подтип if maintype == ‘text’ : # Если текстовый файл with open (filepath) as fp: # Открываем файл для чтения file = MIMEText(fp.read(), _subtype=subtype) # Используем тип MIMEText fp.close() # После использования файл обязательно нужно закрыть elif maintype == ‘image’ : # Если изображение with open (filepath, ‘rb’ ) as fp: file = MIMEImage(fp.read(), _subtype=subtype) fp.close() elif maintype == ‘audio’ : # Если аудио with open (filepath, ‘rb’ ) as fp: file = MIMEAudio(fp.read(), _subtype=subtype) fp.close() else : # Неизвестный тип файла with open (filepath, ‘rb’ ) as fp: file = MIMEBase(maintype, subtype) # Используем общий MIME-тип file.set_payload(fp.read()) # Добавляем содержимое общего типа (полезную нагрузку) fp.close() encoders.encode_base64(file) # Содержимое должно кодироваться как Base64 file.add_header( ‘Content-Disposition’ , ‘attachment’ , filename=filename) # Добавляем заголовки msg.attach(file) # Присоединяем файл к сообщению

После вынесения функционала отправки сообщения в отдельную функцию, полный код с примером использования будет выглядеть так:

Источник: codius.ru

Как я могу отправить программу на Python (включая библиотеки) другу?

Я хочу отправить программу, которую я сделал моему другу, но проблема в том, что он не будет работать на его компьютере, потому что у него нет всех установленных библиотек. Например:

#! /usr/bin/env python2.7 from PyQt4.QtCore import * from PyQt4.QtGui import * from PyQt4.QtWebKit import * from bs4 import BeautifulSoup as bs import sys
как я могу отправить ему все необходимые библиотеки? надеюсь, мой вопрос ясен.
Vor 10 дек. 2012, в 18:04
Поделиться

Является ли ваш друг разработчиком, и вы хотите убедиться, что он может легко получить все библиотеки / пакеты, или вы просто хотите, чтобы он запускал ваше приложение?

YXD 10 дек. 2012, в 16:35
он разработчик, и ему нужен реальный код.
Vor 10 дек. 2012, в 16:36

Стандартный способ — использовать virtualenv , локально установить ваши пакеты с помощью pip , убедиться, что он работает, а затем использовать pip freeze для создания файла требований.

Читайте также:
Как в программе винрар поменять язык на русский

YXD 10 дек. 2012, в 16:37
Взгляните на pip-installer.org/en/latest/requirements.html
Wooble 10 дек. 2012, в 16:37

Показать ещё 2 комментария
Поделиться:
shared-libraries

1 ответ

Вы также можете попробовать «Python to EXE»:

http://www.py2exe.org/

Это упаковывает script, а компоненты — в пакет, который работает с включенным exe.

Если вы храбры, вы можете «сворачивать свои собственные», собирая ключевые DLL и EXE для python:

.MSVCR71.dll .OCI.dll .python.exe .python25.dll

И все необходимые файлы *.pyc и *.pyd в каталоге Python HOME Lib:

.Libcx_Oracle.pyc .Libcx_Oracle.pyd .Libencodingsaliases.pyc .Libglob.pyc .Libloggingconfig.pyc .Libos.pyc .Libpprint.pyc . excreta .

Принимая все файлы и любые ваши разработанные скрипты *.py и сворачивая их в соответствующие структуру каталогов и его подпитку для распространения.

Alan Penny 10 дек. 2012, в 22:09
Поделиться

Ещё вопросы

  • 1 Smack API выдает ошибку при локальном входе в настройку Tigase Server
  • 0 Phalcon datetime в модели запроса об ошибке
  • 0 Циклы ожидания не работают
  • 0 как вызвать переменную в родительской области видимости
  • 0 Параметры: где они объявлены?
  • 0 Как получить общее значение поля Scorecard.run
  • 0 Не могу найти загруженные файлы
  • 1 Используйте API расширения Chrome в компоненте Vue.js
  • 0 Зачем проверять, если переменная $ _GET пуста дважды?
  • 0 пытаясь заставить PHP разместить строку в файл
  • 0 Размещение текста над набором изображений с использованием jQuery
  • 0 Ошибка входа в Java
  • 0 JQuery Переключить текст на основе видимости элемента не ведет себя так, как ожидалось
  • 0 когда jQuery FadeOut элемент, какой атрибут изменяется в CSS?
  • 0 Почему я получаю сообщение об ошибке, когда пытаюсь получить высоту элемента из тега rel?
  • 1 Python: присвоение переменной с использованием «или» с лямбда-функциями? [Дубликат]
  • 0 PHP-файл с HTML в нем комментирует PHP
  • 1 Улучшение производительности метода Java
  • 1 Является ли View или ViewModel ответственным за преобразование данных из модели, представляемой в пользовательском интерфейсе?
  • 1 как заставить ckeditor перестать удалять пустые div
  • 0 Ошибка: недопустимое значение для атрибута x = «NaN» в angularJS nvd3-multi-bar-chart
  • 0 Как получить параметры в contollerFactory Zend 2?
  • 1 новый оператор в Java
  • 0 Завершающее регулярное выражение со специфическим символом при первом появлении
  • 0 jquery — проверка, щелкает ли элемент и не щелкаются ли подэлементы
  • 1 Десериализация Gson — вложенные классы, отображающие строчные поля
  • 0 jquery запомнить открытые пункты списка
  • 0 Синтаксическая ошибка при обновлении столбцов
  • 0 Добавление динамических радиокнопок в угловых
  • 0 Скомпилировать функцию MATLAB во что-то, что можно запустить на терминале linux без MATLAB?
  • 0 Как я могу создать новые экземпляры разных классов хорошим способом?
  • 1 Конфигурационные файлы, редактируемые после `npm run build`
  • 0 Добавление двух карт Google на одну страницу HTML
  • 1 Вложено для петли в терминале
  • 0 манипулирование таблицей html с использованием foreach в codeigniter
  • 0 C ++. как читать из файла и сопоставлять с вводом
  • 0 Ошибка MySQL 1215: невозможно добавить ограничение внешнего ключа для типа данных геометрии POINT
  • 0 Ошибка в AngularJS? Различные результаты на Chrome (43) и Firefox (38.0.5)
  • 0 Угловой файл JS скачать
  • 1 CasperJS не хватает памяти
  • 1 Как Date.prototype.getUTCFullYear () соответствует 2000 году?
  • 0 рекурсия через функцию производных классов шаблонного класса
  • 1 Фильтрация слов в элементах списка по текстовому полю
  • 0 добавить пользовательскую директиву от контроллера
  • 0 Ошибка Facebook и Codeigniter T_OBJECT_OPERATOR
  • 0 Чтобы получить экземпляр li с выбранным значением в его div, используя JQuery
  • 0 Центрировать элемент Div на странице?
  • 1 как посчитать появление группового результата в Pandas
  • 1 Как отобразить изображение с помощью imageurl в C #
  • 1 Сохранение файлового объекта с помощью matplotlib savefig, создание tar-файла из нескольких рисунков SVG
Читайте также:
Программа для повторяющихся действий

Источник: overcoder.net

Как отправить программу на python

Как я могу отправить программу Python (включая библиотеки) другу?

Я хочу отправить программу, которую я сделал моему другу, но проблема в том, что он не будет работать на его компьютере, потому что у него нет всех установленных библиотек.
Например:

как я могу отправить ему все необходимые библиотеки?
надеюсь, мой вопрос ясен.

Вы также можете попробовать «Python to EXE»:

Это упаковывает script, а компоненты — в пакет, который работает с включенным exe.

Если вы храбры, вы можете «сворачивать свои собственные», собирая ключевые DLL и EXE для python:

И все необходимые файлы *.pyc и *.pyd в каталоге Python HOME Lib:

Принимая все файлы и любые ваши разработанные скрипты *.py и сворачивая их в соответствующие
структуру каталогов и его подпитку для распространения.

Как перенести программу? [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме.

Закрыт 5 лет назад .

Столкнулся с тем, что нет подробной информации про то, как передать написанную программу пользователю. Пишу на Python 3 и получаю файл .py , из личных соображений понимаю что должен каким-то образом передать пользователю все модули которые подключал и он должен как-то запустить программу)

Пожалуйста, перечислите все возможные варианты, их плюсы и минусы и для каких OC они подходят, а так же если я использую PyQt добавляются ещё какие-то способы переноса или их становится меньше?

Похожие публикации:

  1. Mysql как посмотреть связи между таблицами
  2. Openoffice writer что это за программа
  3. Как считать программу с микроконтроллера
  4. 124 движения как слоумо

Источник: gshimki.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru