ارسال ایمیل از طریق smtp با مجوز php. ارسال نامه از طریق SMTP در PHP. ارسال نامه php از طریق راه اندازی اسکریپت SMTP

PHP را ایمیل کنید

این تابع به طور پیش فرض به عنوان ارسال ایمیل پیاده سازی می شود. این قابلیت به سرور شخص ثالث برای ارسال ایمیل نیاز ندارد. برای بررسی صحت این تابع کافیست یک فایل test.php در پوشه سایت ایجاد کنید و کد زیر را در آن قرار دهید:

به جای آن کجا "پست الکترونیکگیرنده" ایمیلی که نامه باید به آن ارسال شود را وارد کنید.

محل این فایلدر ریشه سایت شما

سپس www.YourDomain/test.php را در نوار آدرس وارد کنید. اگر نامه ای در ایمیل مشخص شده دریافت شود، میزبانی شما با عملکرد ارسال نامه به درستی کار می کند. ایمیل PHP". ممکن است نامه به اسپم ختم شده باشد، بنابراین باید بررسی شود.

اگر نامه با رمزگذاری نامفهوم رسید، خط را تغییر دهید: "بررسی ارسال نامه"بر "بررسی ارسال نامه"، "Content-type:text/html;charset=utf-8".

و ارسال نامه را از طریق نوار آدرس مرورگر خود تکرار کنید.

اگر پس از دستکاری های فوق نامه آزمایشی به دست گیرنده نهایی نرسید، باید با پشتیبانی فنی هاست خود تماس بگیرید.

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

عیب اصلی این روش این است که تمام نامه های ارسال شده به ایمیل مشتریان توسط سرویس های پستی (gmail, mail.ru, yandex.ru) شناسایی نمی شوند زیرا مستقیماً از وب سایت شما ارسال شده اند.

سرویس ایمیل Gmail این حروف را با علامت سوال و امضا نشان می دهد: "سیستم Gmail نتوانست تایید کند که این نامه از دامنه YourDomain ارسال شده است. ممکن است هرزنامه باشد."

برای جلوگیری از این وضعیت .

SMTP (پروتکل ساده انتقال نامه)

SMTP - پروتکل انتقال نامه در مجموع، برای تنظیم انتقال نامه با استفاده از این پروتکل، به خود سرور SMTP نیاز دارید. رایج ترین گزینه برای استفاده از نامه های شرکتی (دامنه) yandex.ru به عنوان سرور SMTP https://pdd.yandex.ru/ است.

اول از همه لازم است حساب (پست) yandex، که بر اساس آن ایمیل هایی برای دامنه شما ایجاد می شود: “order@YourDomain” “info@YourDomain”... اکانت اصلی در هیچ کجا قابل مشاهده نخواهد بود و فقط برای ایجاد ایمیل های دامنه بر اساس آن در آینده استفاده می شود.

پس از ورود به سیستم خود حساب شخصیایمیل دامنه Yandex با استفاده از پیوند https://pdd.yandex.ru/ ایجاد می شود. این ایمیل دامنه ای است که کاربران در قسمت «فرستنده» مشاهده خواهند کرد.

فیلد "فرستنده" هنگام ارسال ایمیل از طریق SMTP ضروری است. استفاده از SMTP برای ارسال حروف، ترکیبی از " دامنه" - "پست الکترونیک"، در نتیجه حروف توسط خدمات پستی شناسایی می شوند.


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

2019-08-05

سلام، بازدید کننده عزیز!

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

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

به طور کلی، یک تابع mail() داخلی برای ارسال نامه در PHP وجود دارد. اما لازم به ذکر است که علیرغم سادگی این روش (در این مورد برای ارسال حروف کافی است فقط یک خط کد با پارامترهای مشخص مشخص شود)، استفاده از این گزینه دارای یک ایراد قابل توجه در ارتباط با مشکل SPAM است. .

واقعیت این است که فیلترهای ضد اسپم سرورهای ایمیل در سمت گیرنده واقعاً به نامه‌هایی که از طریق تابع ()mail ارسال می‌شوند، خوشایند نیستند. و در بیشتر موارد، چنین پیام هایی قبل از رسیدن به مخاطب فیلتر یا حتی حذف می شوند.

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

این روش ارسال نامه از طریق SMTP با مجوز نامیده می شود. که امروز با استفاده از مثال ارسال فرم به آن خواهیم پرداخت بازخورد. علاوه بر این، برای این کار از کتابخانه نسبتاً معروف و محبوب PHPMailer استفاده خواهیم کرد که به شما امکان می‌دهد ارسال نامه‌ها را از طریق SMTP به سادگی سازماندهی کنید.

  • چگونه نامه های بازخورد ارسال خواهیم کرد
  • ایجاد فرم بازخورد
  • نصب کتابخانه PHPMailer
  • ما یک اسکریپت برای ارسال نامه از طریق SMTP ایجاد می کنیم
  • بررسی ارسال ایمیل
  • فایل های منبع سایت

چگونه نامه های بازخورد ارسال خواهیم کرد

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

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

اصولاً برای ارسال ایمیل کافی است از چند فیلد استفاده کنید که اطلاعات کافی در مورد کاربر و محتوای پیام ارائه می دهد، مانند:

  • "نام" - برای وارد کردن نام فرستنده پیام؛
  • "ایمیل" - برای آدرس پست الکترونیکفرستنده؛
  • "موضوع پیام"؛
  • "متن پیام".

اگرچه می توانید دیگران را اضافه کنید. به عنوان مثال، یک شماره تلفن، اگر واقعاً لازم است.

در مورد ما، چنین نامه هایی از یک صندوق پستی واقعی با مجوز سرویس پستی که دامنه ما به آن متصل است، به آدرس مدیر سایت ارسال می شود.

از آنجایی که در مقاله قبلی بر بررسی اتصال ایمیل دامنه به سرویس Yandex.Mail تمرکز کردیم، برای این گزینه نامه ارسال خواهیم کرد. اگرچه این مهم نیست. در زیر آن گزینه هایی را مشاهده خواهید کرد که با تغییر آن ها به شما امکان ارسال ایمیل از طریق آن ها را می دهند سرور پست الکترونیکی Mail.ru.

به عنوان یک صندوق پستی واقعی که نامه ها از آن ارسال می شود، از حساب کاربری ایمیل دامنه جدید ایجاد شده، مثلاً با آدرس استفاده می کنیم. [ایمیل محافظت شده]. و ما این نامه ها را به صندوق پستیمدیر [ایمیل محافظت شده]، که قبلا در مقاله قبلی ایجاد کردیم.

بنابراین، فرستنده نامه از فرم بازخورد، صندوق پستی خواهد بود [ایمیل محافظت شده].، و گیرنده - [ایمیل محافظت شده]. در این صورت کلیه اطلاعات کاربری که پیام را همراه با محتوای آن ارسال کرده است در متن نامه ارسالی مخابره می شود.

ایجاد فرم بازخورد

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

در زیر کد HTML این فرم را در صفحه "Contacts" قرار می دهیم (فایل kontakty.php در فهرست مقالات).

    "مقاله" >

    مخاطب

    بازخورد

    "مخاطب"عمل = "#" روش = "پست" >

    فرم انتقادات و پیشنهادات

    برای تمام سوالات، درخواست ها و پیشنهادات تجاری، می توانید از طریق فرم بازخورد زیر با ما تماس بگیرید.

    "بلوک تماس" >

    "ورودی تماس" >

    "متن"شناسه = "نام مخاطب"نام = "نام مخاطب"عنوان = "نام باید به زبان روسی باشد و حداقل شامل 3 کاراکتر باشد" الگو = "{3,}" مورد نیاز >

  1. "تماس خالی" >

    "ورودی تماس" >

    "پست الکترونیک"شناسه = "تماس با ایمیل"نام = "تماس با ایمیل"مورد نیاز >

  2. "مورد تماس" >

  3. "تماس-نظر" >

  4. "دکمه تماس" >

    "ارسال"نام = "دکمه تماس"ارزش = "ارسال" >

شکل 1 کد HTML فرم بازخورد

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

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

نصب کتابخانه PHPMailer

همانطور که قبلا ذکر شد، برای ارسال نامه از کتابخانه PHPMailer استفاده می کنیم که ارسال ایمیل از طریق را بسیار ساده می کند. پروتکل SMTPبا مجوز سرویس پست الکترونیکی شخص ثالث.

برای نصب آن باید دانلود کنید فایل های لازم. این را می توان از طریق وب سرویس GitHub با استفاده از Composer (یک مدیر وابستگی بسته برای PHP) انجام داد. یا به سادگی فایل های لازم را به روش معمول دانلود کنید.

اسکرین شات 73

در زیر صفحه سرویس وب GitHub وجود دارد که در آن پیوند به دانلود معمولی کتابخانه PHPMailer مشخص شده است.

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

در هر صورت فایل آرشیو به دست آمده باید از حالت بسته خارج شود و پس از آن پوشه PHPMailer-master استخراج شده با تمام محتویات آن در ریشه سایت قرار گیرد. در عین حال، برای سادگی، می توانید نام آن را به PHPMailer تغییر دهید. در زیر محتویات پوشه PHPMailer قرار داده شده در دایرکتوری ریشه سایت است.

بنابراین ما کتابخانه PHPMailer را نصب کردیم. پس از آن می توانیم شروع به ایجاد یک اسکریپت کنیم که با آن پیام های ایمیل را از وب سایت خود ارسال کنیم.

ما یک اسکریپت برای ارسال نامه از طریق SMTP ایجاد می کنیم

برای نوشتن اسکریپت، کافی است از توصیه هایی برای استفاده از PHPMailer ارائه شده در صفحه GitHub استفاده کنید، که قبلا برای دانلود کتابخانه از آن استفاده کرده بودیم.

آنها، به ویژه، نشان می دهند که در ابتدای اسکریپت لازم است کلاس های PHPMailer به فضای نام جهانی وارد شود. و خطوط خاصی از کد مربوطه داده شده است. همچنین نمونه هایی از استفاده از ویژگی ها و روش های PHPMailer، از جمله برای گزینه ارسال نامه از طریق SMTP وجود دارد.

اما اگر این کافی نیست، می توانید از اسنادی که حاوی توضیحاتی در مورد تمام ویژگی ها و روش های این کتابخانه است نیز استفاده کنید.

اسکرین شات 74

در زیر کد اسکریپت برای ارسال نامه از فرم بازخورد از طریق SMTP با مجوز وجود دارد. جایی که تمام خطوط مربوط به PHPMailer با توضیح داده شده و با پس زمینه روشن برجسته شده است.

بقیه قسمت ها، از جمله قطعات مربوط به دریافت و پردازش داده ها از فرم، که قبلاً مجبور بودیم در پردازنده های دیگر استفاده کنیم، با پس زمینه تیره نشان داده شده است. آنها قبلاً در مقاله ای که به طور خاص به مسائل مربوط به به دست آوردن و تأیید داده ها از یک فرم در PHP اختصاص یافته بود، با جزئیات مورد بحث قرار گرفتند. جایی که ما همچنین در مورد عملکرد کاربر جهانی برای اعتبارسنجی و پردازش داده های فرم صحبت کردیم check_symbol().

