PDA

View Full Version : مشکل ارسال ایمیل با استفاده از تابع mail



sma_mohseni
چهارشنبه 01 تیر 1384, 11:08 صبح
سلام
اقا بنده یه برنامه مدیریت و ارسال ایمیل نوشته ام .
تنها مشکل این برنامه اینه که وقتی تعداد ایمیل ها زیاد باشه ( حدود صد هزار ایمیل ) برنامه مشکل پیدا میکنه.
مشکلش هم اینه که حدود بیست هزار تای اول را خیلی سریع و در عرض چند دقیقه میفرسته اما از اون به بعد سرعت اون به شدت پایین میاد و تقریبا می ایستد.
وقتی برنامه رو مجددا هم اجرا میکنی هیچ فرقی نمیکنه.
حالا نمیدونم مشکل از برنامه است یا از هاست.
لطفا مرا راهنمایی کنید/
متشکرم

oxygenws
چهارشنبه 01 تیر 1384, 12:39 عصر
ظاهرا مشکل از هاست می باشد.

sma_mohseni
پنج شنبه 02 تیر 1384, 09:44 صبح
خوب یعنی راه حلی نداره؟
بالاخره باید یه جوری بشه این مشکل را حل کرد.

oxygenws
پنج شنبه 02 تیر 1384, 12:52 عصر
سعی نکن لود سرور رو زیاد کنی..... مشکلت حل میشه.
مثلا می تونی ایمیل ها رو با فاصله زمانی بفرستی یا ...

3nitro
پنج شنبه 02 تیر 1384, 18:09 عصر
آیا میشه کاری کرد که مثلا برنامه ای به طور خودکار وقتی ایمیل ها زیاد شد با فاصله زمانی مشخص این کار را انجام دهد ؟

oxygenws
پنج شنبه 02 تیر 1384, 23:23 عصر
این به الگوریتم شما بر می گرده، آیا با الگوریتم شما میشه؟!

spicirmkh
دوشنبه 06 تیر 1384, 10:59 صبح
جناب sma_mohseni
می توانم سورس برنامه و چگونکی کارکرد برنامه بگوئید

من می خواهم به 3000 نفر ایمیل به همراه یک تصویر گرافیکی به مشتریان بفرستم چگونه این کار بکنم

با تشکر

nematia
سه شنبه 07 تیر 1384, 07:26 صبح
من می خواهم به 3000 نفر ایمیل به همراه یک تصویر گرافیکی به مشتریان بفرستم چگونه این کار بکنم
از Unique Website Manager هم می‌توانید استفاده کنید (البته اگر بتوانید تامین هزینه کنید. چون این برنامه برای سازمان‌ها طراحی شده و فعلا هزینه‌ی بالایی برای استفاده داره)

sma_mohseni
سه شنبه 07 تیر 1384, 08:53 صبح
اقای spicirmkh سلام
تابع mail در Php خیلی ساده کار میکنه.


mail($to, $subject, $message, $headers);

برای فایل تصویری که میخواهی همراه ایمیل بفرستی هم میتونی دو کار بکنی
1- ابتدا تصویر را در یک جایی در اینترنت آپلود کنی . مثلا روی سایتت و یا در فضای وبلاگت و آنگاه متن ایمیل از تگ html استفاده کنید .


<img src="http://www.yoursite.com/imgPath.gif">

2- attach کردن تصویر به ایمیل

در ضمن راهنمای کاملی برای استفاده از تابع mail در این آدرس وجود دارد. یه نگاهی بینداز http://www.iranphp.net/mail_in_php.htm

موفق باشید :flower:

spicirmkh
چهارشنبه 08 تیر 1384, 16:20 عصر
سلام

ممنونم از راهنمای که کرده اید و توانستم ایمیل به فرمت HTML بفرستم

فقط یک مشکا آیا ارسال تصویر غیر از آپلود کردن روس سایت راهی دارد .

من دیدیم که برنامه Microsoft Office Publisher 2003 وقتی Send Eamil می کنم تصویر را ارسال می کند بدون اینکه تصور Attach باشد و تصویر در متن ایمیل هست
منظور می شود تصویر بصورت کد نوشت یا راهی ساده تر


با تشکر

