ارسال ایمیل با php

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

ارسال ایمیل با php

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

اساسا تابع mail() در php برای ارسال ایمیل توسط اسکریپت استفاده می شود زمانی که شما با تابع mail()  ایمیلی را ارسال می کنید ایمیل از طریق وب سرور سایت ارسال می شود.

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

استفاده از SMTP سرور ، بهترین روش پیشنهادی برای ارسال ایمیل با php است.

زمانی که یک ایمیل از طریق SMTP ارسال می شود ، ایمیل به جای وب سرور از میل سرور (mail server) ارسال می شود که باعث درصد موفقیت ارسال ایمیل با php و اسپم نشدن ایمیل می شود.

در واقع با ارسال ایمیل با SMTP در php می توان این تضمین را بوجود آورد که ایمیل با موفقیت در پوشه inbox کاربر قرار گیرد

برای کپی صحیح و کامل کدها ، دابل کلیک کرده تا وارد محیط سفید و کپی شوید در غیر اینصورت امکان دارد اجرای کدها با مشکل روبرو شود

کد ارسال ایمیل با php و کتابخانه PHPMailer

دانلود کتابخانه PHPMailer

یکی از راحترین راه های ارسال ایمیل با php  و SMTP استفاده از کتابخانه PHPMailer  است . کانفیگ های مختلف PHPMailer  به شما اجازه ارسال انواع ایمیل های متنی , HTML  و همچنین پیوست فایل را می دهد .

در این آموزش خواهیم دید چگونه یک ایمیل از نوع محتوای HTML  را با SMTP  در PHP  می شود ارسال کرد .از مثال زیر می توانید برای ارسال ایمیل با php از طریق کتابخانه PHPMailer استفاده کنید

ارسال ایمیل HTML در php  با PHPMailer

با تابع isHTML(true) نوع فرمت ایمیل را ست میکنیم

ارسال فایل در ایمیل

با متد addAttachment() در کلاس PHPMailer یک فایل ضمیمه را پیوست (آدرس دهی) کنید . همچنین میتوانید چندین فایل مختلف را با تکرار addAttachment() اضافه کنید

ارسال انبوه ایمیل

با اضافه کردین چندین باره addAddress() میتوانید یک ایمیل را به چند نفر همزمان ارسال کنید

ارسال ایمیل با SMTP جی میل (Gmail)

اگر قصد ارسال ایمیل با SMTP GMAIL  دارید باید چندین تغییر در تنظیمات اکانت جی میل خود انجام بدید .

  • وارد حساب گوگل خود در صفحه gmail.com  شوید
  • به قسمتMy Account  بروید بر روی Signing in to Google در Sign-in & security کلیک کنید
  • در بخش Password & sign-in method قابلیت  ۲-Step Verification. را غیرفعال کنید
  • در بخش Connected apps & sites قابلیت Allow less secure apps را فعال کنید

اوکی تمام شد ! حالا می توانید با استفاده از SMTP  سرور Gmail با اسکریپت php خود ایمیل ارسال کنید

حتما اول اسکریپت خود مشخصات اکانت (آدرس ایمیل و پسورد )و SMTP host  و پورت را وارد کنید

ارسال ایمیل با php در اپلیکیشن ها تحت وب بسیار کاربردی و مهم است که برای اطلاع رسانی و عملیات مختلف کاربری ، ایمیل مارکتینگ فروش محصولات و .. استفاده می شود

