ارسال ایمیل با php :: V i R u s Ʒ²

V i R u s Ʒ²

هک و امنیت

V i R u s Ʒ²

هک و امنیت

Virus 32

💢 دوستانم بی دفاع و دشمنانم بی جواب نخواهند ماند 💢

-->
آخرین نظرات
  • ۶ ارديبهشت ۰۳، ۱۶:۱۵ - hidden
    test

سلامی به بلندی دماوند سلامی به شکوه سهند، خب از این چرت و پرتا بگذریم :/  سلام به کاربرای همیشه بیدار این وب با عرض تبریک و تهنیت سال نو و آرزوی صبر و شکیبایی در این ایام سخت. (راستی تهنیت رو اگه اشتباه نوشتم بگین) بگذریم. توو این پست قصد کردم که ارسال ایمیل با php رو بگم. 


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

خب این تابع رو باید  با چند تا آرگومان فراخوانی کنید. مثلاً:

<?php
//دریافت کننده ایمیل
$to = "username@example.com";
//موضوع ایمیل
$subject = "ایمیل ساده";
//متن پیام
$body = "سلام، \n\n این ایمیل جهت تست ارسال شد!";
//سربرگ های اضافه
$headers = "From: yourname@example.com";
//فراخوانی تابع و ارسال ایمیل
if (mail($to, $subject, $body, $headers)) {
    echo("<p>ایمیل با ارسال شد</p>");
    }
else {
    echo("<p>خطا در ارسال ایمیل! تنظیمات سرور از این امکان پشتیبانی نمی کنه</p>");
    }
