PDA

View Full Version : ارسال فایل به ایمیل



sargardoon
دوشنبه 22 فروردین 1390, 18:41 عصر
سلام دوستان،
کسی میدونه چطور میشه فایل ساخته شده توسط PHP را به ایمیل فرستاد، برای مثال من فایل backup.sql ساختم میخواستم بدونم چطوری میشه بعد از ساخت به ایمیل فرستاد و بعد اونرا از روی سیستم پاک کرد؟

UnnamE
دوشنبه 22 فروردین 1390, 21:12 عصر
با كلاس Zend_Mail ميتوني فايل هات رو attach‌ كني و بفرستي

رضا قربانی
دوشنبه 22 فروردین 1390, 22:23 عصر
//define the receiver of the email
$to = 'youraddress@example.com';
//define the subject of the email
$subject = 'Test email with attachment';
//create a boundary string. It must be unique
//so we use the MD5 algorithm to generate a random hash
$random_hash = md5(date('r', time()));
//define the headers we want passed. Note that they are separated with \r\n
$headers = "From: webmaster@example.com\r\nReply-To: webmaster@example.com";
//add boundary string and mime type specification
$headers .= "\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\"";
//read the atachment file contents into a string,
//encode it with MIME base64,
//and split it into smaller chunks
$attachment = chunk_split(base64_encode(file_get_contents('attac hment.zip')));
//define the body of the message.
ob_start(); //Turn on output buffering
?>
--PHP-mixed-<?php echo $random_hash; ?>
Content-Type: multipart/alternative; boundary="PHP-alt-<?php echo $random_hash; ?>"

--PHP-alt-<?php echo $random_hash; ?>
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

Hello World!!!
This is simple text email message.

--PHP-alt-<?php echo $random_hash; ?>
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

<h2>Hello World!</h2>
<p>This is something with <b>HTML</b> formatting.</p>

--PHP-alt-<?php echo $random_hash; ?>--

--PHP-mixed-<?php echo $random_hash; ?>
Content-Type: application/zip; name="attachment.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment

<?php echo $attachment; ?>
--PHP-mixed-<?php echo $random_hash; ?>--

<?php
//copy current buffer contents into $message variable and delete current output buffer
$message = ob_get_clean();
//send the email
$mail_sent = @mail( $to, $subject, $message, $headers );
//if the message is sent successfully print "Mail sent". Otherwise print "Mail failed"
echo $mail_sent ? "Mail sent" : "Mail failed";

sargardoon
سه شنبه 23 فروردین 1390, 22:35 عصر
ممنون دوستان از راهنمایی من خودم به روش دیگه این مشکل رو حل کردم، آلان کدهایی که نوشتم نامرتب، باید یه دستی روش بکشم تا بشه همه جا ازش استفاده کرد.
آلان به این صورت کار میکنه: به پایگاه داده ها وصل میشه، و لیستی از تمامی جدولهای دیتابیس رو نشون میده، که میتوان با انتخاب checkbox، جدولهایی که میخواهی بک آپ بگیری را انتخاب کنی، بعد از ساخت فایل SQL به ایمیل میفرسته و فایل را از روی سرور پاک میکنه.

حالا میخوام چند چیز رو بهش اضافه کنم:
1. تنظیمات برای بک آپ گیری به صورت خودکار (روزانه، هفتگی، ماهیانه) - مثل افزونه WordPress Database Backup در وردپرس
2. دادن ایمیل، اسم دیتابیس از داخل تنظیمات (الان hard coding شده)

گزینه 2 رو مشکلی ندارم فقط گزینه 1 رو نمیدونم چطوری باشه. ممنونم میشم یه راهنمایی در این رابطه بکنید.

sargardoon
چهارشنبه 24 فروردین 1390, 12:26 عصر
چطور میشه ایمیل به صورت خودکار فرستاد؟

1. تنظیمات برای بک آپ گیری به صورت خودکار (روزانه، هفتگی، ماهیانه) - مثل افزونه WordPress Database Backup در وردپرس