ما این اسکریپت را در همان فایل kontakty.php که قبلا فرم بازخورد را در آن ایجاد کرده بودیم قرار می دهیم.

    //----اسکریپت ارسال نامه از طریق SMTP با استفاده از PHPMailer----

    //کلاس های PHPMailer را به فضای نام جهانی وارد کنید. آنها باید در بالای اسکریپت باشند، نه در داخل تابع

    استفاده کنید PHPMailer\PHPMailer\PHPMailer ;

    استفاده کنید PHPMailer\PHPMailer\Exception ;

    اگر (!خالی($_POST["دکمه تماس" ])) (

    $name = $_POST["contact-name" ];

    $name = check_symbol ($name, "Name" , "1" , "/^+\z/iu" );

    $email = $_POST["contact-email" ];

    $email = check_symbol ($email, "E-mail" , "1" , "/^+@(+\.)+(2،6)\z/i");

    $subject = $_POST["contact-subject" ];

    $subject = check_symbol ($subject، "موضوع پیام" , "1" , "0" );

    $comment = $_POST["contact-comment" ];

    $comment = check_symbol ($comment, "متن پیام", "1" , "0" );

    اگر (!خالی($GLOBALS["هشدار" ])) (

    $alert = "داده های فرم ارسال نشد. خطاهای زیر پیدا شد:\n".$alert;

    عبارتند از"alert.php" ;

    دیگر {

    //اتصال کتابخانه

    نیاز"PHPMailer/src/PHPMailer.php" ;

    نیاز"PHPMailer/src/Exception.php" ;

    نیاز"PHPMailer/src/SMTP.php"؛

    $mail = جدید PHPMailer(); // مقدار دهی اولیه کلاس

    $from = " [ایمیل محافظت شده]" ; //آدرس ایمیلی که نامه از آن ارسال شده است

    $to = " [ایمیل محافظت شده]" ; //آدرس گیرنده

    $mail -> isSMTP(); //از پروتکل SMTP استفاده کنید

    $mail -> Host = "smtp.yandex.ru" ; //آدرس سرور ایمیل

    $mail -> SMTPAuth = درست است، واقعی ; //حالت مجوز را فعال کنید

    $mail -> نام کاربری = " [ایمیل محافظت شده]" ; //ورود از یک ایمیل دامنه متصل به یک سرویس ایمیل شخص ثالث (در این مورد Yandex.Mail)

    $mail -> Password = "27MrDon89" ; //رمز عبور ایمیل دامنه

    $mail -> SMTPSecure = "ssl" ; //پروتکل رمزگذاری

    $mail -> Port = "465" ; //پورت سرور SMTP

    $mail -> CharSet = "UTF-8" ; //رمزگذاری

    $mail -> setFrom ($from, "Administrator" ); //آدرس و نام فرستنده

    $mail -> addAddress ($to، "Administrator" ); //آدرس و نام گیرنده

    $mail -> isHTML ( درست است، واقعی ); //فرمت ایمیل را روی HTML تنظیم کنید

    $mail -> موضوع = "فرم بازخورد ارسال شد"; //موضوع ایمیل (عنوان)

    $mail -> بدن = "

    نام فرستنده: $name

    آدرس فرستنده: ایمیل $

    موضوع پیام: موضوع $

    محتوای پیام: $نظر



    " ; //محتوای پیام

    $mail -> AltBody = "متن نامه جایگزین"; //ایمیل جایگزین اگر سرویس گیرنده ایمیل از فرمت HTML پشتیبانی نمی کند

    $mail -> SMTPDbug = 0 ; //فعال کردن اشکال زدایی SMTP: 0 - خاموش (برای استفاده معمولی)، 1 = پیام های مشتری، 2 - پیام های مشتری و سرور

    اگر($mail -> send()) (

    $alert = "پیغام فرستاده شد"; //خروجی پیامی در کادر محاوره ای مرورگر در مورد ارسال موفقیت آمیز نامه

    دیگر {

    $alert = "خطا، ایمیل ارسال نمی شود:"$mail -> ErrorInfo ; //خروجی پیام خطا

    عبارتند از"alert.php" ;

شکل 5 اسکریپت برای ارسال ایمیل از طریق SMTP با مجوز

همانطور که مشاهده می کنید، تمامی خطوط مربوط به ارسال پیام ایمیل که روش ها و ویژگی های لازم در آن مشخص شده است، با نظرات همراه است. بنابراین، معنی ندارد که خودمان را تکرار کنیم، اما می توانیم فقط در مورد برخی از آنها صحبت کنیم، که در واقع نیاز به توضیحات اضافی دارند، یعنی:

1. با توجه به اینکه نامه از یک سرویس پستی شخص ثالث ارسال می شود، تنظیمات مربوط به سرور SMTP خاص در اینجا اعمال می شود. در این مورد، برای استفاده از سرور Yandex.Mail، مقادیر ویژگی زیر اعمال می شود:

  • ویژگی میزبان(pos.28) - آدرس سرور ایمیل با مقدار smtp.yandex.ru؛
  • ویژگی SMTPSecure
  • ویژگی بندر

این مقادیر ویژگی از صفحه Yandex.Help که در تصویر زیر نشان داده شده است گرفته شده است.

اما چنین اطلاعاتی را می توان از منابع دیگر نیز به دست آورد. برای انجام این کار، کافی است پرس و جوی مناسب را در موتور جستجو وارد کنید، به عنوان مثال: "سرور Yandex smtp". از کجا می توانید تعداد زیادی مرجع در این مورد پیدا کنید.

به روشی مشابه، مقادیر تنظیمات را می توان از سایر سرورهای SMTP به دست آورد. در زیر تصویری از صفحه راهنمای Mail.ru است که تنظیمات سرور SMTP سرویس پست الکترونیکی Mail.ru را نشان می دهد.

و بنابراین، در مورد استفاده از Mail.ru به عنوان یک سرور SMTP شخص ثالث، مقادیر زیر از ویژگی های کلاس PHPMailer باید اعمال شود:

  • ویژگی میزبان(pos.28) - آدرس سرور ایمیل (smtp.mail.ru)؛
  • ویژگی SMTPSecure(pos.32) - پروتکل رمزگذاری (ssl)؛
  • ویژگی بندر(محل 33) - پورت سرور SMTP (465).

رویکرد مشابهی باید برای سایر خدمات ایمیل اعمال شود.

2. در ملک نام کاربری(مقام 30) لازم است آدرس کامل صندوق پستی دامنه مشخص شود. در این مورد، " [ایمیل محافظت شده]".

با این حال، اگر از یک حساب غیر از یک حساب پستی دامنه برای ارسال نامه استفاده می کنید، اما از آدرسی که مستقیماً به سرویس پست مرتبط است، برای مثال " [ایمیل محافظت شده]"، سپس ورود باید تنها بخشی از آدرس تا علامت "@" باشد. در این حالت، ورود به سیستم دارای مقدار "بازخورد" خواهد بود.

3. PHPMailer یک ویژگی را فراهم می کند SMTPDbug(مقام 50)، که به شما امکان می دهد سطوح مختلف خطا را در صفحه مرورگر نمایش دهید. این ویژگی یافتن مشکلات هنگام اشکال زدایی یک اسکریپت را بسیار ساده می کند.

به طور معمول، در حالت عادی، با تنظیم مقدار روی 0، خروجی اطلاعات خطای دقیق غیرفعال می شود. اما در صورت بروز مشکل در ارسال نامه، یا در حین اشکال زدایی، می توان از مقادیر دیگر برای نمایش اطلاعات معنادارتر در مورد خطا استفاده کرد.

برای اینکه ببینیم این در عمل چگونه به نظر می رسد، اجازه دهید به طور موقت برخی از خطاها را در تنظیمات وارد کنیم. به عنوان مثال، در رمز عبور ایمیل دامنه (خاصیت کلمه عبور، موقعیت 31). و همچنین برای نمایش اطلاعات دقیق در مورد خطا، به طور موقت در ویژگی تنظیم شده است SMTPDbug(pos.50) مقدار 1. پس از آن، وقتی همه چیز اشکال زدایی و بررسی شد، حالت اشکال زدایی SMTP را غیرفعال می کنیم و 1 را با 0 جایگزین می کنیم.

در قسمت پایانی اسکریپت، پس از مشخص شدن تمامی ویژگی ها و روش های لازم، از روش ارسال نامه استفاده می شود. ارسال()) (مقام 51). و در صورت ارسال نامه، و روش ارسال()برای شی $mail true را برمی گرداند، سپس در گفتگوی مرورگر از طریق متغیر هشدار $پیامی درباره ارسال موفقیت آمیز نامه نمایش داده می شود (مقام 52).

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

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

پس از ایجاد یک اسکریپت برای ارسال نامه، طبیعتاً باید به نتیجه "خلاقیت" خود نگاه کنیم. آیا در اینجا همه چیز را در نظر گرفته ایم و هیچ اشتباهی مرتکب نشده ایم؟

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

و در اینجا نتیجه ارسال فرم است.

جایی که از پیغام موجود در کادر محاوره ای مرورگر، مشخص است که نامه به دلیل مشکل در اتصال SMTP نمی تواند ارسال شود.

اما، از هم اکنون ملک SMTPDbug(مقام 50) به مقدار 1 اختصاص داده می شود، سپس می توانیم اطلاعات دقیقی از خطای رخ داده را مشاهده کنیم و دلیل وقوع آن را دریابیم.

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

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

این بار به نظر می رسید همه چیز خوب پیش رفته است و پیامی دریافت کردیم که نامه با موفقیت ارسال شده است. ظاهراً به جز خطای موقتی که عمداً در رمز عبور ایمیل دامنه وارد شده است، هیچ اشتباه دیگری مرتکب نشدیم.

اما برای اینکه مطمئن شویم نامه واقعاً به مخاطب تحویل داده شده است، نامه را با آدرس وارد کنیم. [ایمیل محافظت شده]و به نتیجه نگاه کنید

همانطور که می بینید، نامه از آدرس [ایمیل محافظت شده]، که از طریق آن یک پیام ایمیل با نام "بازخورد" با موفقیت به مدیر سایت رسید. در عین حال، بدنه نامه حاوی تمام محتوایی است که با استفاده از داده های دریافتی از فرم بازخورد در اسکریپت ایجاد کردیم، یعنی:

  • نام فرستنده: Nikolay;
  • آدرس فرستنده: [ایمیل محافظت شده];
  • موضوع پیام: بررسی ارسال نامه
  • محتوای پیام: پیام آزمایشی.

اکنون، پس از بررسی موفقیت آمیز ارسال نامه، می توانید با اختصاص ویژگی، حالت اشکال زدایی SMTP را غیرفعال کنید. SMTPDbug(pos.50) مقدار 0.

بنابراین، ما کار ایجاد ابزاری برای ارسال نامه از طریق SMTP با مجوز با استفاده از یک سرور پست الکترونیکی شخص ثالث را تکمیل کردیم.

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

فایل های منبع سایت

فایل های منبع سایت با به روز رسانی هایی که در این مقاله انجام شده است را می توانید از مطالب اضافی پیوست دانلود کنید:

  • فایل های دایرکتوری www
  • جداول پایگاه داده MySQL

ارسال نامه از طریق SMTP از یک سرور محلی به شما امکان می دهد ارسال پیام از یک سایت واقع در یک ماشین محلی یا ساده تر، یک سرور محلی را آزمایش کنید. برای انجام این کار، می توانید از هر سرویس پستی Yandex، Google یا mail.ru استفاده کنید.

اول از همه، SMTP (پروتکل انتقال ایمیل ساده) یک پروتکل شبکه پرکاربرد است که برای انتقال ایمیل از طریق شبکه های TCP/IP طراحی شده است. و همه سرویس های ایمیل محبوب چنین پروتکل هایی دارند.

با ظهور سرورهای محلی، دیگر نیازی به انتخاب یک ارائه دهنده میزبانی برای بررسی عملکرد اسکریپت های فردی یا سیستم های cms وجود نداشت، و هزینه کمتری برای آن پرداخت می شود. آزمایش همه چیز در رایانه بسیار ساده تر است، و سپس می توانید به همه نشان دهید که چه کاری انجام داده اید.

بسیاری از این سرورها قبلاً دارای نرم افزار داخلی و عملکردهای لازم برای کار با نامه هستند؛ فقط باید آن را به درستی پیکربندی کنید.

برای بررسی عملکرد چنین ایمیلی، حداقل مورد نیاز است:

  • می توانید از Openserver به عنوان یک سرور محلی استفاده کنید.
  • و یک اسکریپت ساده که الگوی آن را دقیقاً در زیر می توانید پیدا کنید.
  • شما می توانید از هر سرور ایمیل استفاده کنید.

ارسال نامه php از طریق راه اندازی اسکریپت SMTP

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

ابتدا باید مقداری را در قالب اسکریپت تغییر دهید.
به - به آدرس پستی که در آن پیام ایمیل ارسال خواهد شد تغییر دهید.
موضوع - موضوع نامه
پیام - خود پیام یا متن نامه.

نمونه ای از فیلمنامه من:

البته می توانید عملکرد را کمی گسترش دهید و کاری کنید که اسکریپت پیامی در مورد ارسال نامه نمایش دهد. اگرچه در واقع این سرور SMTP است که ارسال را انجام می دهد و اسکریپت فقط پیام را تولید می کند.

برای مثال می توانید این را بنویسید:

همه مقادیر جایگزین شده باید در گیومه باشند، در غیر این صورت اسکریپت با خطا مواجه می شود. پس از این، می توانید اسکریپت را در پوشه سرور محلی ذخیره کنید.

مثلا: domains/send/index.phpو شروع به تنظیم ارسال نامه از طریق opensrerver SMTP کنید.

نامه به هر آدرسی که در اسکریپت به جای مقدار مشخص شده باشد می رسد 'به' ، اما این نامه دقیقاً توسط SMTP که در تنظیمات openserver مشخص شده است پردازش و ارسال می شود.

  1. راه اندازی سرور
  2. ماژول openserver را با تنظیمات در منوی "mail" باز کنید
  3. همانطور که در تصویر نشان داده شده است، تمام فیلدها را پر می کنیم، در حالی که نام کاربری، ایمیل فرستنده و رمز عبور را از یک صندوق پستی واقعی Yandex جایگزین می کنیم.

تنظیمات را ذخیره می کنیم و پس از راه اندازی مجدد سرور، می توانید به خود اسکریپت دسترسی پیدا کنید. از پوشه "سایت های من"، پوشه "ارسال" را باز کنید که اسکریپت index.php ذخیره شده قبلی در آن قرار دارد.

به محض دسترسی به این اسکریپت، اطلاعاتی در پنجره مرورگر جدید ظاهر می شود که نشان می دهد اسکریپت کامل شده است.

پس از این، باید صندوق پستی خود را که آدرس آن در اسکریپت مشخص شده است بررسی کنید تا ببینید نامه رسیده است یا خیر.

اگر وجود ندارد، به این معنی است که چیزی به درستی پیکربندی نشده است، یا نامه به پوشه هرزنامه ختم شده است.

همه تنظیمات دیگر شبیه به هم به نظر می رسند، اما در صورت لزوم، اطلاعات اضافی آسیبی نخواهد دید.

به منظور تنظیم ارسال نامه از طریق SMTP mail ru، فقط باید پارامترهای Yandex را با پارامترهای mail ru جایگزین کنید.

و برای اینکه هر بار سرور محلی را بازسازی نکنید، بهتر است پروفایل های سرور باز مختلف را پیکربندی کنید. نحوه انجام این کار در فیلم آموزشی نشان داده شده است.

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

برای هر پروفایل (اصلاً مهم نیست نام آن چیست) باید تنظیمات خاص خود را انجام دهید، مگر اینکه، البته، قصد استفاده از اسکریپت ها، سیستم های cms و برنامه های کاربردی با پارامترهای مختلف را داشته باشید.
اگر نه، پس می توانید با تنظیمات پیش فرض از پس آن بربیایید.

در مورد SMTP mail ru، همه چیز در اینجا یکسان است.

داده های Yandex به داده های mail ru تغییر یافته است

ارسال نامه از طریق smtp google

برای تنظیم ارسال نامه از طریق Google SMTP، کمی تلاش نیاز است.

اولاً، ایجاد نمایه در Google دشوارتر از سایر سیستم های Yandex و mail ru است
ثانیاً، سیستم به سادگی اجازه عبور نامه را نمی دهد، حتی اگر اطلاعات ورود خود را ارائه دهید. برای شروع، او نامه ای حاوی تمام اطلاعات لازم در مورد دستورالعمل های بیشتر ارسال می کند.

در غیر این صورت برای گوگل دقیقاً به همین شکل پیکربندی شده است. فقط تمام داده ها تغییر می کنند.

برای پیکربندی ارسال نامه از طریق SMTP دیگر، همه داده ها تقریباً یکسان خواهند بود.

اگر همه چیز برای شما درست شد و نامه ها به مخاطب مشخص شده رسید، همه چیز به درستی انجام شد. اگر تجربیات خود را در نظرات به اشتراک بگذارید بسیار عالی خواهد بود.

برای اینکه یک وب سایت خاص فرصت کار موثر و سازنده داشته باشد، باید تا حد امکان مسئولانه و با دقت به ایجاد آن پرداخت. انتخاب سیستمی که برای ایجاد یک فروشگاه آنلاین استفاده می شود، شایسته توجه ویژه است. واقعیت این است که یک پلتفرم تجاری متخصص در فروش کالا یا خدمات باید امکان اجرای تمام عملکردهای لازم را فراهم کند و استفاده از آن آسان باشد، هم برای مدیرانی که در نگهداری و پر کردن سایت‌ها و هم برای مشتریان فروشگاه‌های آنلاین فعالیت می‌کنند. بسیاری از افراد و شرکت هایی که با سوال انتخاب یک CMS مناسب برای خود مواجه هستند، بررسی می کنند که آیا Magento یا OkayCMS را انتخاب کنند. بیایید ویژگی ها و قابلیت های این موتورهای وب سایت را با هم مقایسه کنیم.

هنگام کار بر روی وب سایت خود، یک شخص یا شرکت باید تلاش زیادی کند - فقط در این صورت می توانید روی نتایج مثبت و به دست آوردن یک ابزار واقعاً مؤثر حساب کنید. یکی از سوالات اساسی که حتی قبل از شروع به ایجاد یک وب سایت باید حل شود، نحوه تصمیم گیری در مورد مناسب ترین گزینه CMS است. در ادامه دو CMS جوملا یا OkayCMS را با هم مقایسه می کنیم و به ویژگی های هر یک از آنها توجه می کنیم.

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

هنگام آماده شدن برای ایجاد وب سایت خود یا افتتاح یک فروشگاه آنلاین، باید بسیاری از مسائل را در نظر بگیرید و تجزیه و تحلیل کنید و همچنین مشکلات مختلف را حل کنید. فقط در این مورد می توانید روی این واقعیت حساب کنید که پروژه شما نتایج مثبتی را به همراه خواهد داشت و می توانید انتظارات خود را به طور کامل برآورده کنید. در میان موضوعات مختلف مربوط به توسعه فروشگاه اینترنتی، موضوع انتخاب CMS شایسته توجه ویژه است. برای اینکه تصمیم گیری در مورد موتور بهینه برای خود را برای شما آسان تر کند

هنگام برنامه ریزی برای ایجاد وب سایت خود برای یک فروشگاه آنلاین آینده، تعداد نسبتاً زیادی از افراد و حتی شرکت های متخصص در فروش با یک انتخاب دشوار و بسیار مهم روبرو می شوند: کدام یک از CMS های موجود را انتخاب کنید. اگر به این فکر می کنید که چه چیزی را انتخاب کنید: PrestaShop یا OkayCMS، پیشنهاد می کنیم این مقاله را بخوانید که در آن به مقایسه این دو سیستم برای ایجاد سایت های اینترنتی، به ویژه فروشگاه های آنلاین می پردازیم.

از آنجایی که ارسال پیام های ناشناس از سرورهای میزبانی مجازی ویندوز ممنوع است، ارسال نامه ها باید از طریق سرور SMTP انجام شود که امکان استفاده از سیستم پست الکترونیکی ما نیز وجود دارد.

چگونه با استفاده از PHP ایمیل ارسال کنیم؟

استفاده از هر کلاس PHP که از مجوز در سرور smtp پشتیبانی می کند. به عنوان مثال، می توانید از مجموعه کلاس PHPMailer استفاده کنید.

شما همچنین می توانید از مثال ما استفاده کنید که ارسال نامه ها را با استفاده از سرور smtp اجرا می کند که نیاز به مجوز دارد. بنابراین، فراموش نکنید که جزئیات دسترسی مناسب را به اسکریپت اضافه کنید، به عنوان مثال:

// اگر نیاز به نمایش گزارش جلسه SMTP دارید، می‌توانید خط زیر را لغو نظر کنید. // $_SERVER["debug"] = true;تابع MailSmtp ($reciever، $subject، $content، $headers، $debug = 0) ($smtp_server = "smtp.site"; // آدرس سرور SMTP$smtp_port = 25 ; // پورت سرور SMTP$smtp_user = " [ایمیل محافظت شده]" ; // نام کاربری برای مجوز در سرور SMTP$smtp_password = "pAsSwORd" ; // رمز عبور برای مجوز در سرور SMTP$mail_from = " [ایمیل محافظت شده]" ; // صندوق پستی که نامه از آن ارسال می شود$sock = fsockopen ($smtp_server، $smtp_port، $errno، $errstr، 30); $str = fgets ($sock, 512); if (! $sock ) ( printf ("سوکت ایجاد نشد\n"); exit(1); ) smtp_msg ($sock, "HELO" . $_SERVER [ "SERVER_NAME" ]); smtp_msg($sock، "AUTH LOGIN"); smtp_msg ($sock، base64_encode ($smtp_user)); smtp_msg ($sock، base64_encode ($smtp_password)); smtp_msg ($sock , "MAIL FROM:<" . $mail_from . ">" )؛ smtp_msg ($sock , "RCPT TO:<" . $reciever . ">" )؛ smtp_msg ($sock , "DATA"); $headers = "موضوع: " . $subject . "\r\n" . $headers ; $data = $headers. "\r\n\r\n" . $content . "\r\n." ; smtp_msg ($sock , $data )؛ smtp_msg ($sock , "QUIT" )؛ fclose ($sock )؛ ) تابع smtp_msg ($sock , $msg ) ( if ( ! $sock ) ( printf ("سوکت خراب!\n"); exit(1); ) if (isset($_SERVER [ "اشکال زدایی" ]) && $_SERVER [ "اشکال زدایی" ]) ( printf ( "ارسال از ما : %s
" , nl2br (htmlspecialchars ($msg )); ) fputs ($sock , " $msg \r\n" ); $str = fgets ($sock , 512 )؛ if (! $sock ) ( printf ( "Socket is down\n"); exit(1); ) else (if (isset($_SERVER [ "اشکال زدایی" ]) && $_SERVER [ "اشکال زدایی" ]) ( printf ("از سرور دریافت کردم: %s
" , nl2br (htmlspecialchars ($str )); ) $e = explode (" " , $str )؛ $code = array_shift ($e )؛ $str = implode ( " " , $e )؛ if ($code > 499) (printf ( "مشکلات با مکالمه SMTP.

کد %d.
پیام ها
"
, $code , $str ); خروج (1)؛ ) ) ) ?>

دانلود نمونه ای از یک اسکریپت آماده با تابع MailSmtp(): smtpauth.php.sample

می توانید از تابع MailSmtp () که در بالا توضیح داده شد برای جایگزینی مستقیم تابع mail() استفاده کنید؛ نمونه ای از ساده ترین شکل در PHP را در نظر بگیرید:

// سرصفحه های پیام، کدگذاری پیام، فیلدهای From، To و غیره را مشخص می کنند.$headers = "MIME-Version: 1.0\r\n" ; $headers .= "نوع محتوا: text/html؛ charset=windows-1251\r\n"; $headers .= "به: $to \r\n" ; $headers .= "از: نام فرستنده " ; // نامه ($to، $subject، $message، $headers); require_once "smtpauth.php" ; MailSmtp ($to، $subject، $message، $headers)؛ )؟>
به چه کسی: موضوع: متن: 
 
 

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

چگونه با استفاده از ASP.NET ایمیل ارسال کنیم؟

اگر از نسخه 2.0 استفاده می کنید، از کلاس MailMessage استفاده می کنید System.Net.Mail) به خوبی توضیح داده شده است.

در زیر نمونه هایی از کاربرد آن برای زبان های C# و VisualBasic آورده شده است:

مثال برای زبان سی شارپ:

<% @Page Language="c#" %> <% @Import Namespace="System.Net.Mail" %> <% @Import Namespace="System.Net" %> <% MailMessage message = new MailMessage(); // ایجاد یک حرف جدید message.To.Add(" [ایمیل محافظت شده]"); // افزودن آدرس گیرنده message.From = آدرس پست جدید("from@ domain.tld"، "نام فرستنده")؛ // تعیین نام و آدرس فرستنده message.Subject = "موضوع پیام"; // تعیین موضوع نامه message.BodyEncoding = System.Text.Encoding.UTF8; // تعیین رمزگذاری نامه message.IsBodyHtml = false; // تعیین فرمت حرف (درست - HTML، نادرست - نه HTML) message.Body = "متن پیام"; // تعیین متن (بدن) حرف SmtpClient client = new SmtpClient("smtp.site",25); // ایجاد یک اتصال جدید به سرور "smtp.site" client.DeliveryMethod = SmtpDeliveryMethod.Network; // روش ارسال پیام را تعریف می کند client.EnableSsl = false; // نیاز به استفاده از اتصال امن به سرور را غیرفعال می کند client.UseDefaultCredentials = false; // استفاده از جزئیات مجوز پیش فرض را غیرفعال کنید client.Credentials = NetworkCredential ("postmaster@ domain.tld"، "***کلمه عبور***")؛ // تعیین جزئیات لازم (نام کاربری و رمز عبور) برای مجوز در سرور SMTP client.Send(پیام); // پیام فرستادن %>

