Armenian Knowledge Base  

Go Back   Armenian Knowledge Base > Technical sections > Webmaster Zone > Web Development
Register

Reply
 
LinkBack Thread Tools
Old 18.03.2003, 10:50   #1
Guest
 
Posts: n/a
Downloads:
Uploads:
Default Ошибка при посылки почты через 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($fpfilesize($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($server25, &$errno, &$errstr30); 
    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, но к сожалению я к нему доступа не имею. Подскажите как можно решить эту проблему.
Reply With Quote
Old 18.03.2003, 12:17   #2
Moderator
 
Join Date: 03 2002
Location: Russia
Posts: 123
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default

Найти другой скрипт, который может быть заработает с этим сервером.
Reply With Quote
Old 18.03.2003, 13:22   #3
¡no pasaran!
 
dolphin's Avatar
 
Join Date: 03 2002
Location: localhost
Age: 35
Posts: 540
Downloads: 0
Uploads: 0
Reputation: 13 | 4
Cool

hayk << umnica, moderator

dejstvitel'no del'nyj sovet )


kstati, pozdravljaju s naznacheniem!
Reply With Quote
Old 18.03.2003, 13:35   #4
Guest
 
Posts: n/a
Downloads:
Uploads:
Default

Hayk, ty navernoe zabyl URL podskazat' gde nayti.
Reply With Quote
Old 18.03.2003, 13:40   #5
Академик
 
greka's Avatar
 
Join Date: 09 2001
Location: inside myself
Posts: 5,369
Downloads: 0
Uploads: 0
Reputation: 18 | 5
Default

я не знаток PHP, нo лучше бы ты написал:

Code:
while( fgets($fp,1024) ) 
{
;
}
так ты будешь проверять не тока End-Of-File, но и Error-ы.

и второе, главное, соображение - ты делаешь "fgets()" - а эта функция верно работает с НЕ-транслитными мессагами, с русским текстом, например ?

я - не уверен. Потому что что означает 1024 в случае с ЮНИКОД-ом ?

RTFM в этом направлении...
Reply With Quote
Old 18.03.2003, 14:17   #6
Консервативн
 
VX's Avatar
 
Join Date: 01 2002
Location: Кавказская Албания
Posts: 889
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default

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.
__________________
Праздник к нам приходит...

|^^^^^^^^^'''^\| ||\__
| ВОДКА-ВОДКА | ||','''|'''''''\_____,_
| _..... _ | ||_ _|'__|_____||.........| |
'(@)'(@)'(@)''''''''''''''''''''''*|(@)""""|(@)*
Reply With Quote
Old 18.03.2003, 17:16   #8
Moderator
 
Join Date: 03 2002
Location: Russia
Posts: 123
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default

Aram Ghazanchyan

URL'ов море:
http://pear.php.net/
http://www.phpclasses.org/
http://www.hotscripts.com/PHP/
http://www.weberdev.com/
http://px.sklar.com/
http://www.phpbuilder.com/snippet/
http://codewalkers.com/
http://php.resourceindex.com/


dolphin
А чем плох совет?
Reply With Quote
Old 18.03.2003, 17:28   #9
Moderator
 
Join Date: 03 2002
Location: Russia
Posts: 123
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default

Quote:
Originally posted by Greco El

и второе, главное, соображение - ты делаешь "fgets()" - а эта функция верно работает с НЕ-транслитными мессагами, с русским текстом, например ?

я - не уверен. Потому что что означает 1024 в случае с ЮНИКОД-ом ?
fgets() должна верно считывать байты, и ей побарабану какой текст латинский или русский.
В случае с unicode 1024 байта = 512 символов. Только при чем тут это?
Reply With Quote
Old 18.03.2003, 17:51   #10
Дошкольник
 
Dark Abyss of Yerevan's Avatar
 
Join Date: 01 2002
Location: hell
Posts: 124
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default

У тебя кажется старая версия. Попробуй эту версию, может
быть заработает. У меня на 3х разных серверах работало..
Reply With Quote
Old 19.03.2003, 08:29   #11
Web developer
 
Aram Ghazanchyan's Avatar
 
Join Date: 09 2002
Location: Yerevan
Age: 36
Posts: 896
Downloads: 1
Uploads: 0
Reputation: 9 | 0
Default

Vsem spasibo, mne pomog dolphin so svoim predlozheniem zamenit' while sleep(2).
Reply With Quote
Sponsored Links
Reply

Thread Tools


На правах рекламы:
реклама

All times are GMT. The time now is 14:36.


Powered by vBulletin® Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.