oxygenws
چهارشنبه 08 تیر 1384, 17:47 عصر
2- attach کردن تصویر به ایمی

spicirmkh
چهارشنبه 08 تیر 1384, 18:03 عصر
سلام

من بعضی ایمیل دیده ام که فایل گرافیک همراه ایمیل Attach شده اما در متن ایمیل قسمت ‌بدنه نمایش داده می شود

و در Attach نشان نمی دهد که فایل ضمیمه دارد مثل ایمیل تبلیغاتی شرکتها


همانطور گفتید یکی از راهها این است توی سایت فایل آپلود کنم و آدرس دهی کنیم

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

با تشکر

oxygenws
چهارشنبه 08 تیر 1384, 18:26 عصر
2- attach کردن تصویر به ایمیل

spicirmkh
چهارشنبه 08 تیر 1384, 18:31 عصر
سلام

مشکل اینجاست که تصویر نمی توانیم با ایمیل ضمیمه کرد چون توی متن ایمیل که بصورت HTML نوشته شده هم تصویر است هم متن نوشتاری مثل ایمیل تبلیغاتی


آیا این ایمیل تبلیغاتی که شامل متن و تصویر است چگونه کار می کند در حالی که تصویر در سایت نیست

با تشکر

oxygenws
چهارشنبه 08 تیر 1384, 21:20 عصر
من چند بار باید حرف قبلی خودم رو تکرار کنم و شما دوباره همون سوال قبلی رو به یک شکل دیگه بپرسید؟؟ جواب همون قبلی است!!

شما اطلاعاتتون در مورد ایمیل و طرز کار اون و کلا پروتکل های ایمیل خیلی کمه. افزایشش بدید.

spicirmkh
پنج شنبه 09 تیر 1384, 09:15 صبح
سلام مدیر بخش

ممنونم که جواب من دادی

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

به هر حال از کجا می توانم در مورد پروتکل ایمیل و ضممیه فایل بدانم


با تشکر

oxygenws
پنج شنبه 09 تیر 1384, 10:37 صبح
شاید این مطلب کمکت کنه....
http://www.faqs.org/rfcs/rfc821.html
این مطلب RFC821 می باشد.

اگر سرورت از IMAP پشتیبانی می کنه می تونی با توابع زیر کار کنی:
http://www.php.net/manual/en/function.imap-mail.php

javad_hosseiny
پنج شنبه 09 تیر 1384, 11:22 صبح
این تیکه سورس رو من امتحان کردم جواب می ده (البته با استفاده از داشتن یک ایمیل جهت آپلود فایل ضمیمه)
(حالا این فایل ضمیمه می تونه تصویر باشه و یا هر چیز دیگه ای )

<?php
session_start();
// includes
include("../functions.php");
include("../config.php");