نمونه ای از یک فرم تمام شده را دانلود کنید که نشان دهنده استفاده از این روش است: MailForm.aspx.

مثال برای زبان VisualBasic:

<% @Page Language="VB" Debug="true" %> <% @Import Namespace="System.Net.Mail" %> <% @Import Namespace="System.Net" %> <% Dim smtpMssg AS new MailMessage smtpMssg.From = New MailAddress ("admin@domain.tld"، "Sender_name") smtpMssg.To.Add (" [ایمیل محافظت شده]") "افزودن آدرس گیرنده smtpMssg.Subject = "موضوع ایمیل" «اشاره به موضوع نامه smtpMssg.Body = "متن پیام" "نشان متن (بدنه) نامه smtpMssg.BodyEncoding = System.Text.Encoding.UTF8 " نشان رمزگذاری نامه smtpMssg.IsBodyHtml = نادرست نشانگر قالب حرف (درست - HTML، نادرست - نه HTML)کم نور SmtpMail به عنوان SmtpClient جدید ("smtp.site"، 25) اعلان یک شی جدید از نوع "SmtpClient" SmtpMail.DeliveryMethod = SmtpDeliveryMethod.Network "نشان روش تحویل نامه SmtpMail.UseDefaultCredentials = نادرست "غیرفعال کردن استفاده از اعتبارنامه های مجوز به طور پیش فرض" SmtpMail.EnableSsl = نادرست " نیاز به استفاده از اتصال ایمن به سرور را غیرفعال می کند SmtpMail.Credentials = NetworkCredential جدید ("postmaster@ domain.tld"، "***کلمه عبور***") "نشان دادن جزئیات لازم (نام کاربری و رمز عبور) برای مجوز در سرور SMTP SmtpMail.Send(smtpMssg) " ارسال پیام %>

