الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف ارفق صورة مع الايميل بشكل Attatch

بدأه Rida Talab في 18 أغسطس 2008 · 8 رد · 2,719 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

...

اصدقائي بنيت كود لارسال رسائل جماعية ..لمجموعة من الايميلات ضمن قاعدة بيانات..

ولكن الان اريد ان امكن المرسل من ارافاق صورة بشكل Attatch

هل من مساعد لي ...

#2
<?php
// general settings
$gif_name="load.gif";

$file=fopen($gif_name,'rb');
$gif_data=fread($file,filesize($gif_name));
fclose($file);

$gif_data = chunk_split(base64_encode($gif_data));

$random=md5(time());
$boundry="Boundry==$random";

$headers="To: admin@localhost\n".
"From: admin@localhost>\n".
"Subject: Attached\n".
"MIME-Version: 1.0\n".
"Content-Type: multipart/mixed; boundary=\"$boundry\"\n";

$message="
--$boundry
Content-type: image/gif
Content-Transfer-Encoding: base64
Content-Disposition: attachment;filename=\"load.gif\"

$gif_data

--$boundry--";

echo mail('admin@localhost','Attached',$message,$headers);
?>

الكود السابق حددنا نوع الصورة المراد ارسالها من نوع gif

يمكن تغيير ذلك بإستقبال الصورة من الفورم وتحديد نوعها بدلا من تثبيت نوع واحد .

I Say Nothing

#3
mana80 كتب:
<?php
// general settings
$gif_name="load.gif";

$file=fopen($gif_name,'rb');
$gif_data=fread($file,filesize($gif_name));
fclose($file);

$gif_data = chunk_split(base64_encode($gif_data));

$random=md5(time());
$boundry="Boundry==$random";

$headers="To: admin@localhost\n".
"From: admin@localhost>\n".
"Subject: Attached\n".
"MIME-Version: 1.0\n".
"Content-Type: multipart/mixed; boundary=\"$boundry\"\n";

$message="
--$boundry
Content-type: image/gif
Content-Transfer-Encoding: base64
Content-Disposition: attachment;filename=\"load.gif\"

$gif_data

--$boundry--";

echo mail('admin@localhost','Attached',$message,$headers);
?>

الكود السابق حددنا نوع الصورة المراد ارسالها من نوع gif

يمكن تغيير ذلك بإستقبال الصورة من الفورم وتحديد نوعها بدلا من تثبيت نوع واحد .

يعطيك العافية mana80 ....

ولكن يوجد مشكلة صغيرة ..انه الصورة لا تظهر...يظهر علامةX

#4

الكود يعمل عندي وتظهر الصورة ....

...هل غيرت اسم الصورة لصورة موجودة في جهازك

I Say Nothing

#5
mana80 كتب:
الكود يعمل عندي وتظهر الصورة ....

...هل غيرت اسم الصورة لصورة موجودة في جهازك

طبعا ..غيرت الصورة ..وضعت صورة jpg

ولم تظهر ..

وايضا وضعت زر استعراض في صفحة html لكي امكن المستخدم من وضع الصورة التي يريدها .. وكذلك لم تظهر الصورة

...واذا اردت ان اضع نص مع الصورة ..اين اضعه

attatch.rarmana80 وشكرا للمساعدة

تم تعديل هذه المشاركة بواسطة Rida Talab في 20 أغسطس 2008 في 11:05

#6

السلام عليكم

عندما قمت بغيير اسم الصورة لابد ايضا من تغييرContent-type: image/gif الى Content-type: image/jpg فهو يحدد نوع الملف

اما لو اردنا ان نرسل رسالة تحوي مثلا نص وصورة مرفقه فسيكون الكود كالتالي

الجزء الخاص بالمتغير $message هنا فقط سيكون التغيير.

$message="
 --$boundry
 Content-type : text/text
 Content-Transfer-Encoding : 7bit

 Text message

 --$boundry
 Content-type: image/jpg
 Content-Transfer-Encoding: base64
 Content-Disposition: inline;filename=\"load.gif\"

 $gif_data

 --$boundry--";

بالنسبة لنوع الصورة اذا كان غير محدد فيجب إضافة تحديد نوع الصورة المراد إرسالها ويتم

بالتأكد اولا أن الـ MIMEmagic extension تعمل من ملف php.ini , ثم نمرر اسم الملف إلى

mime_content_type("filename");

جرب الكود إن شاء الله يشتغل معك

تم تعديل هذه المشاركة بواسطة mana80 في 20 أغسطس 2008 في 15:14

I Say Nothing

#7

المشكلة اخت mana80 أن الصورة تصل الى الايميل وحجمها 0 kb

يعني الأتاتش يتم فقط لاسم الصورة

#8

قد يأخذكم هذا الى نقطة البداية ولكني احب ان اوضح انه هناك العديد من المشاريع المفتوحة المصدر التي توفر هذه الميزة فمن الاولي استخدامها وانا ارجحها على هذا الترتيب:

  • Zend_Mail وهو متوفر من خلال Zend Framework ولكن يمكن استخدامه منفصل.
http://pear.php.net/package/Mail_Mime
http://www.phpguru.org/static/mime.mail.html
#9

بدلا من

Content-Disposition: inline;filename=\"load.gif\"

الكود الجديد

Content-Disposition: attachment;filename=\"load.gif\"

I Say Nothing

مواضيع مشابهة