موفق باشید.

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

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

  1. مسعود ۶ فروردین ۱۴۰۱

    سلام
    من ازphpmailer روی استفاده کردم روی حالت لوکال جواب میده ولی روی هاست جواب نمیده
    تیکت زدم یکم راهنمایی کردن اما متوجه نشدم چطور باید tlsخودکار رو غیر فعال کنم
    شما میتونین راهنمایی کنین ؟

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

      سلام.
      برای غیرفعال سازی tls کافیه داخل این کد یا کدهای خودتون جایی‌که متغیرهای ست کردن پسورد ک این موارد قرار‌گرفتن این کدها رو هم اضافه کنید

      $mail->SMTPSecure = false;
      $mail->SMTPAutoTLS = false

      پاسخ
  2. محمود رنجبر ۱۰ تیر ۱۴۰۰

    سلام مهندس شفیعی من مشکل اجرا نشدن رو هاست رو حل کردم که مشکل یکی از دوستان دیگه هم بود
    فقط راجع به راست چین کردن من کدهای phpmailer رو وسط دو تا تگ body که قرار دادم و استایل میدم کار نمیکنه؟
    body style=”text-align:right”
    کدهای ایمیل

    /body
    /html
    اینجوری درسته من اینجوری نوشتم ؟

    پاسخ
  3. محمود رنجبر ۱۰ تیر ۱۴۰۰

    سلام حسن جان با outlook روی هست هم درست کار میکنه ولی گوگل مشکل داره

    پاسخ
  4. محمود ۱۰ تیر ۱۴۰۰

    علت چیه مهندس شفیعی راهنمایی کنید لطفا

    پاسخ
  5. محمود ۱۰ تیر ۱۴۰۰

    حسن جان css برای من کار نمیکنه؟
    تو لوکال ایمیل به درستی ارسال میشه ولی رو هاست واقعی یه پیغام میده راجع به احراز هویت میده من اون دسترسی دو مرحله ای رو هم خاموش کردم میشه تو چت به عکس ارور نگاه کنید راهنماییم کنید ؟ممنون میشم
    این دیگه آخرین سوالم بود با سپاس

    پاسخ
  6. محمود ۱۰ تیر ۱۴۰۰

    سلام مجدد مهندس شفیعی گل
    من فایل autoload رو دانلود کردم ایمیل درست دریافت میشه برای حروف فارسی utf8 رو ست کردم فقط برای راست چین کردن ایمیل دریافتی کدی تو اینترنت ندیدم میشه راهنمایی کنید چه کدی باید بزنم ؟

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

      سلام.
      از استایل css بصورت اینلاین استفاده کنید
      body style=”text-align:right; direction:rtl;”

      پاسخ
  7. محمود ۱۰ تیر ۱۴۰۰

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

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

      سلام بله

      پاسخ
  8. محمد ۲۳ بهمن ۱۳۹۹

    سلام من از گیت لایبرری و دانلود کردم ولی فایل PHPMailer/PHPMailerAutoload.php یا vendor/autoload.php پیدا نکردم ممنون میشم جواب بدید

    پاسخ
    1. حسن شفیعی ۲۳ بهمن ۱۳۹۹

      سلام. باید با کامپوزر ایجاد کنید
      https://netparadis.com/what-composer-in-php

      پاسخ
  9. رضا ۱۲ بهمن ۱۳۹۹

    require ‘PHPMailer/PHPMailerAutoload.php’
    سلام فایل اتولود در پوشه نیست چکار باید بکنم

    پاسخ
    1. حسن شفیعی ۱۲ بهمن ۱۳۹۹

      سلام.
      از اینجا دانلود کنید: https://github.com/PHPMailer/PHPMailer

      پاسخ
  10. محمد ۷ بهمن ۱۳۹۹

    سلام خسته نباشید
    ببخشید متاسفانه من از سورس استفاده کردم اما وقتی که تست می کنم هیچ پیغامی نمی دهد.
    نه میگه ایمیل ارسال شده و نه می گه ایمیل ارسال نشده است.
    چه باید کنم؟

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

      سلام.
      در این شرط تعریف شده که اگر ایمیل ارسال شد یا به هر دلیلی ارسال نشد پیام نمایش داده بشه
      if(!$mail->send()){
      echo ‘Message could not be sent.’;
      }else{
      echo ‘Message has been sent’;
      }
      ممکنه خطای fatal داشته باشید و نمایش خطا در هاست شما غیرفعال است که میتونید به هاستینگ اطلاع بدید و از این آموزش هم برای فعالسازی خطا میتونید استفاده کنید اگر هاست چیزی رو محدود نکرده باشه
      https://netparadis.com/php-errors/
      یا اینکه کنار فایل php فایل خطای error_log ایجاد میشه

      پاسخ
  11. فراز کثیری ۱۴ آبان ۱۳۹۹

    با سلام و خسته نباشید
    کدام کد ها رو باید تغییر بدم تا روی سایت خودم انجام گیرد ینی کد های خصوصی کدامند که برا هر کس متفاوته؟
    سایت بنده آقای شفیعی برید تو قسمت contact ببینید فرم ایمیلم را و اگر میشه راهنمایی ام بکنید
    بسیار متشکر

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

      سلام. بیشتر بخش ها از عنوان گرفته تا متن و آدرس ایمیل ها و مشخصات smtp تغییر کند.
      اگر میخواهید برای بخش تماس با ما استفاده کنید این آموزش را ببینید :
      ساخت فرم تماس با ما در php

      پاسخ
  12. محمد ۱۹ مهر ۱۳۹۹

    با سلام می خواستم بدونم اگر بخواهیم بجای gmail از outlook استفاده کنیم باید چه کار کنیم

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

      سلام. هر سرویس دهنده یک smtp سرور و یک پورت داره که الان پورت ۵۸۷ ثابت هست و فقط آدرس url سرور رو به smtp-mail.outlook.com تغییر بدید و یوزر و پسورد outlook خودتون رو قرار بدید

      پاسخ
  13. محمد طاها ۱۸ مهر ۱۳۹۹

    با سلام من این کد را در Localhost اجرا کردم درست کار کرد ولی وقتی بر روی هاست واقعی آپلودش کردم یک همچنین اروری به من می دهد
    Message could not be sent.Mailer Error: The following From address failed: info@tahmooresian.ir
    SMTP server error: 5.7.0 Authentication Required. Learn more at 530 5.7.0 https://support.google.com/mail/?p=WantAuthError i9sm12498629wma.47 – gsmtp

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

      سلام.
      خطا مربوط به ssl هست

      پاسخ
      1. محمد طاها ۱۸ مهر ۱۳۹۹

        با سلام مجدد برای حلش باید چه کنم ؟

        پاسخ
      2. حسن شفیعی ۱۹ مهر ۱۳۹۹

        سلام.
        احتمالا به خاطر هاست و ورژن php هست.
        ورژن جدید کتابخانه رو دانلود و جایگزین کنید:
        https://github.com/PHPMailer/PHPMailer/tree/master/src

        پاسخ
    2. محمود رنجبر ۱۰ تیر ۱۴۰۰

      برای رفع این خطا باید دسترسی دو مرحله ای اکانت گوگل خودتون رو فعال کنید و بعد یه گزینه فعال میشه به اسم گذرواژه های ویژه برنامه روش کلیک کنید و یک پسورد ۱۶ رقمی بهتون میده این پسورد رو تو قسمت پسورد phpmailer قرار بدید دیگه مشکلی رو هاست نخواهید داشت با تشکر
      با پسورد معمولی gmail رو هاست واقعی کار نمیکنه

      پاسخ
  14. alireza ۱۳ تیر ۱۳۹۹

    سلام من کدهارو روی هاست واقعی اجرا کردم و خطای
    SMTP Error: Could not connect to SMTP host.
    را گرفتم قبلا یادمه کار میکرد اما حالا نمیدونم
    چرا کار نمی کنه
    مشخصاتمم همه رو درست زدم و حتی تو thunder brid هم تست کردم

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

      سلام. شاید مشکل مربوط به ورژن php باشد و هاست هم میتونه تاثیر گذار باشه.

      پاسخ
  15. Ali ۱۸ اردیبهشت ۱۳۹۹

    واقعا خوب و مفید بود.
    حالا باید تستش کنم ببینم چطور جواب میده.
    واقعا از افرادی مثل آقای شفیعی خوشم میاد که دنبال یاد گیری چیزای جدیدند و به دیگران هم می آموزند.
    آقای شفیعی چند وقتیه که مسئله ای ذهنم را درگیر کرده و آن خواندن و ذخیره اثر انگشت گوشی با PHP است. اگر موافق هستید بهم ایمیل بزنید تا با هم دیگه دربارش تحقیق کنیم و به نتیجه برسیم اگر هم قبلا راه مناسبی برایش پیدا کرده اید ممنون میشم تجارب خودتون را به اشتراک بزارید🙏

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

      سلام. خوشحالیم که مفید واقع شده.
      خیلی ممنونم. لطف دارید.
      بله در مورد احراز هویت با اثر انگشت (biometric authentication) قبلا کتابخانه هایی که با php نوشته شدند منتشر شده :
      https://github.com/AyushKaul/Biometric-Fingerprint-Integration

      پاسخ
  16. Mohammad javad ۲۸ فروردین ۱۳۹۹

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

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

      اگر نیاز به انجام پروژه دارید که میتونید درخواست رو به ایمیل سایت یا از صفحه تماس با ما ارسال کنید

      پاسخ
  17. Mohammad javad ۲۶ فروردین ۱۳۹۹

    ببخشید چطوری کاری کنم که وقتی کسی داخل سایت ثبت نام کرد براش پیام خوش امد گویی فرستاده بشه

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

      سلام. در کد ثبت نام میتونید این کد ایمیل خوش آمدگویی رو اضافه کنید.

      پاسخ
      1. Mohammad javad ۲۶ فروردین ۱۳۹۹

        چطوری ؟؟
        اموزشی در این باره دارید ؟؟

        پاسخ
      2. حسن شفیعی ۲۶ فروردین ۱۳۹۹

        خیر. تا زمانی که php مقدماتی به بالا را یاد نگیرید نمیتونید چنین چیزی رو پیاده سازی کنید

        پاسخ
      3. Mohammad javad ۲۶ فروردین ۱۳۹۹

        شما بگید من یاد میگیرم لطفا

        پاسخ
      4. حسن شفیعی ۲۶ فروردین ۱۳۹۹

        متاسفانه بحثی نیست که در بخش نظرات بشه توضیحش داد.

        پاسخ
      5. Mohammad javad ۲۷ فروردین ۱۳۹۹

        داخل سایت نزاشتین و جایی رو نمیدونید داره یا نه ؟؟

        پاسخ
      6. حسن شفیعی ۲۷ فروردین ۱۳۹۹

        نه متاسفانه این موضوع چیزی نیست که جایی به خاطرش پستی ارسال شده باشه و باید با علم برنامه نویسی خودتون بتونید این تغییر رو لحاظ کنید

        پاسخ
  18. زهره دایی ۲۵ دی ۱۳۹۷

    سلام
    این روش رو لوکال هاست هم جواب میده؟؟

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

      سلام. بله در صورتی که extension=php_openssl.dll در لوکال شما فعال باشه میتونید از این روش در لوکال هاست هم استفاده کنید

      extension=php_openssl.dll در فایل php.ini (فعال کردن با حذف ;)
      یا چک کردن از طریق تابع phpinfo()

      موفق باشید.

      پاسخ
  19. سامان ۲۱ خرداد ۱۳۹۷

    سلام
    امکانش هست همین کد های که نوشتید به صورت سورس بزارید
    ممنون

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

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

      موفق باشید.

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