همچنین یک کلاس SmtpMail منسوخ شده (و منسوخ شده) (با استفاده از فضای نام) وجود دارد. System.Web.Mail). در زیر نمونه ای از کاربرد آن برای زبان VisualBasic آورده شده است:

<% @Page Language="VB" Debug="true" %> <% @Import Namespace="System.Web" %> <% @Import Namespace="System.Web.Mail" %> <% Dim smtpMssg = new MailMessage اعلان یک شی جدید از نوع "MailMessage" smtpMssg.From = "نام_فرستنده domain.tld>" «درج نام و آدرس فرستنده smtpMssg.To = "admin@ domain.tld" " نشانی آدرس گیرنده را نشان می دهد smtpMssg.BodyFormat = MailFormat.Text "نشان فرمت نامه smtpMssg.BodyEncoding = Encoding.UTF8 "نشان دهنده رمزگذاری نامه است smtpMssg.Subject = "موضوع ایمیل" «اشاره به موضوع نامه smtpMssg.Body = "متن پیام" "نشان متن نامه smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"،1) "نشان دهنده نیاز به مجوز SMTP در سرور است smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername"، "admin@ domain.tld") "نام کاربری برای مجوز smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword"، "***password***") "رمز عبور برای مجوز SmtpMail.SmtpServer = "smtp.site" " با مشخص کردن آدرس سرور SMTP SmtpMail.Send(smtpMssg) " ارسال پیام %>

