По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
В этой статье посмотрим как можно отправлять электронные письма при помощи Python. Есть и более простые способы это сделать, но мне больше подошел именно следующий вариант. Итак, вот как это выглядит: у вас есть имена и адреса электронной почты некоторой группы контактов. И вы хотите отправить каждому из них письмо, добавив в начале сообщения «Уважаемый [имя]». Для простоты вы можете хранить всю контактную информацию просто в файле, а не в базе данных. Также вы можете сохранить в файл шаблон сообщения, которое вы хотите отправить. Модуль smtplib в Python – это практически все, что вам понадобиться для отправки простых электронных писем без заполнения темы письма или какой-либо еще дополнительной информации. Но, конечно, для настоящих писем вам необходимо заполнить строку темы письма и другую информацию, и, возможно, даже прикрепить изображения или какие-то другие вложения. Вот тут и приходит на помощь пакет email в Python. Имейте в виду, что нельзя отправить сообщение через электронную почту, используя только этот пакет. Вам необходимо совместить email и smtplib. Обязательно ознакомьтесь с подробной официальной документацией для каждого из этих пакетов. Вот четыре основных шага для отправки электронных писем с помощью Python: Настройте SMTP-сервер и войдите в свою учетную запись. Создайте объект сообщения MIMEMultipart и загрузите его с соответствующими заголовками для полей From (От), To (Кому) и Subject (Тема). Добавьте тело сообщения. Отправьте сообщение с помощью объекта SMTP-сервера. А теперь давайте рассмотрим весь процесс. Допустим, что у вас есть файл контактов mycontacts.txt, который выглядит вот так: user@computer ~ $ cat mycontacts.txt john johndoe@example.com katie katie2016@example.com Каждая строка соответствует одному контакту. В каждой строке пишется имя, а за ним следует адрес электронной почты. У меня все сохранено в нижнем регистре. Я оставлю преобразования любых полей или некоторых начальных букв в верхний регистр логике программирования, если это будет необходимо. В Python это все довольно просто. Далее у нас есть файл с шаблоном сообщения message.txt. user@computer ~ $ cat message.txt Dear ${PERSON_NAME}, This is a test message. Have a great weekend! Yours Truly Обратили внимание на ${PERSON_NAME}? Это шаблонная строка в Python. Шаблонные строки можно легко заменить другими строками; в данном примере ${PERSON_NAME} будет заменено настоящим именем человека (вы скоро это увидите). А теперь давайте перейдем к коду Python. Для начала нам необходимо прочитать контакты из файла mycontacts.txt. Мы, кстати, можем обобщить это в отдельную функцию. # Function to read the contacts from a given contact file and return a # list of names and email addresses def get_contacts(filename): names = [] emails = [] with open(filename, mode='r', encoding='utf-8') as contacts_file: for a_contact in contacts_file: names.append(a_contact.split()[0]) emails.append(a_contact.split()[1]) return names, emails Функция get_contacts() в качестве аргумента принимает имя файла. Она откроет этот файл, прочитает каждую строку (то есть каждый контакт), разделит их на имя и адрес электронной почты, а затем добавит их в два отдельных списка. И, наконец, в качестве результата работы функции возвращаются эти два списка. Также нам нужна функция для того, чтобы прочитать шаблон сообщения (такой как message.txt) и вернуть объект типа Template, созданный из его содержимого. from string import Template def read_template(filename): with open(filename, 'r', encoding='utf-8') as template_file: template_file_content = template_file.read() return Template(template_file_content) Как и предыдущая функция, в качестве аргумента она принимает имя файла. Для того, чтобы отправить письмо, вам необходимо использовать протокол SMTP (Simple Mail Transfer Protocol – протокол простого обмена электронной почтой). Как уже упоминалось ранее, у Python есть необходимые для этого библиотеки. # import the smtplib module. It should be included in Python by default import smtplib # set up the SMTP server s = smtplib.SMTP(host='your_host_address_here', port=your_port_here) s.starttls() s.login(MY_ADDRESS, PASSWORD) В приведенном выше фрагменте кода вы импортируете smtplib, а затем создаете экземпляр SMTP, который формирует SMTP-соединение. В качестве параметра он принимает адрес хоста и номер порта, оба эти параметра полностью зависят от настроек SMTP вашего поставщика услуг электронной почты. Например, в случае Outlook строка под номером 4 будет выглядеть вот так: s = smtplib.SMTP(host='smtp-mail.outlook.com', port=587) Для того, чтобы все работало, вам необходимо использовать адрес хоста и номер порта конкретно вашего поставщика услуг электронной почты. MY_ADDRESS и PASSWORD – это две переменные, которые содержат полный адрес электронной почты и пароль от учетной записи, которую вы собираетесь использовать. А теперь самое время получить контактную информацию и шаблон сообщения, используя функции, которые мы определили ранее. names, emails = get_contacts('mycontacts.txt') # read contacts message_template = read_template('message.txt') А теперь давайте отправим отдельное письмо каждому из этих контактов. # import necessary packages from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText # For each contact, send the email: for name, email in zip(names, emails): msg = MIMEMultipart() # create a message # add in the actual person name to the message template message = message_template.substitute(PERSON_NAME=name.title()) # setup the parameters of the message msg['From']=MY_ADDRESS msg['To']=email msg['Subject']="This is TEST" # add in the message body msg.attach(MIMEText(message, 'plain')) # send the message via the server set up earlier. s.send_message(msg) del msg Для каждого name (имя) и email (адрес электронной почты) (из файла с контактами) вы создаете объект MIMEMultipart, настраиваете заголовки типов содержимого From (от), To (кому), Subject (тема) как словарь ключевых слов, а затем прикрепляете тело сообщения к объекту MIMEMultipart в виде обычного текста. Возможно, вам захочется прочитать документацию, чтобы узнать больше о других типах MIME, с которыми вы также можете поэкспериментировать. Также обратите внимание, что в строке 10 выше я заменяю ${PERSON_NAME} фактическим именем, которое было извлечено из файла с контактами с помощью механизма шаблонизации в Python. В данном конкретном примере я каждый раз удаляю объект MIMEMultipart и создаю его заново при каждой итерации цикла. Как только вы проделаете все это, то сможете отправить сообщение, используя простую удобную функцию send_message() объекта SMTP, который вы создали ранее. А вот и полный код: import smtplib from string import Template from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText MY_ADDRESS = 'my_address@example.comm' PASSWORD = 'mypassword' def get_contacts(filename): """ Return two lists names, emails containing names and email addresses read from a file specified by filename. """ names = [] emails = [] with open(filename, mode='r', encoding='utf-8') as contacts_file: for a_contact in contacts_file: names.append(a_contact.split()[0]) emails.append(a_contact.split()[1]) return names, emails def read_template(filename): """ Returns a Template object comprising the contents of the file specified by filename. """ with open(filename, 'r', encoding='utf-8') as template_file: template_file_content = template_file.read() return Template(template_file_content) def main(): names, emails = get_contacts('mycontacts.txt') # read contacts message_template = read_template('message.txt') # set up the SMTP server s = smtplib.SMTP(host='your_host_address_here', port=your_port_here) s.starttls() s.login(MY_ADDRESS, PASSWORD) # For each contact, send the email: for name, email in zip(names, emails): msg = MIMEMultipart() # create a message # add in the actual person name to the message template message = message_template.substitute(PERSON_NAME=name.title()) # Prints out the message body for our sake print(message) # setup the parameters of the message msg['From']=MY_ADDRESS msg['To']=email msg['Subject']="This is TEST" # add in the message body msg.attach(MIMEText(message, 'plain')) # send the message via the server set up earlier. s.send_message(msg) del msg # Terminate the SMTP session and close the connection s.quit() if __name__ == '__main__': main()
img
Всем привет! Думаю, что все уже знают как работает Voicemail. Но что, если мы хотим оставить одинаковое голосовое сообщение на несколько внутренних номеров? Не звонить же каждому и не проговаривать одно и то же по нескольку раз. Для решения этой задачи во FreePBX есть модуль Voicemail Blasting, о нём и поговорим. Все настройки будем делать во FreePBX 14 Обзор Модуль Voicemail Blasting позволяет отправить голосовое сообщение множеству пользователей одновременно. Для этого, средствами модуля, необходимо создать группу и присвоить ей номер, при звонке на который, включается стандартный функционал голосовой почты и запись голосового сообщения. Далее, нужно включить в неё внутренние номера, которым будет отправлено данное сообщение. По завершению записи, каждому участнику группы придёт одинаковая запись на голосовой почтовый ящик. Настройка Для настройки модуля с главной страницы необходимо перейти по следующему пути: Application → Voicemail Blasting. Перед нами откроется следующее окно: По умолчанию там ничего не будет. Для того, чтобы добавить новую группу – нажимаем Add VM Blast Group. Откроется окно с параметрами для настройки новой группы. Рассмотрим для чего нужно каждое поле данного модуля: VMBlast Number - Собственно тот самый номер группы, на который нужно будет позвонить, чтобы оставить групповое голосовое сообщение; Group Description - Описание для данной группы; Audio Label - Звуковой сигнал, который будет проигран тому, кто позвонит на данный номер. Можно выбрать два варианта: Read Group Number - При выборе данного варианта, пользователь услышит номер данной группы, что является неким подтверждением того, что номер группы был набран верно; Beep Only – No Confirmation - При выборе данного варианта, пользователь услышит в трубке стандартный звуковой сигнал, а затем сразу начнётся запись голосового сообщения; Optional Password - Данная опция позволяет задать пароль для использования данной группы, что помогает защититься от неправильного набора; Voicemail Box List - Данная опция открывает список внутренних номеров с активированным функционалом голосовой почты, который можно внести в группу. Удерживайте кнопку SHIFT для того, чтобы добавить сразу несколько номеров; Важно! Чтобы внутренний номер появился в данном списке – убедитесь, что у него активирован функционал голосовой почты. Для этого в настройках Extensions выберите нужный номер, откройте вкладку Voicemail и проверьте, что напротив строки Enabled стоит галочка Yes, как показано на рисунке. Default VMBlast Group - Если данная функция активирована, то можно добавлять участников в эту группу из модулей Extensions и Users; В примере, который приведён ниже, мы создали группу голосовой почты с номером 2018. При звонке на данный номер, звонящему будет озвучен номер группы, который он набрал, а затем предложат записать голосовое сообщение, без пароля. После того, как сообщение будет записано, оно моментально будет отправлено на внутренние номера 128, 188 и 194. Пользователи данных внутренних номеров смогут прослушать это сообщение, набрав стандартный feature code - *97. По окончанию настройки не забываем нажимать Submit и Apply Config
img
Крупные компании, такие как Cisco, Juniper, Arista и HP, давно конкурируют на рынке высокоскоростных корпоративных сетей для дата-центров. Данные сети предназначены для обработки трафика, генерируемого высокоинтеллектуальными приложениями, устройствами Интернета вещей (IoT) и видео. Высокоскоростные сети Высокоскоростными сетями Ethernet уже никого не удивить, поскольку мощность серверов центров обработки данных увеличивается многократно ежегодно. Это связано с тем, что сейчас необходимо иметь оборудование, которое способно обрабатывать тонны трафика от новых, более интеллектуальных приложений, устройств Интернета вещей, видео и т.д. Потребность в большой скорости передачи данных от дата-центров обусловлена многими факторами – быстрым и большим темпом роста гипермасштабируемых сетей от таких игроков, как Google, Amazon, Яндекс, Facebook, а также ценой/производительностью сетей, приложений, работающих на скоростях 100G. За рубежом провели исследование, объясняющее то, почему требуются высокоскоростные сети. Исследователи, а именно компания PwC, выяснили, что рабочие нагрузки становятся менее монолитными, поскольку компании отходят от традиционного корпоративного центра обработки данных. Они становятся более распределенными, более мобильными и больше похожи на рабочие нагрузки, обычно связанные с гипермасштабируемыми средами. Почти все основные рабочие нагрузки будут переходить из локального в публичное хранилище (облако) в ближайшие три года. Приложения будут более зависимы от сети, и сеть станет более уязвимой, учитывая распределение/динамичность рабочих нагрузок. В связи с этим возникает потребность в большем количестве высокоскоростных портов, которые смогут обработать большой объем данных, поступающих из различных сетей. А этот факт является движущей силой для модернизации магистральных линий. Так же потребность в высокоскоростных сетях связано в значительной степени с эволюцией сетевых карт на серверах. Большинство серверов работали с сетевыми картами, обрабатывающие данные на скоростях от 1G до 10G. Современные сервера имеют сетевые карты, поддерживающие скорости от 10G до 100G и подключены к коммутаторам top-of-rack. В перспективе разрабатывается возможность увеличения скорости до 400G с использованием коммутаторов top-of-rack. Переход локальных сетей от 10G до 100G Цены на оптоволокно сейчас резко снизились. Сейчас стоимость кабеля 25G сравнялась с ценой провода 10G. Аналогично сравнялись цены оптики 40G и 100G. Исходя из этого целесообразно использовать кабель, поддерживающий скорости в 25G и 100G. Использование оптоволокна 100G позволяет кратно уменьшить количество кабелей, что в свою очередь приводит к экономии пространства серверной и экономии средств. Дата-центры компаний Cisco, Juniper, Arista, HPE и Huawei Cisco, Juniper, Arista, HP и Huawei- это лишь небольшая часть поставщиков, которые активно используют возможности high-speed, а также традиционных скоростных сетей Ethernet. Juniper имеет линейку коммутатор поддерживающих более 48 портов Ethernet 25G или 100G. Но интерфейсы на 100G- это только начало для высокоскоростного Ethernet. Более высокие скорости – 100G, 200G, 400G и 800G – будут внедрены в ближайшие 5 лет.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59