ارسال ایمیل در PHP
ارسال ایمیل در PHP
در PHP با استفاده از تابع ()mail می توان از داخل یک اسکریپت ایمیل ارسال کرد.
نحوه استفاده:
mail(to,subject,message,headers,parameters)
پارامتر | توضیحات |
---|---|
to |
الزامی است، دریافت کننده یا دریافت کنندگان ایمیل را مشخص می کند. |
subject |
الزامی است، موضوع ایمیل را مشخص می کند. توجه داشته باشید که این پارامتر Enter را قبول نمی کند(n\) |
message |
الزامی است، متن ایمیل را مشخص می کند. |
headers |
اختیاری است، headerهای دلخواه مانند From,CC,BCC و غیره را مشخص می کند، هر کدام از این Headerها باید با کاراکتر "n\" یا "r\" از یکدیگر جدا شوند |
parameters |
اختیاری است، یک پارامتر اضافی برای برنامه ارسال ایمیل مشخص می کند. |
توجه: برای تغییر تنظیمات پیکربندی ارسال ایمیل می توانید از فایل php.ini استفاده کنید، احتمالاً اگر می خواهید مطالب بیشتری راجع به توابع ارسال ایمیل بدانید از لینک روبرو استفاده کنید:
مثال: در مثال زیر، یک متن ساده را ارسال کرده ایم:
<?php
$to = "این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
echo "Mail Sent.";
?>
فرم ارسال ایمیل
همان طور که می دانید با استفاده از دستور echo می توان هر متغیر یا رشته ای را چاپ کرد، این رشته می تواند تگ های HTML باشد، ایجاد فرم HTML از این طریق feedback-form نامیده می شود، به مثال زیر برای ارسال ایمیل توجه کنید:
<html>
<body>
<?php
//اگر تکس باکس ایمیل پرشده باشد،ایمیل ارسال می شود
if (isset($_REQUEST['email']))
{
//ارسال ایمیل
$email = $_REQUEST['email'] ;
$subject = $_REQUEST['subject'] ;
$message = $_REQUEST['message'] ;
mail("این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید", "$subject",
$message, "From:" . $email);
echo "Thank you for using our mail form";
}
else
//اگر تکس باکس ایمیل پرنشده باشد، فرم ارسال، نمایش داده می شود
{
echo "<form method='post' action='mailform.php'>
Email: <input name='email' type='text' /><br />
Subject: <input name='subject' type='text' /><br />
Message:<br />
<textarea name='message' rows='15' cols='40'>
</textarea><br />
<input type='submit' />
</form>";
}
?>
</body>
</html>
مثال بالا چه طور کار می کند:
- ابتدا بررسی می کند که آیا فیلد ورودی email پر شده است یا نه
- اگر پرنشده است(مثل وقتی که صفحه تازه دیده می شود) فرم HTML را نمایش می دهد
- اگر پر شده است(بعد از اینکه فرم پر شده) email را ارسال می کند
نکته: این ساده ترین راه برای ارسال email است، اما ایمن نیست. در فصل بعد درمورد آسیب پذیری scriptهای ارسال ایمیل و اینکه چه طور ورودی کاربر را برای ایمن تر کردن آن معتبر کنیم، توضیح داده شده است.
برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.
- نوشته شده توسط امیر پهلوان صادق
- بازدید: 21421
دیدگاهها
سلام خسته نباشید
ببخشید من عین دستورات بالا رو نوشتم و اجرا کزدم ولی اخطار میده! گفته تابع mail نتونست متصل بشه به mailserver ، گفته smpt یا smpt_port رو در php.ini چک کن یا از تابع ini_set استفاده کن!
چجوری مشکلو حل کنم ممنون
سلام. بر این عقیده هستیم که اگر کدهای بالا را در هاست واقعی مورد استفاده قرار دهید، مشکل به طور اتوماتیک حل خواهد شد. روش برطرف کردن این خطا در localhost مشکل می باشد.
متن این خطا به صورت زیر است:
نقل قول:
وقتی که ایمیل را بدین طریق راسال میکنیم با کارکترهای فارسی مشکل دارد و نمایش درستی ندارد و فقط کارکتر های انگلیسی را بدرستی نمایش میدهد
و در ضمن من در این قسمتی که گفتید لینک روبروای نمیبینم
: برای تغییر تنظیمات پیکربندی ارسال ایمیل می توانید از فایل php.ini استفاده کنید، احتمالاً اگر می خواهید مطالب بیشتری راجع به توابع ارسال ایمیل بدانید از لینک روبرو استفاده کنید:
نباید مشکلی داشته باشه. شما هیدر مربوط به کاراکترهای utf-8 رو هم ست کنید و دوباره تست کنید.
کدش توی اینترنت هست.
سلام و خسته نباشید
من با نت بینز در یک صفحه پی اچ پی کد مثال بالا را نوشتم و در قسمت to آدرس ایمیل خودمو دادم یعنی از یک ایمیلم در یاهو به ایمیل دیگرم در یاهو ... بعد از زدن دکمه ثابمیت پیغام Thank you for using our mail form را میدهد اما وقتی وارد ایمیل میشم هیچ میلی با عنوانی که در قسمت subject نوشتم برام نیامده.
درواقع در قسمت to در تابع میل آدرس ایمیل مقصد را نوشتم و زمانی که صفحه را لود می کنم در تکس باکس ایمیل آدرس ایمیل مبدا را وارد میکنم. خطا نمیده اما ایمیلی هم دریافت نمی کنم لطفا راهنماییم کنید. ممنون.
با سلام و تشکر.
به احتمال قوی شما ارسال ایمیل رو چک نمیکنید. کد رو بذارید تا ببینم.
سلام و خسته نباشید
من بوسیله تابع mail
ایمیلی به جیمیل دیگرم ارسال کردم
البته با تنظیمات صحیح و به وسیله sendmiller
متاسفانه جیمل اجازه ارتباط با جیمیل ست شده را نداد و اخطار داد و دیگر ارسال انجام نشد؟
لطفا برای رفع مشکل امنیت جیمیل راهنمایی بفرمایید
با سلام.
اگه تنظیمات امنیتی درست باشه، مشکلی برای ارتباط وجود نداره. یه بار با PHPMailer تست کنید و سعی کنید ایمیل ارسال کنید.
در نظر داشته باشید، میلسرور و شماره پورت رو هم درست تنظیم کرده باشید.
سلام و احترام
من بخش مقدماتی و کار با فرمها توی پی اچ پی رو خوندم و کامل فهمیدم...البته بعد از کلی سوال پرسیدن از شما...
خیلی ممنون...
ولی قسمتهای بعدیش رو اصلا متوجه نمیشم...کار با تاریخ و اینکلود کردن و فایلها رو هم کمی متوجه شدم..بنظرتون الان چیکار کنم؟
تا همینجا کافیه؟!
یا باید همه اش رو بخونم!؟
با سلام و احترام و همچنین تشکر از شما...
در مورد یادگیری باید خدمتتون عرض کنم که برای یادگیری انتهایی وجود نداره.
شما ادامه بدید هر جا هم که نیاز بود سوالتون رو بپرسید، حتما جواب خواهیم داد.
یک نوید هم به شما و سایر دوستان بدهم که ان شاءالله به زودی در این سایت یک فوروم مخصوص پرسش و پاسخ ایجاد خواهد که دسته بندی مطالب و سوالات در اونجا خیلی اصولی تر و همچنین امکان درج سوال و یا پاسخ با امکاناتی بسیار بیشتری خواهد بود. (حتی قابلیت درج کدها خیلی بهتر خواهد بود.)
سلام میتونم اینکارو برای شما انجام بدم ؟؟؟؟ (مجانی ) چرا؟؟
چون این سایت واقعا کمک میکنه به هم وطنامون میکنه لطفا بزارین من این کارو انجام بدم راسی یه سوالی برام پیش اومد اونم این بود که چطوری تو نوشتن قالب ورد پرسس از function ها استفاده می کنیم یعنی بدونه اینکه به صفحه چیزی include بشه ما اون function ها رو می تونیم استفاده کنیم لطفا جواب بدین خیلی تو گوگل سرچ کردم ولی چیزی پیدا نکردم
با سلام و تشکر.
در وردپرس یه فایلی هست به نام function.php که معمولا توابع پر کاربرد رو توی اون مینویسن. در مورد include کردن، در وردپرس و یا فریمورکها از include به طور مستقیم استفاده نمیشه.
بهتره اینطوری بگم که در CMS ها و فریمورکها از Autoload استفاده میشه. به این معنی که با کدنویسی چند خطا و سیستم نام دهی فایلها و پوشهها میشه کاری کرد، که در هر صفحه نیازی به Include کردن فایل نباشه، و با صدا زدن تابع موردنظر فایلی به طور اتوماتیک include میشه!!!