رضا قربانی
چهارشنبه 24 فروردین 1390, 12:45 عصر
چطور میشه ایمیل به صورت خودکار فرستاد؟


بستگی به برنامه نویس داره و شرط هایی که قرار می دید

توی سایت سرچ بزنی چیزای خوبی دستگیرت می شه

sargardoon
چهارشنبه 24 فروردین 1390, 12:55 عصر
بستگی به برنامه نویس داره و شرط هایی که قرار می دید

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

مثلا میخوام به صورت خودکار هفتگی خودش برام بک آپ بگیره و بفرسته. یه ایده ای که به نظرم خودم رسید این بود که همانند برنامه ها تحت ویندوز زمانی که برنامه اجرا میشه در شروع (onLoad) و یا در خروج از نرم افزار بک آپ بگیره که من اینطوری نمیخوام باشه.
من اون پلاگین که نوشتم توی وردپرس استفاده میشه را تنظیم کردم به صورت خودکار هفته ای یه بار بک آپ به ایمیلم میفرسته.

رضا قربانی
چهارشنبه 24 فروردین 1390, 16:49 عصر
ببین من یه راه همین الآن به ذهنم خورده که فکر می کنم کارآمده و تقریبا با این چیزایی که شما می خوایین جور در میاد !!!
این راه یه کم ناشیانه هست ولی همونطور که گفتید یک ایده هست و می تونید اجراش کنید یا نکنید.

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

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


در روش دیگه ای هم می تونی تایمر واسه 7 روز بذاری و اگر تایمر توسط جاوا اسکریپت 0 شد بیا و فایل رو برای ایمیل ارسال کن و تایمر رو دوباره روی 7 روز ست کن



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

sargardoon
چهارشنبه 24 فروردین 1390, 17:34 عصر
ببین من یه راه همین الآن به ذهنم خورده که فکر می کنم کارآمده و تقریبا با این چیزایی که شما می خوایین جور در میاد !!!
این راه یه کم ناشیانه هست ولی همونطور که گفتید یک ایده هست و می تونید اجراش کنید یا نکنید.

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

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


در روش دیگه ای هم می تونی تایمر واسه 7 روز بذاری و اگر تایمر توسط جاوا اسکریپت 0 شد بیا و فایل رو برای ایمیل ارسال کن و تایمر رو دوباره روی 7 روز ست کن



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


ممنونم از ایده ای که دادید، منظور شما اینه که:
یک صفحه مثل کانتر بسازم که به دیتابیس و یا فایل متنی وصل میشه، از اونجا اطلاعات را بگیرم. اطلاعاتی مثل
- آخرین تاریخ بک آپ گیری
- لیست جدولها
- زمان بک آپ گیری (روزانه، هفتگی، ماهیانه، سالانه و ...)
- نوع بک آپ گیری (دستی و یا خودکار)
- وضعیت (0 و 1) - 0 مقدار برای بکآپ گرفته نشده، 1 برای بکآپ گرفته شده
بعد از چک کردن شرایط عملیات لازم از قبیل گرفتن بک آپ، زیب کردن فایل، ارسال به ایمیل و حذف آن از روی سرور انجام بدم.

آیا درست متوجه منظور شما شده ام؟

sargardoon
چهارشنبه 24 فروردین 1390, 17:46 عصر
یه روشی که توی جستجوی گوگل پیدا کردم اضافه کردن cron job داخل کنترل پنل می باشد.

این هم چند آموزش ویدیویی برای دوستانی که نمیدونند چیه و علاقه مند به یاد گیری آن هستند.
http://www.youtube.com/watch?v=R-VxxpmGPxo
http://www.youtube.com/watch?v=IJUKMseb_JY
http://www.youtube.com/watch?v=XipbtWpUiLI
http://www.youtube.com/watch?v=mPn6jHg2O-A&feature=related


لطفا اگر روش دیگری به فکرتون میرسه اینجا بنویسید.