خواندن اینباکس gmail در php

  • آپدیت شده در تاریخ

خواندن اینباکس gmail در php

جی میل (Gmail) پدر تمام سرویس های ایمیل است. با ارائه فضای ذخیره سازی نامحدود و اینترفیس استثنایی, یک طوفانی رو به پا کرده است.

حالا چقدر عالی خواهد بود که بتوانیم یک رابط کاربری سفارشی برای سرویس جی میل بسازیم.

در آموزش خواندن اینباکس gmail در php قصد داریم به شما نحوه ساختن اینباکس برای ایمیل های خود از جی میل را نشان بدیم.

می توانیم این کد رو توسعه بدیم و قابلیت های بیشتری را به عنوان تکمیل کننده به این وب کلاینت ایمیل خود با استفاده از PHP اضافه کنیم.

 

دسترسی به سرور ایمیل و خواندن پیام های آن با استفاده از پروتکل هایی مانند IMAP , POP قابل انجام است. این پیام های خوانده شده از سرور ایمیل (mail server) می تواند برای لیست کردن ایمیل ها در یک صندق پستی ایمیل, ساخت ناتیفکیشن برای پیام های خوانده نشده و خیلی از اهداف دیگر مورد استفاده شود.

در این کد, ما از اسکتنشن IMAP در PHP برای اتصال به سرور جی میل و واکشی (fetch) داده های ایمیل استفاده می کنیم.

کانکشن موردنظر ما با ارسال درخواست دسترسی توسط اطلاعاتی مثل هاست , یوزرنیم , پسورد و غیره انجام می شود.

با داشتن این کانکشن, در مثال خواندن اینباکس gmail در php , یک درخواست جستجو با کلیدواژه بر اساس آرایه ای از پیام های برگشت داده شده توسط جیمیل, ارسال می کنیم.

برای ارتقا اپلیکیشن خودمان به یک نسخه تکامل یافته از وب کلاینت جیمیل با PHP , نیاز داریم که از ارسال ایمیل با GMAIL SMTP نیز استفاده کنید.

 

پیکربندی IMAP در محیط PHP و Gmail

زبان PHP شامل توابع از پیش ساخته imap_* برای اتصال و دریافت دسترسی به سرور ایمیل خارجی دارد.

قبل از اجرای توابع imap_* در PHP , اطمینان حاصل کنید که IMAP نصب و فعال است. تابع phpinfo() اطلاعاتی از کتابخانه, پلاگین های نصب شده و غیره را به شما می دهد.

برای اجرا مثال خواندن اینباکس gmail در php با IMAP بر روی محیط لوکال, از مراحل زیر برای نصب و فعال سازی IMAP استفاده کنید.اسکرین شات نهایی برای فعال کردن دسترسی IMAP در سمت gmail است.

  1. کتابخانه IMAP در PHP را نصب کنید. اگر قبلا نصب بود, این مرحله را نادیده بگیرید. (بطور پیش فرض نصب است)
  2. اکستنشن کتابخانه IMAP را از طریق فایل پیکربندی php (php.ini) با حذف ; در ابتدای خط, فعال کنید
  3. مقدار محدودیت برای max_execution_time را در فایل ini افزایش بدید
  4. برای اعمال تغییرات apache یا وب سرور را ریستارت کنید.
  5. به جیمیل رفته و از طریق settings > forwarding and POP/IMAP دسترسی IMAP Access را فعال کنید.

خواندن اینباکس gmail در php

مثال: خواندن لیست ایمیل ها از جیمیل (خواندن اینباکس gmail در php با IMAP)

کد PHP زیر برای ساختن اتصال به سرور جیمیل برای دریافت داده های ایمیل استفاده شده است.

تابع imap_open() برای ساخت آبجکت کانکشن با ارسال host , username, passwordاستفاده شده است.

با متغییر $connection , آرایه ای از ایمیل ها بر اساس شاخص جستجو برگشت داده می شود.

با استفاده از آبجکت آرایه ای $emailData و تکرار در یک حلقه foreach یک خلاصه ای از ایمیل و محتوای آن را دریافت می کنیم.

این پیام های دریافتی از جیمیل در یک حالت جدول مانند نمایش داده می شود.

خروجی : خواندن اینباکس gmail در php با IMAP

اسکرین شات زیر به شما خروجی دریافت ایمیل های اینباکس جیمیل با استفاده از PHP را نمایش می دهد.

خواندن اینباکس gmail در php

امیدوارم از آموزش خواندن اینباکس gmail در php نهایت استفاده را برده باشید .

برای دانلود سورس کد کامل این آموزش از باکس دانلود استفاده کنید.

هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .

موفق و پیروز باشید

حسن شفیعی توسعه دهنده وب و موبایل مدیر سایت علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم. اگر نیاز به برنامه نویس برای انجام پروژه و نوشتن اسکریپت های سمت وب, اپلیکیشن های اندروید و ios, پیدا کردن راه حل توسعه و غیره داشتید حتما از طریق تماس با ما/ واتساپ/ تلگرام بهم پیام بدید. برایتهیه هاست مطمین و پرسرعت کلیک کنید
مطالب زیر را حتما بخوانید
دیدگاه کاربران (۱۸)

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  1. حسین ۵ آذر ۱۴۰۰

    سلام و درود
    از من خواسته شده تا امکانی رو به سایت اضافه کنم تا هر کاربری بتونه ایمیل های خودشو در پنل خودش از جیمیل بخونه و به هر کاربری خواست ایمیل ارسال کنه من اول خواستم از این اموزش شما استفاده کنم اما بعد متوجه شدم که این راهش نیست و باید ازapi gmail برای این کار استفاده کنم
    آیا این قضیه رو درست متوجه شدم که باید ازapi gmail برای این کار استفاده کنم؟ کاش یه اموزش هم در این زمینه داشتید خیلی خیلی به این اموزش نیاز دارم
    به نظرتون باید چیکار کنم؟

    پاسخ
    1. حسن شفیعی ۶ آذر ۱۴۰۰

      سلام.
      از این آموزش استفاده کنید جواب میده

      پاسخ
  2. vahed ۳۰ آبان ۱۴۰۰

    با سلام بنده طبق مراحل گفته شده پیش رفتم اما پس از اجرا با خطای زیر مواجه میشه
    Cannot connect to Gmail: Certificate failure for imap.gmail.com: self signed certificate: /OU=No SNI provided; please fix your client./CN=invalid2.invalid

    پاسخ
    1. حسن شفیعی ۱ آذر ۱۴۰۰

      سلام.
      اطلاعات احراز هویت رو بدرستی وارد نکردید

      پاسخ
      1. vahed ۱ آذر ۱۴۰۰

        خیلی ممنون از پاسخگوییتون
        اطلاعات مگر شامل ایمیل و رمز عبور نیست؟
        بعد از اجرا بلافاصله از جیمیل پیام هشدار میاد و میگه که این ورود جدید رو مسدود کرد

        پاسخ
      2. حسن شفیعی ۳ آذر ۱۴۰۰

        داخل جیمیل باید بهش دسترسی رو بدید

        پاسخ
  3. mohsen ۲۰ اسفند ۱۳۹۹

    با سلام من این راه اندازی کردم و به درستی ایمیل دریافت می کردم ولی بعد چند روز دستور imap هیچ واکنشی نداره ، البته من زمان درخواست رو هر ۳۰ ثانیه گذاشتم
    احتمال داره که بن شده باشم؟
    مقدار درخواست در هر ساعت چقدره؟

    پاسخ
    1. حسن شفیعی ۲۰ اسفند ۱۳۹۹

      سلام.
      بله احتمال بن یا محدود شدن وجود داره. در خصوص لیمیت اطلاعی ندارم باید توضیحات خود گوگل رو مطالعه کنید :
      https://support.google.com/a/answer/1071518?hl=en

      پاسخ
  4. محمدرضا ۲۸ اسفند ۱۳۹۸

    سلام. من سایت دارم و واقع از شما چیز های خوبی یاد گرفتم. یک ایمیل درست کردم به نام info@email.ir که میخواستم بدونم میشه این ایمیل را هم ذخیره کرد؟
    چون خیلی سخته هی هردفعه بریم توی webmail لاگین کنم

    پاسخ
    1. حسن شفیعی ۲۸ اسفند ۱۳۹۸

      سلام. خیلی خوشحالیم که مفید واقع شده.
      متاسفانه این مورد رو تست نکردم ولی احتمالا اگر پورت از سمت هاست (اشتراکی ها برای امنیت بعضی مواقع می بندن) بسته نشده باشه میتونید استفاده کنید اگر جواب نداد باید جستجو کنید یا اسکریپت آماده را تست کنید که این مورد هم باید داخل گیت هاب یه تحقیق انجام بدید.
      موفق باشید

      پاسخ
  5. hossein ۸ تیر ۱۳۹۸

    دست گل شما درد نکنه . درست شد. یه دنیا ممنون. موفق باشین.

    پاسخ
    1. حسن شفیعی ۸ تیر ۱۳۹۸

      خوشحالیم که مشکل رفع شد. موفق و پیروز باشید

      پاسخ
  6. hossein ۸ تیر ۱۳۹۸

    من بدون هیچ مشکلی به سرور جی میل وصل میشم ولی مشکل اینه که هیچ ایملی رو برام نمی خونه وقتی مقدار متغییر $emailData رو چاپ کردم دیدم مقدار خالی هست.تو اینباکس جی میلم هم ایمل دارم. ممنون میشم راهنمایی کنید.

    پاسخ
    1. حسن شفیعی ۸ تیر ۱۳۹۸

      اول دقت کنید که حتما پیکربندی IMAP رو به درستی پیش رفته و انجام دادید
      در خط ۱۵ فایل php مورد نظر به جای
      $emailData = imap_search($connection, ‘SUBJECT “Article “‘);
      از
      $emailData = imap_search($inbox,’ALL’);
      استفاده کنید تا تمام ایمیل ها خوانده بشه چون در تابع قبلی ما یه شرط سرچ داشتیم که عنوان های خاص رو بر می گردوند ولی در این مقدار جدید که گفته شد جایگزین کنید همه اینباکس خوانده میشه

      پاسخ
  7. hossein ۷ تیر ۱۳۹۸

    با سلام و احترام. برای خواندن اینباکس جی میل با پی اچ پی در تابع imap_open پارامتر اولشو چنین عبارتی وارد کردین ‘{imap.gmail.com:993/imap/ssl}INBOX’. آیا ما باید این پارامتر رو تغییر بدیم و مقدار دیگری جاش وارد کنیم. لطفا راهنمایی کنید. ممنون و تشکر.

    پاسخ
    1. حسن شفیعی ۷ تیر ۱۳۹۸

      سلام. همانطور که از مقدارش مشخص است نباید تغییر بدید چرا که برای اتصال به سرور جی میل نیاز است.
      موفق باشید.

      پاسخ
  8. محمد ۸ آبان ۱۳۹۷

    سلام من همه مراحل رو درست رفتم ولی این پیغام میده Cannot connect to Gmail: Too many login failures
    حتی دریافتشو محدود کردم به تاریخ یک روز گفتم شاید بخاطر بودن زیاد ایمیل هاست ولی باز این پیغام داد میشه راهنمائی کنید

    پاسخ
    1. حسن شفیعی ۸ آبان ۱۳۹۷

      سلام. اسکریپت رو داخل یک هاست تست کنید
      موفق باشید.

      پاسخ
دوره های آموزشی