 |
Ошибка при посылки почты через Smtp |
 |
18.03.2003, 10:50
|
#1
|
|
Guest
|
Ошибка при посылки почты через Smtp
Я когда-то скачал скрипт по посылке почты через SMTP (по моему даже из этого форума)
PHP Code:
--------------------------------------------------------------------------------
<?
class html_mime_mail {
var $headers;
var $multipart;
var $mime;
var $html;
var $parts = array();
function html_mime_mail($headers="") {
$this->headers=$headers;
}
function add_html($html="") {
$this->html.=$html;
}
function build_html($orig_boundary,$kod) {
$this->multipart.="--$orig_boundary\n";
if ($kod=='w' || $kod=='win' || $kod=='windows-1251') $kod='windows-1251';
else $kod='koi8-r';
$this->multipart.="Content-Type: text/html; charset=$kod\n";
$this->multipart.="BCC: [email][email protected][/email]\n";
$this->multipart.="Content-Transfer-Encoding: Quot-Printed\n\n";
$this->multipart.="$this->html\n\n";
}
function add_attachment($path="", $name = "", $c_type="application/octet-stream") {
if (!file_exists($path.$name)) {
print "File $path.$name dosn't exist.";
return;
}
$fp=fopen($path.$name,"r");
if (!$fp) {
print "File $path.$name coudn't be read.";
return;
}
$file=fread($fp, filesize($path.$name));
fclose($fp);
$this->parts[]=array("body"=>$file, "name"=>$name,"c_type"=>$c_type);
}
function build_part($i) {
$message_part="";
$message_part.="Content-Type: ".$this->parts[$i]["c_type"];
if ($this->parts[$i]["name"]!="")
$message_part.="; name = \"".$this->parts[$i]["name"]."\"\n";
else
$message_part.="\n";
$message_part.="Content-Transfer-Encoding: base64\n";
$message_part.="Content-Disposition: attachment; filename = \"".
$this->parts[$i]["name"]."\"\n\n";
$message_part.=chunk_split(base64_encode($this->parts[$i]["body"]))."\
n";
return $message_part;
}
function build_message($kod) {
$boundary="=_".md5(uniqid(time()));
$this->headers.="MIME-Version: 1.0\n";
$this->headers.="Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
$this->multipart="";
$this->multipart.="This is a MIME encoded message.\n\n";
$this->build_html($boundary,$kod);
for ($i=(count($this->parts)-1); $i>=0; $i--)
$this->multipart.="--$boundary\n".$this->build_part($i);
$this->mime = "$this->multipart--$boundary--\n";
}
function send($server, $to, $from, $subject="", $headers="") {
$headers="To: $to\nFrom: $from\nSubject: $subject\nX-Mailer: The Mouse!\n$headers";
$fp = fsockopen($server, 25, &$errno, &$errstr, 30);
if (!$fp)
die("Server $server. Connection failed: $errno, $errstr");
fputs($fp,"HELO $server\n");
fputs($fp,"MAIL FROM: $from\n");
fputs($fp,"RCPT TO: $to\n");
fputs($fp,"DATA\n");
fputs($fp,$this->headers);
if (strlen($headers))
fputs($fp,"$headers\n");
fputs($fp,$this->mime);
fputs($fp,"\n.\nQUIT\n");
while(!feof($fp))
$resp .= fgets($fp,1024);
fclose($fp);
}
}
?>
Я его пробовал на многих серверах, и все было в порядке, но на одном, система как бы зависает на последнем while - е, но маил посылает. Я попробовал его закоментировать, но тогда маил не посылается. Мне сказали что не правильно инсталлирован mail server, но к сожалению я к нему доступа не имею. Подскажите как можно решить эту проблему.
|
|
|
|
 |
18.03.2003, 12:17
|
#2
|
|
Moderator
Join Date: 03 2002
Location: Russia
Posts: 123
Rep Power: 0
|
Найти другой скрипт, который может быть заработает с этим сервером.
|
|
|
|
18.03.2003, 13:22
|
#3
|
|
¡no pasaran!
Join Date: 03 2002
Location: localhost
Age: 44
Posts: 540
Rep Power: 5
|
hayk << umnica, moderator
dejstvitel'no del'nyj sovet  )
kstati, pozdravljaju s naznacheniem!
|
|
|
|
18.03.2003, 13:35
|
#4
|
|
Guest
|
Hayk, ty navernoe zabyl URL podskazat' gde nayti.
|
|
|
|
18.03.2003, 13:40
|
#5
|
|
Академик
Join Date: 09 2001
Location: inside myself
Posts: 5,369
Rep Power: 7
|
я не знаток PHP, нo лучше бы ты написал:
Code:
while( fgets($fp,1024) )
{
;
}
так ты будешь проверять не тока End-Of-File, но и Error-ы.
и второе, главное, соображение - ты делаешь "fgets()" - а эта функция верно работает с НЕ-транслитными мессагами, с русским текстом, например ?
я - не уверен. Потому что что означает 1024 в случае с ЮНИКОД-ом ?
RTFM в этом направлении...
|
|
|
|
18.03.2003, 14:17
|
#6
|
|
Консервативн
Join Date: 01 2002
Location: Кавказская Албания
Posts: 889
Rep Power: 0
|
Za znakom ya s etim scriptom, on po vsemu runetu valyaetysa
Zanict posledniy while, eto toy chikl kotoriy chitaet vse otvety kotorye server posylaet vo vremya SMTP Relay-a, bez etogo while vabshe ne vozmojno budet cto-to napista' v socket,
ya predlogau tebe posle kajdogo fputs()-a v metode send , chitat' i analizirovat' cto otvetil server, na xudoy konec zdelay relay rukami i posmotri na kakoy komande zagibaetysa vse eto delo.
__________________
Праздник к нам приходит...
|^^^^^^^^^'''^\| ||\__
| ВОДКА-ВОДКА | ||','''|'''''''\_____,_
| _..... _ | ||_ _|'__|_____||.........| |
'(@)'(@)'(@)''''''''''''''''''''''*|(@)""""|(@)*
|
|
|
|
 |
Oy blin, Ye bana |
 |
18.03.2003, 14:18
|
#7
|
|
Консервативн
Join Date: 01 2002
Location: Кавказская Албания
Posts: 889
Rep Power: 0
|
Oy blin, Ye bana
Aram jan UDALI etu strochku iz scripta, ......
$this->multipart.="BCC: [email protected]\n";
, nadeus' ty poniyl pochemu.
|
|
|
|
18.03.2003, 17:16
|
#8
|
|
Moderator
Join Date: 03 2002
Location: Russia
Posts: 123
Rep Power: 0
|
|
|
|
|
18.03.2003, 17:28
|
#9
|
|
Moderator
Join Date: 03 2002
Location: Russia
Posts: 123
Rep Power: 0
|
Quote:
Originally posted by Greco El
и второе, главное, соображение - ты делаешь "fgets()" - а эта функция верно работает с НЕ-транслитными мессагами, с русским текстом, например ?
я - не уверен. Потому что что означает 1024 в случае с ЮНИКОД-ом ?
|
fgets() должна верно считывать байты, и ей побарабану какой текст латинский или русский.
В случае с unicode 1024 байта = 512 символов. Только при чем тут это?
|
|
|
|
18.03.2003, 17:51
|
#10
|
|
Дошкольник
Join Date: 01 2002
Location: hell
Posts: 124
Rep Power: 0
|
У тебя кажется старая версия. Попробуй эту версию, может
быть заработает. У меня на 3х разных серверах работало..
|
|
|
|
19.03.2003, 08:29
|
#11
|
|
Web developer
Join Date: 09 2002
Location: Yerevan
Age: 45
Posts: 896
Rep Power: 0
|
Vsem spasibo, mne pomog dolphin so svoim predlozheniem zamenit' while sleep(2).
|
|
|
|
|
All times are GMT. The time now is 19:55. |
|
|