آموزش پیشرفته PHP [گام 3] ارسال ایمیل با PHPMailer

دوره پیشرفته PHP ژانویه 2016 17

در دوره مقدماتی PHP با نحوه استفاده از تابع mail برای ارسال ایمیل آشنا شدید. در این درس روش ارسال ایمیل با استفاده از کلاس PHPMailer رو بهتون آموزش خواهم داد. ویدیو این قسمت را میتوانید از باکس زیر دانلود کنید :

دانلود فیلم آموزشی
لینک دانلود32 مگابایت12 دقیقه

 

کلاس phpmailer از تابع mail در php استفاده میکنه اما در روش ارسال ایمیل با تابع mail اگر نیاز به امکانات بیشتر مثل ارسال فایل و … شد باید با پرتکل SMTP آشنا باشید ؛ در صورتی که در روش ارسال ایمیل با کلاس phpmailer بدون نیاز با آشنایی با پرتکل SMTP و سریع از امکانات این پرتکل استفاده کنید.

در ابتدا باید کلاس PHPMailer را به پروژه تون متصل کنید ، پس از باکس زیر این کلاس را دانلود و فایل class.phpmailer.php در پروژه فراخوانی کنید :

دانلود کلاس phpmailer
لینک دانلود1 مگابایت

 

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

برای تعیین عنوان ایمیل از صفت Subject و برای تعیین متن ایمیل از صفت Body استفاده میکنیم:

با متد addAddress میتوان گیرنده ایمیل را تعیین نمود ، برای هر گیرنده یک بار از این متد استفاده میشود :

با استفاده از متد setFrom میتوان آدرس فرستنده را تعیین کرد :

در نهایت برای ارسال ایمیل از متد send استفاده میکنیم :

که این متد در صورت ارسال ایمیل مقدار true و در غیر اینصورت مقدار false را بر میگرداند پس میتوان برای صحت ارسال به این شکل استفاده کرد :

مثال زیر یک ایمیل را ارسال میکند :

 

 

متد addCC گیرنده های کپی و متد addBCC گیرنده های کپی مخفی ایمیل را تعیین میکنند:

متد addReplayTo آدرس گیرنده پاسخ نامه را تعیین میکند.

اگر ایمیل حاوی کد های HTML است [برای قالب بندی ایمیل] باید متد isHTML را برابر true قرار دهید:

برای تعیین نوع انکدینگ محتوای ایمیل [شامل عبارات فارسی] باید صفت CharSet را برابر utf-8 قرار دهیم :

با استفاده از متد addAttachment میتوان یک فایل را به همراه ایمیل ضمیمه کرد :

که در اینجا ورودی اول folder/myfile.zip آدرس فایل و ورودی دوم ، یعنی file.zip نام جدیدی که برای فایل انتخاب میکنیم است.

 

اما برای ارسال ایمیل از طریق سرور خارجی ، مثل سرور های جیمیل ؛ باید  ابتدا متد isSMTP فراخوانی شود و صفت های زیر را هم تعیین نمود:

Host : نام دامنه سرور خارجی که از پرتکل SMTP استفاده میشه ، که برای جیمیل smtp.gmail.com

Username : نام کاربری ایمیلی که در سرور خارجی استفاده میکنیم.

Password : رمز مربوط به نام کاربری وارده

SMTPSecure : نوع پروتکل را تعیین میکند که برای جیمیل میتوانید ssl یا tls باشد.

Port : پورت اتصال به سرور خارجی که معمولا 25 است و برای ssl پورت 465 و برای tls پورت 587 است.

SMTPAuth : که برای تعیین صلاحیت باید مقدار true را داشته باشد.

 

در مثال زیر از یک سرور خارجی [جیمیل] برای ارسال ایمیل استفاده کردیم :

 