?>
خب، اگه یوقت نتونستین با تابع mail ایمیل ارسال کنید، یا فایل php.ini تنظیم نیست یا سرور هاستتون، ارسال ایمیل رو محدود کرده :(
نیگا واستون کدارو با // توضیح دادم، بعدا بگین اتکر بده :(
خب بریم سر عسل متلب، این تابع سه تا دونه پارامتر اصلی و چند تا فرعی رو میتونه موقع ارسال ایمیل پوشش بده. پارامتر های اصلی که آدرس ایمیل دریافت کننده و موضوع و متن پیامه، پارامتر های اضافی هم که به شکل سربرگ ها قابل استفاده هستن، به طور مثال: 
<?php
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'X-Mailer: php' . "\r\n";
$headers .= 'Reply-To: username@example.com' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers .= 'Cc: Admin@example.com' . "\r\n";
$headers .= 'Bcc: Other@example.com' . "\r\n";
?>
علامت r/n/ توو کدهای بالا برای ایجاد  کردن یه خط جدیده.
MIME هم که یه استاندارد اینترنتی برای ارسال و دریافت ایمیله.

ارسال ایمیل به صورت html با تابع mail
از تابع mail علاوه بر ارسال ایمیل  به صورت متن ساده، برای ارسال متون به صورت صفحات html هم میشه استفاده کرد. برای همین دو تا کارو موقع ارسال ایمیل باید انجام بدیم. 
۱- متن پیام باید مثل یه کد html باشه.
۲- توو قسمت سربرگ هایی که بالا گفتیم باید سربرگ زیر رو هم به کدها اضافه کنیم تا از زبان فارسی پشتیبانی کنه:
<?php
$headers = 'Content-type: text/html; charset=utf-8' . "\r\n";
?>
به طور مثال:
<?php
//دریافت کننده ایمیل
$to = "username@example.com";
//موضوع
$subject = "ارسال ایمیل به صورت html";
//متن پیام به صورت html
$body = "<html>
<body>
سلام، \n\n این ایمیل جهت<b> تست </b>ارسال شد !
</html>
</body>";
//سربرگ ها
$headers = "From: yourname@example.com \r\n";
$headers .= "Content-type: text/html; charset=utf-8 \r\n";
//ارسال ایمیل
if (mail($to, $subject, $body, $headers)) {
    echo("<p>ایمیل با موفقیت ارسال شد</p>");
    }
else {
    echo("<p>خطا در ارسال ایمیل! تنظیمات سرور از این امکان پشتیبانی نمی کنه</p>");
    }
?>

ارسال فایل ضمیمه با تابع mail در php
خب، دیدین که ارسال ایمیل بدون فایل کار سختی نبود. ولی اگه بخوایم بهش فایلی اضافه کنیم باید یه کارایی انجام بدیم:( یه نیگا به کد زیر بندازین:
<?php
//دریافت کننده ایمیل
$to = "username@example.com";
//ارسال کننده ایمیل
$from = "yourname <yourname@example.com>";
//موضوع
$subject = "ارسال ایمیل به همراه ضمیمه";
//کد رندوم boundary
$randcode = md5("r",time());
//خط جدید
$line = "\r\n"; //یا PHP_EOL
//فایل ضمیمه
$filename = "phpbook.zip";
//تجزیه و آماده سازی فایل برای ارسال
$attachment = chunk_split(base64_encode($filename));
//سربرگ ها
$headers  = "From: ".$from.$line;
$headers .= "MIME-Version: 1.0".$line;
$headers .= "Content-Type: multipart/mixed; boundary=\"".$randcode."\"";
//متن پیام به صورت ساده
$body = "--".$randcode.$line;
$body .= "Content-Transfer-Encoding: 7bit".$line.$line;
$body .= "این یک ایمیل به همراه ضمیمه است".$line;
//متن پیام به صورت html
$body .= "--".$randcode.$line;
$body .= "Content-Type: text/html; charset=\"utf-8\"".$line;
$body .= "Content-Transfer-Encoding: 8bit".$line.$line;
$body .= "این یک ایمیل به همراه <b>ضمیمه</b> است".$line;
//تنظیمات فایل ضمیمه
$body .= "--".$randcode.$line;
$body .= "Content-Type: application/zip; name=\"".$filename."\"".$line;
$body .= "Content-Transfer-Encoding: base64".$line;
$body .= "Content-Disposition: attachment".$line.$line;
$body .= $attachment.$line;
$body .= "--".$randcode."--";
//ارسال ایمیل
if (mail($to, $subject, $body, $headers)) {
    echo("<p>ایمیل شما ارسال شد.</p>");
    }
else {
    echo("<p>خطا در ارسال ایمیل! تنظیمات سرور از این امکان پشتیبانی نمی کنه</p>");
    }
?>
خب کد بالا با استفاده از تابع mail، علاوه بر متن ساده به صورت html قابلیت ارسال فایل ضمیمه هم داره.
قبل از هرچی موقع ارسال ایمیل با ضمیمه ما نیاز به سربرگی تحت عنوان boundary یا سرحد و کرانه داریم. برای تفکیک کردن بخش های مختلف یه ایمیل در استاندارد MIME باید از کدهای رندوم تحت عنوان boundary استفاده کنیم. سیستم دریافت کننده ایمیل باید بتونه قسمت های مختلف اونو تفکیک کنه، این کد نباید در متن پیام تکرار شده باشه، برای همین از یه کد رندوم اختصاصی استفاده میشه.
- یه نکته مهم دیگه این که استفاده از تابع chunk_split و Base64_encode هه که به این صورت فایل ما برای انتقال به قطعات کوچکتری تقسیم شده و در چارچوب استاندارد RFC2045 قابل انتقاله.
- نکته مهم تر اینکه استفاده از application/zip برای content-type در قسمت مربوط به فایل ضمیمه. برای به دست آوردن content-type فایل های مختلف با فرمت های متفاوت باید آدرس فایل خودمون رو توو سرور یا توو لوکال هاست در کد زیر به جای متغیر فرضی file جایگزین کرده و اونو اجرا کنیم تا خروجی contect-type فایل ما رو نشون بده:
<?php
//تابع نمایش نوع فایل
function my_mime_content_type($filename){
    $mime_types = array(
        //files
        'txt' => 'text/plain',
        'htm' => 'text/html',
        'html' => 'text/html',
        'php' => 'text/html',
        'css' => 'text/css',
        'js' => 'application/javascript',
        'json' => 'application/json',
        'xml' => 'application/xml',
        'swf' => 'application/x-shockwave-flash',
        'flv' => 'video/x-flv',
        //images
        'png' => 'image/png',
        'jpe' => 'image/jpeg',
        'jpeg' => 'image/jpeg',
        'jpg' => 'image/jpeg',
        'gif' => 'image/gif',
        'bmp' => 'image/bmp',
        'ico' => 'image/vnd.microsoft.icon',
        'tiff' => 'image/tiff',
        'tif' => 'image/tiff',
        'svg' => 'image/svg+xml',
        'svgz' => 'image/svg+xml',
        //archives
        'zip' => 'application/zip',
        'rar' => 'application/x-rar-compressed',
        'exe' => 'application/x-msdownload',
        'msi' => 'application/x-msdownload',
        'cab' => 'application/vnd.ms-cab-compressed',
        //audio/video
        'mp3' => 'audio/mpeg',
        'qt' => 'video/quicktime',
        'mov' => 'video/quicktime',
        'mpeg' => 'video/mpeg',
        'mpe' => 'video/mpeg',
        'mpg' => 'video/mpeg',
        'wav' => 'audio/wav',
        'aiff' => 'audio/aiff',
        'aif' => 'audio/aiff',
        'avi' => 'video/msvideo',
        'wmv' => 'video/x-ms-wmv',
        //adobe
        'pdf' => 'application/pdf',
        'psd' => 'image/vnd.adobe.photoshop',
        'ai' => 'application/postscript',
        'eps' => 'application/postscript',
        'ps' => 'application/postscript',
        //ms office
        'doc' => 'application/msword',
        'docx' => 'application/msword',
        'rtf' => 'application/rtf',
        'xls' => 'application/vnd.ms-excel',
        'ppt' => 'application/vnd.ms-powerpoint',
        //open office
        'odt' => 'application/vnd.oasis.opendocument.text',
        'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
        );
        $ext = strtolower(array_pop(explode('.',$filename)));
        if (array_key_exists($ext, $mime_types)) {
            return $mime_types[$ext];
        }
        else {
            return 'application/octet-stream';
        }
}
//آدرس فایل
$filename = 'image/file.gif';
//خروجی
echo my_mime_content_type($filename);
?>
خب، اینم از مبحث ارسال ایمیل با php اگه مشکلی چیزی بود در خدمتیم :)
 ایران  پیروز و سربلند 

نظر (۵)

از این چرت و پرت ها بگذریم خیلی باحال بود :)

Virus32 32 Attacker ‌ :
خودت باحالی ;)

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

البته ویروس که کلا سردسته بی معرفتاس

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

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

ایشالا که در کنار هم خوش باشین

خدانگهدارتون

Virus32 Virus 32 :
سلام با معرفت
ماهرجا بودیم همونجام هستیم
شما معلوم نیست کجایی
ما یه خونه تو مجازی داریم هر وقت هرکی بیاد درش بروی همه بازه
تو که معلوم نیست کجایی ...... چطور انتظار داری ازت خبر بگیریم؟
پیروز باد ♥

سلام 

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

Virus32 ولم کنید (: :
0_0

سلام ویروس جان خوبی لطفا رمز رو برام بفرس یه سری هم به بلاگم هم بزن عاشقتم

سلام ویروس جان خوبی لطفا رمز رو برام بفرس یه سری هم به بلاگم هم بزن عاشقتم

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی