Avatar billede exposure Nybegynder
05. juli 2005 - 10:57 Der er 8 kommentarer og
1 løsning

header html

Har følgende Klasse:

<?
class clsMail
{
  var $to;
  var $from;
  var $cc;
  var $bcc;
  var $subject;
  var $message;
  var $contentType;
 
  function clsMail() //init
  {
      $this->to        =    "";
      $this->from    =    "";
      $this->cc    =    "";
      $this->bcc    =    "";
      $this->subject    =    "";
      $this->message    =    "";
      $this->contentType = "html"; // text, html
  }
 
  function isemail($email)
  {
      // regx to test for valid e-mail adres
      $regex = '^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]{2,})+$';
      if (eregi($regex, $email)) return true;
      else return false;
  }
 
  function send()
  {
      // check if e-mail adresses are valid.
      if (!clsMail::isemail($this->to)) die('ERROR: Invalid To e-mail adres');
      if (!clsMail::isemail($this->from)) die('ERROR: Invalid From e-mail adres');
      if (!clsMail::isemail($this->cc) && !$this->cc=="") die('ERROR: Invalid CC e-mail adres');
      if (!clsMail::isemail($this->bcc) && !$this->bcc=="") die('ERROR: Invalid BCC e-mail adres');
     
      // To send HTML mail, you can set the Content-type header. html is the default
      $headers  = "MIME-Version: 1.0\r\n";
      if ($this->contentType=="html") $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
      else $headers .= "Content-type: text/plain; charset=us-ascii\r\n";
     
      // additional headers  for From, Cc and Bcc
      $headers .= "From: ".$this->from."\r\n";
      if (!$this->cc=="")  $headers .= "Cc: ".$this->cc."\r\n";
      if (!$this->bcc=="") $headers .= "Bcc: ".$this->bcc."\r\n";
     
      // send the e-mail
      return mail($this->to, $this->subject, $this->message, $headers);
  }

}
?>


Bagefter følgende kode:

<?
$name = $_POST["name"];
$firm = $_POST["firm"];
$email = $_POST["email"];


ob_start();
include 'reply.php';
$msg = ob_get_contents();
ob_end_clean();


$mail2 = new clsMail();
$mail2->to="$email";
$mail2->from="fromEmail@someplace.com";
$mail2->subject="Tak for din tilmelding";
$mail2->message=$msg;
$mail2->contentType="html";

$mail2->send();

?>

Problemmet er at den sender ikke som html. Min mail kommer til at starte med:
Content-type: text/html; charset=iso-8859-1 From: someEm@il.com

Dvs. at den visser ikke html og ikke hvem det er fra.
Avatar billede mathiash Nybegynder
05. juli 2005 - 11:43 #1
Afhænging af mail server softwaren kan det være at du skal fjerne \r så der kun er \n dvs.

      // To send HTML mail, you can set the Content-type header. html is the default
      $headers  = "MIME-Version: 1.0\r\n";
      if ($this->contentType=="html") $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
      else $headers .= "Content-type: text/plain; charset=us-ascii\r\n";
     
      // additional headers  for From, Cc and Bcc
      $headers .= "From: ".$this->from."\r\n";
      if (!$this->cc=="")  $headers .= "Cc: ".$this->cc."\r\n";
      if (!$this->bcc=="") $headers .= "Bcc: ".$this->bcc."\r\n";


=

      // To send HTML mail, you can set the Content-type header. html is the default
      $headers  = "MIME-Version: 1.0\n";
      if ($this->contentType=="html") $headers .= "Content-type: text/html; charset=iso-8859-1\n";
      else $headers .= "Content-type: text/plain; charset=us-ascii\n";
     
      // additional headers  for From, Cc and Bcc
      $headers .= "From: ".$this->from."\n";
      if (!$this->cc=="")  $headers .= "Cc: ".$this->cc."\n";
      if (!$this->bcc=="") $headers .= "Bcc: ".$this->bcc."\n";

Med venlig hilsen
Mathias Hansen
Avatar billede Slettet bruger
05. juli 2005 - 19:45 #2
mathiash:
Hvis det er nødvendigt, så er den mailserver i stykker. Standarden specificerer ganske klart at linier skal slutte med \r\n og ikke noget som helst andet. At nogen servere så vælger at acceptere post fra fejlbehæftede systemer, hvor der bruges \n i stedet for \r\n, kan man synes om hvad man vil, men serveren skal under alle omstændigheder godtage en korrekt udformet mail.
Avatar billede mathiash Nybegynder
05. juli 2005 - 20:43 #3
sandbox >> Stødte ind i dette problem pga min mail server software (qmail) som der simpelthen ikke kan li \r\n kun \n
Avatar billede Slettet bruger
05. juli 2005 - 21:07 #4
OK, så er det fordi den behandler mails sendt med en kommando på selve maskinen (som php gør) anderledes end mails modtaget via smtp, for der er qmail netop en af de servere, der ikke vil godtage \n alene.
Avatar billede mathiash Nybegynder
05. juli 2005 - 21:13 #5
sandbox >> Så må det godt nok være en sjov version som qmailrocks.org anbefaler? haha! :D
Avatar billede Slettet bruger
05. juli 2005 - 21:35 #6
Tjah, det kan da godt være.

Denne side er skrevet af qmails forfatter, Dan Bernstein: http://cr.yp.to/docs/smtplf.html
Avatar billede exposure Nybegynder
15. juli 2005 - 02:20 #7
undskyld vente tiden. Det virker. Svar
Avatar billede mathiash Nybegynder
15. juli 2005 - 12:28 #8
Mit forslag eller har du selv fundet ud af noget...?!?
Avatar billede mathiash Nybegynder
25. juli 2005 - 13:49 #9
der kan du se sandbox 10hi ej :)
Er det ikke lidt for mange points til lidt \n'er skal jeg ikke oprette et spm så du kan få nogle af pointsne tilbage?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester