۱۹-تير-۱۳۹۰, ۱۷:۰۸:۴۶
۲۹-تير-۱۳۹۰, ۰۳:۴۳:۱۴
می تونی از کلاس پایین استفاده کنی.
نحوه ی استفاده :
من این کد رو به راحتی تو نت پیدا کردم.بهتره قبل از هر کاری تو گوگل سرچ کنی.این کد هیچ ربطی به php نداره.فقط باید بلد protocol میل رو واسه فرستادن فایل بلد باشی.موفق باشی ...
کد php:
class AttachmentEmail {
private $from = 'yours@email.com';
private $from_name = 'Your Name';
private $reply_to = 'yours@email.com';
private $to = '';
private $subject = '';
private $message = '';
private $attachment = '';
private $attachment_filename = '';
public function __construct($to, $subject, $message, $attachment = '', $attachment_filename = '') {
$this -> to = $to;
$this -> subject = $subject;
$this -> message = $message;
$this -> attachment = $attachment;
$this -> attachment_filename = $attachment_filename;
}
public function mail() {
if (!empty($this -> attachment)) {
$filename = empty($this -> attachment_filename) ? basename($this -> attachment) : $this -> attachment_filename ;
$path = dirname($this -> attachment);
$mailto = $this -> to;
$from_mail = $this -> from;
$from_name = $this -> from_name;
$replyto = $this -> reply_to;
$subject = $this -> subject;
$message = $this -> message;
$file = $path.'/'.$filename;
$file_size = filesize($file);
$handle = fopen($file, "r");
$content = fread($handle, $file_size);
fclose($handle);
$content = chunk_split(base64_encode($content));
$uid = md5(uniqid(time()));
$name = basename($file);
$header = "From: ".$from_name." <".$from_mail.">\r\n";
$header .= "Reply-To: ".$replyto."\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
$header .= "This is a multi-part message in MIME format.\r\n";
$header .= "--".$uid."\r\n";
$header .= "Content-type:text/plain; charset=iso-8859-1\r\n";
$header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$header .= $message."\r\n\r\n";
$header .= "--".$uid."\r\n";
$header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; // use diff. tyoes here
$header .= "Content-Transfer-Encoding: base64\r\n";
$header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
$header .= $content."\r\n\r\n";
$header .= "--".$uid."--";
if (mail($mailto, $subject, "", $header)) {
return true;
} else {
return false;
}
} else {
$header = "From: ".($this -> from_name)." <".($this -> from).">\r\n";
$header .= "Reply-To: ".($this -> reply_to)."\r\n";
if (mail($this -> to, $this -> subject, $this -> message, $header)) {
return true;
} else {
return false;
}
}
}
}
نحوه ی استفاده :
کد php:
$sendit = new AttachmentEmail('marry@example.com', 'Merry Christmas!', 'Hi', '/home/racker/gift.jpg');
$sendit -> mail();
من این کد رو به راحتی تو نت پیدا کردم.بهتره قبل از هر کاری تو گوگل سرچ کنی.این کد هیچ ربطی به php نداره.فقط باید بلد protocol میل رو واسه فرستادن فایل بلد باشی.موفق باشی ...
۳۰-تير-۱۳۹۰, ۱۵:۲۰:۵۷
دوست عزیز ممنون از راهنماییتون
مشکل من حل شد فقط یه مشکل کوچولو!
وقتی فایل را اتچ میکنم و ارسال میکنم زمان دانلود ارور میده فایل سیو میشه ولی باز نمیشه مثل اینکه فایل علکی ساخته بشه
فکر کنم مشکل از ادرس دهی زمان ارسال باشه چون وقتی من فایل را دریافت میکنم فقط اسم فایل میمونه ممنون میشم راهنمایی کنید
مشکل من حل شد فقط یه مشکل کوچولو!
وقتی فایل را اتچ میکنم و ارسال میکنم زمان دانلود ارور میده فایل سیو میشه ولی باز نمیشه مثل اینکه فایل علکی ساخته بشه
فکر کنم مشکل از ادرس دهی زمان ارسال باشه چون وقتی من فایل را دریافت میکنم فقط اسم فایل میمونه ممنون میشم راهنمایی کنید
۰۲-مرداد-۱۳۹۰, ۰۰:۳۸:۰۲
دوستان کسی راهنمایی نمی کنه؟
۰۵-مرداد-۱۳۹۰, ۱۲:۲۷:۲۷
شاید بدون پسوند ذخیره شده !
از فایلت قبل از ارسال md5 بگیر بعدش هم دانلود کردی md5 بگیر
اگه مثل هم نبودن کد بالا مشکل داره
از فایلت قبل از ارسال md5 بگیر بعدش هم دانلود کردی md5 بگیر
اگه مثل هم نبودن کد بالا مشکل داره
۰۵-مرداد-۱۳۹۰, ۱۴:۲۴:۰۴
(۰۵-مرداد-۱۳۹۰, ۱۲:۲۷:۲۷)babyy نوشته است: [ -> ]شاید بدون پسوند ذخیره شده !ممنون دوست گلم که راهنمایی کردی!
از فایلت قبل از ارسال md5 بگیر بعدش هم دانلود کردی md5 بگیر
اگه مثل هم نبودن کد بالا مشکل داره
من وقتی اطلاعات صفحه htmlرا به فایلphpارسال میکنم تمام داده را یک بار چک کردم!
قسمتی که مربوط به ادرس فایل اتچ بود فقط اسم فایل هستش!
اگه لازم میدونید تا هردو فایل را بزارم ببینیدشون؟
۰۵-مرداد-۱۳۹۰, ۱۴:۵۲:۴۴
نمیدونم از چی میتونه باشه ؛
دوست دارین فایلها رو بزارید یه چک بکنیم
دوست دارین فایلها رو بزارید یه چک بکنیم
۰۸-مرداد-۱۳۹۰, ۱۹:۱۰:۰۵
(۰۵-مرداد-۱۳۹۰, ۱۴:۵۲:۴۴)babyy نوشته است: [ -> ]نمیدونم از چی میتونه باشه ؛این کد من!
دوست دارین فایلها رو بزارید یه چک بکنیم
۱۳-مرداد-۱۳۹۰, ۱۳:۴۹:۰۰
راستش کدی که نوشتی خيلی بی نظم بود واسه همين خودم يه آموزش قدم به قدم نوشتم شايد به درد بخوره
واسه فرستادن فايل با email بايد از MIME-Multipart-Message استفاده کنی.
Multipart-Message ميتونه شامل چندين بلوک با MIME-Type های مختلف باشه. واسه اينکه بلوک ها رو بشه از هم جدا کرد از يه String خاص يا همون "boundary" استفاده ميشه.
اول متغير های مورد نياز رو تعريف ميکنيم:
حالا بايد يه String خاص يا همون boundary رو تعريف کنيم.
حتماً نبايد از md5 استفاده کنيد، فقط مهم اينه که اين string خاص باشه و جای ديگه تکرار نشه
قدم بعدی تعريف header ميل
خوب حالا توی header تعريف کرديم که بلوک های بعدی که ساخته ميشند رو با String تعريف شده از هم جدا ميکنيم.
اين String قبل و بعد از هر بلوک ساخته شده بايد وجود داشته باشه.
حالا ميتونيم بلوک ها رو تعريف کنيم.
بلوک اول تشکيل شده از متن email
بلوک دوم واسه عکس
آخر سر هم boundary رو به آخر ميل اضافه ميکنيم و ميل رو ميفرستيم
"--" قبل از boundary نشون دهنده شروع بلوک جديد هستش
و فقط آخر تمام بلوک ها, هم قبل از boundary و هم بعد از boundary اضافه ميشه.
اين هم script کامل
واسه فرستادن فايل با email بايد از MIME-Multipart-Message استفاده کنی.
Multipart-Message ميتونه شامل چندين بلوک با MIME-Type های مختلف باشه. واسه اينکه بلوک ها رو بشه از هم جدا کرد از يه String خاص يا همون "boundary" استفاده ميشه.
اول متغير های مورد نياز رو تعريف ميکنيم:
کد php:
$_to = "your@mail.domain"; // آدرس گيرنده
$_subject = "what ever"; // عنوان
$_body = "your free text"; // متن email
$_file = "test.jpg"; // فايل
حتماً نبايد از md5 استفاده کنيد، فقط مهم اينه که اين string خاص باشه و جای ديگه تکرار نشه
کد php:
$_splitter = md5(uniqid(rand()));
قدم بعدی تعريف header ميل
کد php:
$_header = "MIME-Version: 1.0\n";
$_header.= "Content-Type: multipart/mixed; boundary = \"$_splitter\"\n";
خوب حالا توی header تعريف کرديم که بلوک های بعدی که ساخته ميشند رو با String تعريف شده از هم جدا ميکنيم.
اين String قبل و بعد از هر بلوک ساخته شده بايد وجود داشته باشه.
حالا ميتونيم بلوک ها رو تعريف کنيم.
بلوک اول تشکيل شده از متن email
کد php:
$_text.= "--".$_splitter."\n";
$_text.= "Content-Type: text/html; charset=\"utf-8\"\n";
$_text.= "Content-Transfer-Encoding: 8bit\n\n";
$_text.= $_body."\n";
بلوک دوم واسه عکس
کد php:
$_text.= "--".$_splitter."\n";
$_text.= "Content-Type: image/jpeg; name=\"$_file\"\n";
$_text.= "Content-Transfer-Encoding: base64\n";
$_text.= "Content-Disposition: attachment; filename=\"$_file\"\n\n";
$_attachment = fread(fopen($_file, "r"), filesize($_file)); // کل فايل رو با fread داخل يه string ميخونيم
$_attachment = chunk_split(base64_encode($_attachment)); //string رو به base64 تبديل ميکنيم
$_text.= $_attachment."\n"; //کد base64 رو به email اضافه ميکنيم
آخر سر هم boundary رو به آخر ميل اضافه ميکنيم و ميل رو ميفرستيم
کد php:
$_text.= "--".$_splitter."--\n";
mail($_to, $_subject, $_text, $_header);
"--" قبل از boundary نشون دهنده شروع بلوک جديد هستش
و فقط آخر تمام بلوک ها, هم قبل از boundary و هم بعد از boundary اضافه ميشه.
اين هم script کامل
کد php:
<?php
$_to = "your@mail.domain";
$_subject = "what ever";
$_body = "your free text";
$_file = "test.jpg";
$_splitter = md5(uniqid(rand()));
$_header = "MIME-Version: 1.0\n";
$_header.= "Content-Type: multipart/mixed; boundary = \"$_splitter\"\n";
$_text.= "--".$_splitter."\n";
$_text.= "Content-Type: text/html; charset=\"utf-8\"\n";
$_text.= "Content-Transfer-Encoding: 8bit\n\n";
$_text.= $_body."\n";
$_text.= "--".$_splitter."\n";
$_text.= "Content-Type: image/jpeg; name=\"$_file\"\n";
$_text.= "Content-Transfer-Encoding: base64\n";
$_text.= "Content-Disposition: attachment; filename=\"$_file\"\n\n";
$_attachment = fread(fopen($_file, "r"), filesize($_file));
$_attachment = chunk_split(base64_encode($_attachment));
$_text.= $_attachment."\n";
$_text.= "--".$_splitter."--\n";
mail($_to, $_subject, $_text, $_header);
?>
۱۳-مرداد-۱۳۹۰, ۱۹:۳۵:۵۰
ممنون دوست عزیز خیلی خوب بود ولی ای کاش کد خودم را ویرایش میکردی شاید بهتر میفهمیدم(چون سواد php من صفر هستش)
ولی بازم ممنون لطفتون
ولی بازم ممنون لطفتون