چگونه با استفاده از ASP ایمیل ارسال کنیم؟

لطفاً توجه داشته باشید که هنگام استفاده از سرور smtp ما، مجوز لازم است، بنابراین فراموش نکنید که جزئیات دسترسی مناسب را به اسکریپت اضافه کنید، به عنوان مثال:

<% iConfig = Server.CreateObject("CDO.Configuration") Set iConfig = Server.CreateObject("CDO.Configuration") With iConfig.Fields .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.сайт" .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 .Item("http://schemas.microsoft.com/cdo/configuration/languagecode") = "ru" .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "postmaster@domain.tld" .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "گذرواژه" .پایان به روز رسانی با تنظیم cdoMessage = CreateObject("CDO.Message") با مجموعه cdoMessage .Configuration = iConfig .From = "کاربر را آزمایش کنید domain.tld>" .To = "کاربر " .Subject = "سلام کاربر" .TextBody = "من این پیام را از اسکریپت ASP می نویسم." .Send End With Set cdoMessage = Nothing Set iConfig = Nothing %>

برخی از CMS ها قبلاً ابزارهای داخلی برای ارسال مکاتبات یا ماژول های مربوطه دارند؛ بیایید به محبوب ترین آنها نگاه کنیم.

وردپرس

برای این CMS یک ماژول ویژه "WP Mail SMTP" وجود دارد که نمونه ای از پیکربندی آن در صفحه ماژول توضیح داده شده است.

