SMTP - problem z formatowaniem | kodowaniem treści

0

Witam. Mam problem z wysyłaniem maili przez PHP, na wstępie dodam że nie mogę używać nic co byłoby wbudowane w PHP (funkcja mail etc), a więc wykorzystałem taki prosty kod

<?php
class SMTPClient{
 public function SMTPClient ($SmtpServer, $SmtpPort, $SmtpUser, $SmtpPass, $from, $to, $subject, $body){
  $this->SmtpServer = $SmtpServer;
  $this->SmtpUser = base64_encode ($SmtpUser);
  $this->SmtpPass = base64_encode ($SmtpPass);
  $this->from = $from;
  $this->to = $to;
  $this->subject = $subject;
  $this->body = $body;
  if($SmtpPort=="") $this->PortSMTP=25; else $this->PortSMTP=$SmtpPort;
 }
 public function SendMail(){
  if($SMTPIN=fsockopen($this->SmtpServer,$this->PortSMTP)){
   fputs ($SMTPIN, "EHLO ".$HTTP_HOST."\r\n");  
   $talk["hello"] = fgets ( $SMTPIN, 1024 ); 
   fputs($SMTPIN, "auth login\r\n");
   $talk["res"]=fgets($SMTPIN,1024);
   fputs($SMTPIN, $this->SmtpUser."\r\n");
   $talk["user"]=fgets($SMTPIN,1024);  
   fputs($SMTPIN, $this->SmtpPass."\r\n");
   $talk["pass"]=fgets($SMTPIN,256);
   fputs ($SMTPIN, "MAIL FROM: <".$this->from.">\r\n");  
   $talk["From"] = fgets ( $SMTPIN, 1024 );  
   fputs ($SMTPIN, "RCPT TO: <".$this->to.">\r\n");  
   $talk["To"] = fgets ($SMTPIN, 1024); 
   fputs($SMTPIN, "DATA\r\n");
   $talk["data"]=fgets( $SMTPIN,1024 );
   fputs($SMTPIN, "To: <".$this->to.">\r\nFrom: <".$this->from.">\r\nSubject:".$this->subject."\r\n\r\n".$this->body."\r\n.\r\n");
   $talk["send"]=fgets($SMTPIN,256);
   fputs ($SMTPIN, "QUIT\r\n");  
   fclose($SMTPIN); 
  } 
  return $talk;
 }     
}
?>

Wysyła ładnie, ale niektóre serwisy a raczej programy pocztowe wyświetlają krzaki, no to kodowanie sobie pomyślałem i zrobiłem tak

fputs($SMTPIN, "To: <".$this->to.">\r\nFrom: <".$this->from.">\r\nContent-type: text/html; charset=utf-8\r\nSubject:".$this->subject."\r\n\r\n".$this->$this->body."\r\n.\r\n");

Ładnie kodowanie wyświetla ALE nie czyta już poprawnie przejścia do następnej linii.

fputs($SMTPIN, "To: <".$this->to.">\r\nFrom: <".$this->from.">\r\nSubject:".$this->subject."\r\n\r\n".iconv('utf-8','iso-8859-2'$this->body)."\r\n.\r\n");

i takie konwertowanie przez iconv też nie pomogło z liniami ja już nie wiem czemu tak się dzieje, myślałem że przez to że są same \r ale po dodaniu \n nic się nie zmieniło. Od razu mówię że nie mogę też używać jakichś skomplikowanych narzędzi bo cały system się rozleci, i tak ledwo się trzyma kod z 2003 dla PHP 4 (a teraz stoi na 5.3).
Proszę o pomoc bo mnie już się pomysły skończyły.

0

A nie możesz użyć PHPMailera? Możliwe, że jakieś stare wersje będą dla PHP4 (ale skoro działa to teraz na PHP 5.3 to nie widzę powodów, żeby tego nie użyć jak trzeba). Robienie czegoś takiego jak Ty to jakaś sieczka

0

ŁF dzięks nie wpadłem na to bo bez deklarowanego kodowania normalnie brał te rn'ki ale żebym na to nie wpadł :D,
@dzek69
Pisałem że to się ledwo trzyma, jak by Ci bardziej zobrazować, to nawet nie było klejone mąka a potrzebuje tytanowego szkieletu bo superglue jest za słaby...
Jedna mała zmiana może to rozsypać. To było pisane przez dziesiątki ludzi więc nie wiem czy jak zmienię linijkę to się wszystko nie rozsypie i to jeszcze w 2003 roku.
Wielkie dzięki za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1