if(isset($_POST['btnSendMail'])){
//connecting to mail server
$inbox = @imap_open ($Mail_Server,$_SESSION['UserName'], $_SESSION['MailPass']) or Die("Connect Faild");

//creating form add
$from = $_SESSION['UserName'] . "@irimc.org";

//add from add to headers
$headers ="From: ". $from ."\r\n"."Reply-To: ". $from . "\r\n"."Return-path: ". $from . "\r\n";

//check if Cc if fill
if(isset($_POST['frmCc']) and $_POST['frmCc']!=='' ){

//add cc add. to headers
$headers =$headers ."Cc : ". $_POST['frmCc'] ."\r\n";
}

//preper for using utf-8
$message = $_POST['frmBody'];
//$message = utf8_decode($message );

// check if attachment is sent
//if(isset($_POST['attachment']) ){
if(isset($_FILES) and $_FILES ['attachment'] ['size']>0 ){
print_r($_FILES );
//if (is_uploaded_file($_FILES['attachment']['tmp_name' ])) {
// Read the file to be attached ('rb' = read binary)
$file = fopen($_FILES ['attachment'] ['tmp_name'],'rb');
$data = fread($file,filesize($_FILES ['attachment'] ['tmp_name']));
fclose($file);


// Generate a boundary string
$semi_rand = md5(time());
$boundary = "----------------------------Arash_Mikaeili" .$semi_rand ;

// Add the headers for a file attachment
$headers .= "MIME-Version: 1.0\r\nContent-Type: Multipart/Mixed; \tboundary=\"". $boundary . "\"\r\n";
/* "Content-Type: multipart/mixed;\r\n" .
" boundary=\"". $boundary ."\""; */



$message = "This is a multi-part message in MIME format.\r\n\r\n" .
"--" .$boundary ."\r\n" .
"Content-Type: text/plain; charset=\"utf-8\"\r\n" .
"Content-Transfer-Encoding: quoted-printable\r\n\r\n" .
$message . "\r\n\r\n" ;


// Base64 encode the file data
$data = chunk_split(base64_encode($data));

// Add file attachment to the message
$message = $message ."--" .$boundary ."\r\nContent-Type: " .$_FILES['attachment']['type'] .";";
$message = $message ."\"\r\nContent-Transfer-Encoding: base64\r\n";
$message=$message . "Content-Disposition: attachment; \r\n filename=\"". $_FILES['attachment']['name'] ."\"\r\n\r\n" ;
$message =$message .$data . "\r\n\r\n";
// "--". $boundary ."--\r\n\r\n";
}
//}

// Send the message
$ok = @imap_mail($_POST['frmTo'], $_POST['frmSubject'], $message, $headers);
if ($ok) {
echo "<p>Mail sent! Yay PHP!</p>";
echo"<br />";
echo $headers;
} else {
echo "<p>Mail could not be sent. Sorry!</p>". imap_last_error() ."<hr />";

}


//Close mailbox
imap_close($inbox);
}
?>
اینو من خیلی وقت پیش از سایت iranphp گرفته بودم


و همچنین لینک زیر نیز بد نیست امتحان کنید:
http://codewalkers.com/forum/index.php?action=displaythread&forum=phpcoding&id= 13262&realm=default

javad_hosseiny
پنج شنبه 09 تیر 1384, 12:12 عصر
این یکی هم خوبه تو سایت searchenjineforums پیدایش کردم

<?php


function checkfileatt($fname,$fsize){
$banned_ext="phpphtmlcgiplaspjspccfmshtmlexebatcom";
$err="No file attached";

$pos1=strrchr($fname,".");
$ftype=str_replace(".","",$pos1);
$blist=explode("",$banned_ext);
for($i=0;$i<sizeof($blist)-1;$i++){
if($ftype==$blist[$i]) $err="Your file extension (<b>*.$ftype</b> ) is not accepted.";
}

return $err;
}

$ok = 2;

if(isset($_POST['submit'])) {

$isFile=0;
$chked=0;
$ok = 0;

if($upfile_name!="" $upfile_size!=0) $isFile=1;

$fileErrs = checkfileatt($upfile_name,$upfile_size);

if ($fileErrs!="No file attached") $chked=1;

if($isFile==1) {

$fileatt=$upfile;
$fileatt_type=$upfile_type;
$fileatt_name=$upfile_name;
$file = fopen($fileatt,'rb');
$data = fread($file,filesize($fileatt));
fclose($file);

$data = chunk_split(base64_encode($data));

}

$mime_boundary = "<<<--==+X[".md5(time())."]";

$headers .= "From: Knigh7.com <".$email.">rn";
$headers .= "To: Knigh7 <an.e.mail@domain.net>rn";

$headers .= "MIME-Version: 1.0rn";
$headers .= "Content-Type: multipart/mixed;rn";
$headers .= " boundary="".$mime_boundary.""";

$message .= "This is a multi-part message in MIME format.rn";
$message .= "rn";
$message .= "--".$mime_boundary."rn";

$message .= "Content-Type: text/html; charset="iso-8859-1"rn";
$message .= "Content-Transfer-Encoding: 7bitrn";
$message .= "rn";
$message .= "<html><head></head><body><b>Name :</b> ".$name."<br>";
$message .= "<b>Telephone number :</b> ".$telno."<br>";
$message .= "<b>Email address :</b> ".$email."<br>";
$message .= "<b>Locaton :</b> ".$loc."<br>";
$message .= "<b>Sector :</b> ".$sec."rn<br>";
$message .= "<b>Duratoin :</b> ".$dur."rn<br>";
$message .= "<b>Salary :</b> ".$sal ."rn<br>";
$message .= "rn";
$message .= "--".$mime_boundary."rn";

if ($isFile == 1)
{

$message .= "Content-Type: ";
$message .= $upfile_type;
$message .= ";rn";
$message .= " name="";
$message .= $upfile_name;
$message .= ""rn";
$message .= "Content-Transfer-Encoding: Base64rn";
$message .= "Content-Disposition: attachment;rn";
$message .= " filename="";
$message .= $upfile_name;
$message .= ""rn";
$message .= "rn";
$message .= $data;

}

$message .= "rn";
$message .= "--".$mime_boundary."rn";

if ($chked==0)
{

$ok = mail("knigh7@hotmail.com", "Enquiry from website", $message, $headers);

}

}