به تصویر مثال توجه کنید؛ در سیستم پست ما، استفاده از پورت 25 ضروری است و نیازی به رمزگذاری SSL نیست.

جوملا

در پنل مدیریت، به بخش "تنظیمات عمومی" بروید، تب "سرور" را انتخاب کنید. در قسمت "ایمیل"، باید روش ارسال را به عنوان "سرور SMTP" انتخاب کنید، در فیلدهای "آدرس سرور SMTP" و "ورود به سیستم SMTP" و "رمز عبور SMTP" جزئیات مناسب سیستم پستی را مشخص کنید، به عنوان مثال: smtp.site، box@your_domainو مربوطه کلمه عبور.

دروپال

این CMS همچنین دارای ماژول مخصوص به خود برای کار با سرور SMTP بر اساس PHPMailer.شما می توانید این ماژول را در صفحه آن در وب سایت CMS Drupal دانلود کنید؛ توضیحات نصب ماژول در آرشیو همراه با آن موجود است.

نت کت

این CMS دارای توابع داخلی برای کار با سرور SMTP نیست. برای ارسال نامه با استفاده از اسکریپت های سایت، می توانیم استفاده از راه حل خود را پیشنهاد کنیم؛ برای اتصال آن باید مراحل زیر را انجام دهید:

  • یک آرشیو با فایل های لازم را از وب سایت ما دانلود کنید ( send_auth_mail.phpو mail.inc.php) و آن را در رایانه خود باز کنید.
  • ویرایش فایل send_auth_mail.phpاز بایگانی، در آن جزئیات اتصال به سرور SMTP مورد نظر را نشان می دهد:

    • $mail_smtpServer = "smtp.site"; (آدرس سرور SMTP)
    • $mail_port = "25" ; (پورت اتصال)
    • $mail_username = "[ایمیل محافظت شده]" ; (نام کاربری برای مجوز در سرور SMTP)
    • $mail_password = "کلمه عبور"; (رمز عبور برای مجوز در سرور SMTP)
  • یک نسخه پشتیبان از فایل ایجاد کنید domain.tld/www/netcat/admin/mail.inc.php;
  • دانلود فایل ها send_auth_mail.phpو mail.inc.phpبه سایت مجازی در دایرکتوری domain.tld/www/netcat/admin/

domain.tldباید با نام دامنه شما جایگزین شود.

راه حل پیشنهادی با تمام ماژول های NetCat که از توابع استاندارد این CMS برای ارسال نامه استفاده می کنند، کار می کند.




بالا