Itist82
دوشنبه 07 اسفند 1391, 23:43 عصر
من توسط یه کتابخانه با اسم swift mailer و همین طور بدون استفاده از اون کدی نوشتم که اطلاعات دریافت شده از کاربر رو به همراه فایلی که انتخاب کرده و فرستاده برای ایمیل خودم می فرستم. فایل باید به ایمیل اتچ بشه. الان فایل داره درست آپلود می شه و توی سرور میاد بدون هیچ مشکلی. ایمیل هم ارسال می شه و فایلی با همون اسم هم بهش اتچ می شه اما مشکل این جاست که همه فایل های اتچ شده فقط یک کیلو بایت هستن و اگه فایل ارسالی بیشتر بوده باشه بازم چیزی که اتچ شده همون یک کیلو بایته. این فایلا اگه حجم واقعیشون این قدر یا کمتر باشه بعد از دانلود شدن باز می شن. اما فایل های حجیم تر نه. واقعا نمی دونم باید چی کار کنم ممنون می شم کمک کنید.
این کدی هست که با استفاده از swift mailer نوشته شده:
function SwiftMailer($from,$to,$subject,$text,$path_of_uplo aded_file){
$transport = Swift_SmtpTransport::newInstance('localhost', 25);
// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance()
// Give the message a subject
->setSubject($subject)
// Set the From address with an associative array
->setFrom(array($from => 'دبیرخانه'))
// ->setCharset('iso-8859-2');
// Set the To addresses with an associative array
->setTo($to)
// Give it a body
->setBody($text)
// And optionally an alternative body
// ->addPart('<q>Here is the message itself</q>', 'text/html')
// Optionally add any attachments
->attach(Swift_Attachment::fromPath($path_of_uploade d_file));
$result = $mailer->send($message);
}
. اینم فانکشنی که خودم نوشتم:
function mail_attachment($filename, $path, $mailto, $from_mail, $from_name, $replyto, $subject, $message) {
global $fileSize;
$file = $path.$filename;
//$file_size = filesize($file);
$handle = fopen($file, "r");
$filedata = fstat($handle); // get some info about the file
$size = $filedata[7]; // size in bytes
echo $fileSize;
$content = fread($handle, $fileSize);
$content = chunk_split(base64_encode($content));
ob_start();
$content .= ob_get_clean();
$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 different content types 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)) {
echo "mail send ... OK"; // or use booleans here
return true;
} else {
echo "mail send ... ERROR!";
}
}
این کدی هست که با استفاده از swift mailer نوشته شده:
function SwiftMailer($from,$to,$subject,$text,$path_of_uplo aded_file){
$transport = Swift_SmtpTransport::newInstance('localhost', 25);
// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance()
// Give the message a subject
->setSubject($subject)
// Set the From address with an associative array
->setFrom(array($from => 'دبیرخانه'))
// ->setCharset('iso-8859-2');
// Set the To addresses with an associative array
->setTo($to)
// Give it a body
->setBody($text)
// And optionally an alternative body
// ->addPart('<q>Here is the message itself</q>', 'text/html')
// Optionally add any attachments
->attach(Swift_Attachment::fromPath($path_of_uploade d_file));
$result = $mailer->send($message);
}
. اینم فانکشنی که خودم نوشتم:
function mail_attachment($filename, $path, $mailto, $from_mail, $from_name, $replyto, $subject, $message) {
global $fileSize;
$file = $path.$filename;
//$file_size = filesize($file);
$handle = fopen($file, "r");
$filedata = fstat($handle); // get some info about the file
$size = $filedata[7]; // size in bytes
echo $fileSize;
$content = fread($handle, $fileSize);
$content = chunk_split(base64_encode($content));
ob_start();
$content .= ob_get_clean();
$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 different content types 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)) {
echo "mail send ... OK"; // or use booleans here
return true;
} else {
echo "mail send ... ERROR!";
}
}