دیدگاه ها
  • [Mr.mm] گفت:

    به به بعد از مدت ها php اومد
    ممنون

    • حسین شفیعیان گفت:

      انشالله دوره پیشرفته PHP رو ادامه میدم ، مدتی بود سایت به سمت طراحی رفته بود و از برنامه نویسی به دور بود !

  • سوران گفت:

    ممنون از زحمات شما. واقعا هیچ قیمتی نمیشه روی زحمات شما گذاشت. باز هم ممنون

  • مدیریت کامپیوتر دانشجو گفت:

    درود بر شما
    متاسفانه سایت شما ارتباط با ما نداره
    سایت شما از لحاظ محتوا و رتبه الکسا خیلی خوبه
    پیشنهاد تبادل لینک با وب سایت iranapp.org دارم
    با تشکر

    • حسین شفیعیان گفت:

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

  • نبیل امیری گفت:

    من قبلا ازاین کلاس phpmailerاستفاده کردم البته اون موقع php5بودش الان میخوام بدونم امکانات این کلاس بیشترشده یانه خودتون هم میدونیدکه چندوقتی هست که php7 اومده .ممنون

  • Ali.n گفت:

    ممنون برای اموزشهای خوبتون 😡

  • karami گفت:

    سپاس فراون از زحماتتون
    منتظر آموزش های بعدی شما هستم.

  • ًQueen گفت:

    سلام
    خیلی خیلی ممنونم ازینکه سایتتون اینقد خوبه 🙂
    فقط اینکه خیلی باید منتظر بمونیم تا یه دوره رو تموم کنین میدونم که مشغله دارین و یه جوری توقع بیجاس ولی اگه امکانش هست زودتر دوره پیشرفته php رو پیش ببرید
    بازم تشکر

  • سمی گفت:

    سلام من تازه با سایتتون آشنا شدم. عالیه. خیلی ممنون از وقتی که میذارید

  • Mina گفت:

    سلام
    میشه لطف کنید یه ویدئو در رابطه با بدست آوردن تعداد بازدید و تعداد کاربران آنلاین تهیه کنید.
    سپاسگزارم…

  • مهران گفت:

    سلام مهندس عزیز … یه مشکلی هس هر کاری کردم حل نشد من زمپ نصب کردم بعدش میخوام با php mailer ایمیل بفرستم اما نمیشه این خطارو میده SMTP connect() failed هر کاری کردم از فایل php.ini رفتم open ssl رو هم فعال کردم اما بازم نشد…به نظر شما چیکار کنم؟ اصلا امیدی هست؟

    • مهران گفت:

      اینم کد های نوشته شده
      http://opload.ir/downloadf-d88a9db7f4001-zip.html
      مرسی

      • مهران گفت:

        اخرش نتونستم با گوگل بفرستم رفتم با یاهو فرستادم با phpmailer…….. گوگل رو سرور جواب میده اما رو لوکال کار نمیکنه با زمپ .. اما یاهو کار کرد خداروشکر….دوروزه دارم سرچ میکنم این گوگل دیونم کرد …. مرسی حسین جان

    • حسین شفیعیان گفت:

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

  • پرهام گفت:

    سلام مهندس
    علامت :: در php به چه معنیه؟
    برای مثال:
    ;()jfactory::getuser

  • tabesh گفت:

    سلام خدمت شما
    من میخواهم داخل سایتم کد پی اچ پی قرار بدم
    میخوام هنگام نمایش زیبا نشون داده بشه
    حالا یا مثل سایت شما یا مثل سایت php.net
    میشه راهنمایی کنید چکار کنم ؟ وقتی از WYSIWYG استفاده میکنم جا برای قرار دادن کد php نداره
    وردپرسم نیستم که افزونه داشته باشه
    با فریمورک یی2 کار میکنم

  • محسن گفت:

    سلام و درود
    میخوساتم بدونم دیگه آموزش های دوره حرفه ای پی اچ پی و MYsql و Jquery قرار نمیدید؟
    خیلی وقته که آموزش جدید قرار ندادید در صورت امکان قرار بدید
    من هر روز به سایتتون سر میزنم
    ممنون

  • آرش گفت:

    سلام خسته نباشید.تشکر ویژه میکنم از ویدیو هاتون.من تازه شروع به کار کردم و با آموزش هاتون جواب خیلی از ابهاماتم رو گرفتم.فقط یه سوال داشتم.یکی اینکه آموزش php توو برنامه تون نیست؟ ممنون

  • sajjadcr7 گفت:

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

  • سارا گفت:

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

  • MorTaZa7khat گفت:

    اقای برنامه نویس!
    خسته نباشید!
    مزیت شما نسبت به بقیه اینه که خیلی ساده و روان مطالب رو میگید واقعا سپاس

  • php گفت:

    سلام خواستم ببینم اگه با php بخوام یک فایل txt که با الگو خاصی توش نوشته شده را به صورت خوانا چاپ بکنم باید جیکار کنم؟ منظورم اینه هر الگو را یک آرایه بکنه و قسمت های مختلفش را تو جدول نشون بده
    ممنون

  • mr developer گفت:

    سلام داداش من چند وقت پیش دوره ی اموزش پی اچ پی رو کامل ئانلود کردم ولی حالا متوجه شدم که جلسه 15و16 جا افتاده توی نظرات گفتی که بعد از تابستون قرار میدی ولی خوب نمیشه همین دو جلسه رو به ایمیلم بفرستی بی صبرانه منتظرم در ضمن برای اموشات ممنون بعد هدف قشنگی هم دری

  • developer گفت:

    سلام داداش من چند وقت پیش دوره ی اموزش پی اچ پی رو کامل ئانلود کردم ولی حالا متوجه شدم که جلسه 15و16 جا افتاده توی نظرات گفتی که بعد از تابستون قرار میدی ولی خوب نمیشه همین دو جلسه رو به ایمیلم بفرستی بی صبرانه منتظرم در ضمن برای اموشات ممنون

  • developer گفت:

    چرا نه؟؟؟؟؟؟؟؟؟؟

  • رضا گفت:

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

  • حیدر گفت:

    سلام آقای برنامه نویس یه سوال داشتم نمیدونستم باید داخل کدوم قسمت مطرح کنم.
    یه نگاه به سایت http://myroyal.ir/ بندازید!!
    بعد از کلیک روی دانلود به صفحه download.php منتقل میشه
    بعد از ارائه لینک دانلود اتوماتیک صفحه بسته میشه
    میشه فهمید از چه کدی استفاده کرده؟؟ خیلی برام مهمه اگه میشه کمک کنید

  • فری گفت:

    سلام و درود بر شما
    عذرمیخوام آموزش مقدماتی رو چطور میتونم دریافت کنم؟؟؟؟

  • فری گفت:

    خیلیییییی ممنون
    از زحماتتون بی نهایت سپاسگزارم

  • مرتضی گفت:

    سلام چرا وقت ارسال ایمیل 20 ثانیه طول میکشه صفحه لود بشه

  • رامین گفت:

    سلام ایمیل ارسال نمی شه کد ها رو هم کپی کردم یه خطا نشون میده تو هاست هم اجرا کردم خطا نشون نداد اما ارسال هم نکرد خطاش اینه
    Fatal error: Class ‘SMTP’ not found in D:\wamp\www\webasrpc\temp\class.phpmailer.php on line 1443
    خواهشن سریع جواب بدین واج لازم دارم ممنون

  • شیرین گفت:

    سلام
    نمونه مثال شما رو که تست میکردم کار نمیکرد تا اینکه بعد از سرچ کردن با اضافه کردن دستور
    require_once(‘class.smtp.php’);
    موفق به ارسال میل شدم
    البته نمیدونم دقیقا جریانش چی هست ولی گفتم شاید اگر کسی هم این مشکل رو داشته باشه بتونه کمکش کنه
    امیدوارم آموزش های این بخش از سایت رو ادامه بدید
    در ضمن همچنان منتظر شروع دوره ی تبدیل قالب بوت استرپ در وردپرس هم هستیم
    سپاس 🙂

  • ati گفت:

    کاش منم برنامه نویس بودم…خوش به حالتون..اصطلاحاتو بلد نیستم واس همین سخته واسم یکم…موفق باشید واقعا سایت عالی و خوبی دارید…❤ی


Time limit is exhausted. Please reload CAPTCHA.