اصنع منبه لرسائل البريد الإلكتروني باستخدام الراسبيري باي

مبتدئ

image_pdf

الكود البرمجي

ستشاهد في قائمة Programming وجود برنامج جديد وهو Python 3 (IDLE) انقر عليه.

التحكم بالمصابيح

 من قائمة File اختر  New File.

انسخ الكود لنظام منبه لرسائل البريد الإلكتروني والصقه بالملف الفارغ لكن هناك أمور مهمة عليك العمل بها قبل رفع الكود البرنامجي إلى الراسبيري باي.

import time
import board
from imapclient import IMAPClient
from digitalio import DigitalInOut, Direction HOSTNAME = 'imap.gmail.com' MAILBOX = 'Inbox' MAIL_CHECK_FREQ = 10 # check mail every 10 seconds # The following three variables must be customized for this # script to work USERNAME = 'Your Email' PASSWORD = 'Your Passsword' NEWMAIL_OFFSET = 0 # setup Pi pins as output for LEDs green_led = DigitalInOut(board.D18) red_led = DigitalInOut(board.D23) green_led.direction = Direction.OUTPUT red_led.direction = Direction.OUTPUT def mail_check(): # login to mailserver server = IMAPClient(HOSTNAME, use_uid=True, ssl=True) server.login(USERNAME, PASSWORD) # select our MAILBOX and looked for unread messages unseen = server.folder_status(MAILBOX, ['UNSEEN']) # number of unread messages # print to console to determine NEWMAIL_OFFSET newmail_count = (unseen[b'UNSEEN']) print('%d unseen messages' % newmail_count) if newmail_count > NEWMAIL_OFFSET: green_led.value = True red_led.value = False else: green_led.value = False red_led.value = True time.sleep(MAIL_CHECK_FREQ) while True: mail_check()
شرح الكود البرمجي

هنا نستعدي المكتبات الضرورية لنظام منبه لرسائل البريد الإلكتروني مثل time و board و imapclient و DigitalInOut, Direction.

import time
import board
from imapclient import IMAPClient
from digitalio import DigitalInOut, Direction

في HOSTNAME يتم تعريف اسم المستضيف جميل Gmail.

وفي MAILBOX يتم توضيح أي المجلدات التي سيتم فحصها هنا سنستخدم المجلد Inbox.

HOSTNAME = 'imap.gmail.com'
MAILBOX = 'Inbox'

المتغير NEWMAIL_OFFSET يحمل القيمة 0 وستستخدم هذه القيمة فيما بعد لمقارنة عدد رسائل البريد الالكتروني.

NEWMAIL_OFFSET = 0

في المتغير MAIL_CHECK_FREQ يتم تعيين المدة الزمنية التي سيتم بها فحص مجلد Inbox هنا سيتم فحصه كل ثانية للتأكد من وجود رسائل جديدة أم لا.

MAIL_CHECK_FREQ = 1 # check mail every 1 second

في المتغير USERNAME ضع الايميل الخاص بك.

وفي المتغير PASSWORD ضع كلمة السر.

USERNAME = 'Your Email'
PASSWORD = 'Your Passsword'

في المتغير green_led يتم تعريف المدخل المستخدم لربط الثنائي المشع للضوء الأخضر وهو GPIO 18.

 وفي المتغير red_led يتم تعريف المدخل المستخدم لربط الثنائي المشع للضوء الأحمر وهو GPIO 23.

green_led = DigitalInOut(board.D18)
red_led = DigitalInOut(board.D23)

في الدالة def mail_check سيتم أخذ الصلاحية لتسجيل الدخول للبريد الالكتروني بناء على البيانات الموجودة في المتغيرين USERNAME  و PASSWORD.

def mail_check():
# login to mailserver
server = IMAPClient(HOSTNAME, use_uid=True, ssl=True)
server.login(USERNAME, PASSWORD)

في المتغير unseen يتم فحص مجلد Inbox.

unseen = server.folder_status(MAILBOX, ['UNSEEN'])

في المتغير newmail_count يتم حساب عدد الرسائل التي لم تقرأ بعد.

سينطبع على الشاشة unseen messages وبجانبها عدد الرسائل التي لم تقرأ وسيتم تحديث المتغير كل ثانية.

newmail_count = (unseen[b'UNSEEN'])
print('%d unseen messages' % newmail_count)

raspberry-pi-e-mail-notifier-using-leds

إذا كان عدد الرسائل المرسلة المخزنة في NEWMAIL_OFFSET أكبر من القيمة المعينة في المتغير NEWMAIL_OFFSET سيضيء الثنائي المشع للضوء الأخضر ليفيد الأفراد بوجود رسائل جديدة.

وإذا كان أقل سيضيء الثنائي المشع للضوء الأحمر وهكذا يستمر النظام.

if newmail_count > NEWMAIL_OFFSET:
green_led.value = True
red_led.value = False
else:
green_led.value = False
red_led.value = True

time.sleep(MAIL_CHECK_FREQ)

يمكنك رفع الكود البرمجي واختبار صحة الخطوات.

لا تنس فصل وحدة مزود الطاقة بعد الانتهاء من استخدام نظام منبه لرسائل البريد الإلكتروني.

 

X
Product added to the cart