?>

spicirmkh
پنج شنبه 09 تیر 1384, 12:53 عصر
سلام دوستان

ممنونم از ارسال جواب

من برنامه را بصورت زیر با ASP نوشتم سورس این است


<%
Dim MyCDONTSMail
Dim HTML
Set MyCDONTSMail = CreateObject("CDONTS.NewMail")

HTML = HTML & "<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01 Transitional//EN"""
HTML = HTML & """http://www.w3.org/TR/html4/loose.dtd"">"
HTML = HTML & "<html>"
HTML = HTML & "<head>"
HTML = HTML & "<meta http-equiv=""Content-Type"" content=""text/html; charset=iso-8859-1"">"
HTML = HTML & "<title>Untitled Document</title>"
HTML = HTML & "</head>"
HTML = HTML & ""
HTML = HTML & "<body>"
HTML = HTML & "<table width=""100%"" height=""133"" border=""0"" align=""center"" cellspacing=""0"">"
HTML = HTML & " <tr>"
HTML = HTML & " <td>"
HTML = HTML & " <p align=""center""><a target=""_blank"" href=""http://www.spic.ir"">"
HTML = HTML & " <img border=""0"" src=""http://www.spic.ir/Eimg/std/std2004.jpg"" width=""566"" height=""321""></a></td>"
HTML = HTML & " </tr>"
HTML = HTML & " <tr>"
HTML = HTML & " <td>"
HTML = HTML & "  </td>"
HTML = HTML & " </tr>"
HTML = HTML & "</table>"
HTML = HTML & "<div style=""position: absolute; width: 100px; height: 21px; z-index: 1; left: 390px; top: 308px"" id=""layer2"" align=""center"">"
HTML = HTML & " <a target=""_blank"" href=""mailto:info@spic.ir"">info@spic.ir</a></div>"
HTML = HTML & "<div style=""position: absolute; width: 100px; height: 20px; z-index: 1; left: 241px; top: 308px"" id=""layer1"">"
HTML = HTML & " <p align=""center""><a target=""_blank"" href=""http://www.spic.ir"">www.spic.ir</a></div>"
HTML = HTML & "</body>"

MyCDONTSMail.From= "spic@spic.ir"
MyCDONTSMail.To="info@spic.ir"
MyCDONTSMail.Subject="STANDARD 2004 "
MyCDONTSMail.BodyFormat=0
MyCDONTSMail.MailFormat=0
MyCDONTSMail.Body=HTML
MyCDONTSMail.Send
set MyCDONTSMail=nothing
response.write(" Send Email Ok !!!!!!!!!!!!!!!!")
%>



وقتی ایمیل دریافت می کنم به این صورت نمایش می دهد عکس EMAIL1

و وقتی راست کلیک می کنیم شکل شماره 2 می شود من می خواهم وقتی ایمیل گرفتم شکل شماره 2 بشود Email2

fh ja;v

javad_hosseiny
شنبه 11 تیر 1384, 11:52 صبح
اگر سوالاتان را در بخش asp ادامه دهید فکر کنم زودتر به جواب برسید
در مورد سورس کد اول تست شده و خودم ازش استفاده کردم
سورس کد دوم را نیز تست کردم جواب می دهد
ولی نسبت به سورس شما نمی توانم نظری بدهم

rezaTavak
شنبه 11 تیر 1384, 17:55 عصر
سلام

اگه من خودم سرور لینوکس در خانه داشته باشم با همین روش میشه فرستاد؟