Avatar billede _what_ Nybegynder
29. december 2005 - 15:59 Der er 7 kommentarer og
1 løsning

html mail udsendelse

Jeg er ved at lave et bette script som skal bruges til at udsende html mails. Jeg har lavet en form med en felt hvor teksten der skal sendes smides ind.

Jeg bruger så følgende til at sende med...

$udsendes = $_POST['udsendes'];
$udsendes = nl2br($udsendes);
$adresse = $row['m_email'];
$id = $row['m_id'];
mail("$adresse","Nyhedsbrev","$udsendes","From: Mig <maillist@mig.dk>\nContent-type: text/html");

Det virker sådan set fint nok og den sender mailen afsted som den skal.

Problemet kommer når man åbner mailen den ser ikke lige helt ud som den skal.
Har følgende problemer...

CSS bliver ikke vist selvom de er defineret direkte i filen..

Det er som om det hele først begynder 20 linier nede.. det som står helt i top hvis jeg bare åbner html'en som en almindelig side kommer først et stykke nede og øverst er der bare hvidt...

Håber nogen kan komme med noget input....
Avatar billede fixxxer Nybegynder
29. december 2005 - 17:09 #1
Prøv at kigge på http://exp.dk/spm/675233
Avatar billede _what_ Nybegynder
30. december 2005 - 08:23 #2
Ok jeg har nu taget den her funktion fra tråden... og vil meget gerne vi hvordan jeg lige for smidt mine egene variabler ind i den... nogen der kan hjælpe... er klar til at smide flere point efter det hvis det er.

_______________________

<?
function SendMail($From,$FromName,$To,$ToName,$Subject,$Text,$Html){
$OB="----=_OuterBoundary_000";
$IB="----=_InnerBoundery_001";
$Html=$Html?$Html:preg_replace("/\n/","{br}",$Text)
  or die("neither text nor html part present.");
$Text=$Text?$Text:"Sorry, but you need an html mailer to read this mail.";
$From or die("sender address missing");
$To or die("recipient address missing");

$headers ="MIME-Version: 1.0\r\n";
$headers.="From: ".$FromName." <".$From.">\n";
$headers.="To: ".$ToName." <".$To.">\n";
$headers.="Reply-To: ".$FromName." <".$From.">\n";
$headers.="X-Priority: 1\n";
$headers.="X-MSMail-Priority: High\n";
$headers.="X-Mailer: My PHP Mailer\n";
$headers.="Content-Type: multipart/mixed;\n\tboundary=\"".$OB."\"\n";

//Messages start with text/html alternatives in OB
$Msg ="This is a multi-part message in MIME format.\n";
$Msg.="\n--".$OB."\n";
$Msg.="Content-Type: multipart/alternative;\n\tboundary=\"".$IB."\"\n\n";

//plaintext section
$Msg.="\n--".$IB."\n";
$Msg.="Content-Type: text/plain;\n\tcharset=\"iso-8859-1\"\n";
$Msg.="Content-Transfer-Encoding: quoted-printable\n\n";
// plaintext goes here
$Msg.=$Text."\n\n";

// html section
$Msg.="\n--".$IB."\n";
$Msg.="Content-Type: text/html;\n\tcharset=\"iso-8859-1\"\n";
$Msg.="Content-Transfer-Encoding: base64\n\n";
// html goes here
$Msg.=chunk_split(base64_encode($Html))."\n\n";

// end of IB
$Msg.="\n--".$IB."--\n";

// attachments
if($AttmFiles){
  foreach($AttmFiles as $AttmFile){
  $patharray = explode ("/", $AttmFile);
  $FileName=$patharray[count($patharray)-1];
  $Msg.= "\n--".$OB."\n";
  $Msg.="Content-Type: application/octetstream;\n\tname=\"".$FileName."\"\n";
  $Msg.="Content-Transfer-Encoding: base64\n";
  $Msg.="Content-Disposition: attachment;\n\tfilename=\"".$FileName."\"\n\n";
       
  $Msg.=$FileContent;
  $Msg.="\n\n";
  }
}

//message ends
$Msg.="\n--".$OB."--\n";
mail($To,$Subject,$Msg,$headers); 
//syslog(LOG_INFO,"Mail: Message sent to $ToName <$To>");
}
?>
Avatar billede _what_ Nybegynder
30. december 2005 - 08:40 #3
Hele koden ser nu således ud håber der er nogen som kan give mig en hånd... når jeg tester bliver siden bare hvid for slet ikke vist min form eller noget som helst...

<?
if($_POST[send]){
include ("mysql_connect.php");
mysql_connect($host,$user,$pass);
mysql_select_db($db);
$mail = mysql_query ("SELECT * FROM  mail_systen_test WHERE m_id >= '" . $_POST['fraid'] . "' AND m_id <= '" . $_POST['tilid'] . "'");
while($row = mysql_fetch_array($mail))
{
$udsendes = $_POST['udsendes'];
$udsendes = nl2br($udsendes);
$adresse = $row['m_email'];
$navne = $row['m_navn'];
$id = $row['m_id'];
//mail("$adresse","Nyhedsbrev fra Stof og Stil","$udsendes","From: Stof og Stil <maillist@eurostofogstil.dk>\nContent-type: text/html");
}
}

$From = "noreply@eurostofogstil.dk";
$Fromname = "Stof og Stil";
$Subject = "Stof og Stil nyhedsbrev";
$To = "$adresse";
$ToName ="$navn";
$Text "Du skal have html mail laeser for at se denne mail";
$Html = "$udsendes";

function SendMail($From,$FromName,$To,$ToName,$Subject,$Text,$Html){
$OB="----=_OuterBoundary_000";
$IB="----=_InnerBoundery_001";
$Html=$Html?$Html:preg_replace("/\n/","{br}",$Text)
  or die("neither text nor html part present.");
$Text=$Text?$Text:"Sorry, but you need an html mailer to read this mail.";
$From or die("sender address missing");
$To or die("recipient address missing");

$headers ="MIME-Version: 1.0\r\n";
$headers.="From: ".$FromName." <".$From.">\n";
$headers.="To: ".$ToName." <".$To.">\n";
$headers.="Reply-To: ".$FromName." <".$From.">\n";
$headers.="X-Priority: 1\n";
$headers.="X-MSMail-Priority: High\n";
$headers.="X-Mailer: My PHP Mailer\n";
$headers.="Content-Type: multipart/mixed;\n\tboundary=\"".$OB."\"\n";

//Messages start with text/html alternatives in OB
$Msg ="This is a multi-part message in MIME format.\n";
$Msg.="\n--".$OB."\n";
$Msg.="Content-Type: multipart/alternative;\n\tboundary=\"".$IB."\"\n\n";

//plaintext section
$Msg.="\n--".$IB."\n";
$Msg.="Content-Type: text/plain;\n\tcharset=\"iso-8859-1\"\n";
$Msg.="Content-Transfer-Encoding: quoted-printable\n\n";
// plaintext goes here
$Msg.=$Text."\n\n";

// html section
$Msg.="\n--".$IB."\n";
$Msg.="Content-Type: text/html;\n\tcharset=\"iso-8859-1\"\n";
$Msg.="Content-Transfer-Encoding: base64\n\n";
// html goes here
$Msg.=chunk_split(base64_encode($Html))."\n\n";

// end of IB
$Msg.="\n--".$IB."--\n";

// attachments
if($AttmFiles){
  foreach($AttmFiles as $AttmFile){
  $patharray = explode ("/", $AttmFile);
  $FileName=$patharray[count($patharray)-1];
  $Msg.= "\n--".$OB."\n";
  $Msg.="Content-Type: application/octetstream;\n\tname=\"".$FileName."\"\n";
  $Msg.="Content-Transfer-Encoding: base64\n";
  $Msg.="Content-Disposition: attachment;\n\tfilename=\"".$FileName."\"\n\n";
       
  $Msg.=$FileContent;
  $Msg.="\n\n";
  }
}

//message ends
$Msg.="\n--".$OB."--\n";
mail($To,$Subject,$Msg,$headers); 
//syslog(LOG_INFO,"Mail: Message sent to $ToName <$To>");
}
?>
Avatar billede _what_ Nybegynder
30. december 2005 - 09:14 #4
Ok lidt videre.... nu ser det således ud...

Hvis jeg ikke // den linie ud med dollar text så går siden bare i hvid...

Når den er fjernet bliver siden vist jeg kan udfylde form og trykker send også går siden i hvid og der bliver ikke sendt nogen mails :(

Håber der er nogen som kan hjælpe....

Koden som den er nu:
_______________________________________

<?
if($_POST[send]){
include ("mysql_connect.php");
mysql_connect($host,$user,$pass);
mysql_select_db($db);
$mail = mysql_query ("SELECT * FROM  mail_systen_test WHERE m_id >= '" . $_POST['fraid'] . "' AND m_id <= '" . $_POST['tilid'] . "'");
while($row = mysql_fetch_array($mail))
{
$udsendes = $_POST['udsendes'];
$udsendes = nl2br($udsendes);
$adresse = $row['m_email'];
$navne = $row['m_navn'];
$id = $row['m_id'];
//mail("$adresse","Nyhedsbrev fra Stof og Stil","$udsendes","From: Stof og Stil <maillist@eurostofogstil.dk>\nContent-type: text/html");


$From = "noreply@eurostofogstil.dk";
$Fromname = "Stof og Stil";
$Subject = "Stof og Stil nyhedsbrev";
$To = "$adresse";
$ToName ="$navn";
//$Text "Du skal have html mail laeser for at se denne mail";
$Html = "$udsendes";

function SendMail($From,$FromName,$To,$ToName,$Subject,$Text,$Html){
$OB="----=_OuterBoundary_000";
$IB="----=_InnerBoundery_001";
$Html=$Html?$Html:preg_replace("/\n/","{br}",$Text)
  or die("neither text nor html part present.");
$Text=$Text?$Text:"Sorry, but you need an html mailer to read this mail.";
$From or die("sender address missing");
$To or die("recipient address missing");

$headers ="MIME-Version: 1.0\r\n";
$headers.="From: ".$FromName." <".$From.">\n";
$headers.="To: ".$ToName." <".$To.">\n";
$headers.="Reply-To: ".$FromName." <".$From.">\n";
$headers.="X-Priority: 1\n";
$headers.="X-MSMail-Priority: High\n";
$headers.="X-Mailer: My PHP Mailer\n";
$headers.="Content-Type: multipart/mixed;\n\tboundary=\"".$OB."\"\n";

//Messages start with text/html alternatives in OB
$Msg ="This is a multi-part message in MIME format.\n";
$Msg.="\n--".$OB."\n";
$Msg.="Content-Type: multipart/alternative;\n\tboundary=\"".$IB."\"\n\n";

//plaintext section
$Msg.="\n--".$IB."\n";
$Msg.="Content-Type: text/plain;\n\tcharset=\"iso-8859-1\"\n";
$Msg.="Content-Transfer-Encoding: quoted-printable\n\n";
// plaintext goes here
$Msg.=$Text."\n\n";

// html section
$Msg.="\n--".$IB."\n";
$Msg.="Content-Type: text/html;\n\tcharset=\"iso-8859-1\"\n";
$Msg.="Content-Transfer-Encoding: base64\n\n";
// html goes here
$Msg.=chunk_split(base64_encode($Html))."\n\n";

// end of IB
$Msg.="\n--".$IB."--\n";

// attachments
if($AttmFiles){
  foreach($AttmFiles as $AttmFile){
  $patharray = explode ("/", $AttmFile);
  $FileName=$patharray[count($patharray)-1];
  $Msg.= "\n--".$OB."\n";
  $Msg.="Content-Type: application/octetstream;\n\tname=\"".$FileName."\"\n";
  $Msg.="Content-Transfer-Encoding: base64\n";
  $Msg.="Content-Disposition: attachment;\n\tfilename=\"".$FileName."\"\n\n";
       
  $Msg.=$FileContent;
  $Msg.="\n\n";
  }
}

//message ends
$Msg.="\n--".$OB."--\n";
mail("$To","$Subject","$Msg","$headers"); 
//syslog(LOG_INFO,"Mail: Message sent to $ToName <$To>");
}

}
}

?>
Avatar billede _what_ Nybegynder
30. december 2005 - 10:53 #5
Ok fandt den dumme fejl med dollar text :)

Nu bliver siden vist fint men når jeg udfylder felter og trykker send bliver der ikke afsendt nogen mails.

Fejlen må altså være et sted i selve funktionen eller at den ikke for det info den skal bruge.

Håber virkelig der er nogen som kan hjælpe...
Avatar billede fixxxer Nybegynder
30. december 2005 - 11:14 #6
Jeg kan se at der ikke er noget sted i dit script at du rent faktisk kalder SendMail() funktionen..

Umiddelbart tror jeg ikke at der er mere i det end følgende:
 
function SendMail($From,$FromName,$To,$ToName,$Subject,$Text,$Html){
$OB="----=_OuterBoundary_000";
$IB="----=_InnerBoundery_001";
$Html=$Html?$Html:preg_replace("/\n/","{br}",$Text)
  or die("neither text nor html part present.");
$Text=$Text?$Text:"Sorry, but you need an html mailer to read this mail.";
$From or die("sender address missing");
$To or die("recipient address missing");

$headers ="MIME-Version: 1.0\r\n";
$headers.="From: ".$FromName." <".$From.">\n";
$headers.="To: ".$ToName." <".$To.">\n";
$headers.="Reply-To: ".$FromName." <".$From.">\n";
$headers.="X-Priority: 1\n";
$headers.="X-MSMail-Priority: High\n";
$headers.="X-Mailer: My PHP Mailer\n";
$headers.="Content-Type: multipart/mixed;\n\tboundary=\"".$OB."\"\n";

//Messages start with text/html alternatives in OB
$Msg ="This is a multi-part message in MIME format.\n";
$Msg.="\n--".$OB."\n";
$Msg.="Content-Type: multipart/alternative;\n\tboundary=\"".$IB."\"\n\n";

//plaintext section
$Msg.="\n--".$IB."\n";
$Msg.="Content-Type: text/plain;\n\tcharset=\"iso-8859-1\"\n";
$Msg.="Content-Transfer-Encoding: quoted-printable\n\n";
// plaintext goes here
$Msg.=$Text."\n\n";

// html section
$Msg.="\n--".$IB."\n";
$Msg.="Content-Type: text/html;\n\tcharset=\"iso-8859-1\"\n";
$Msg.="Content-Transfer-Encoding: base64\n\n";
// html goes here
$Msg.=chunk_split(base64_encode($Html))."\n\n";

// end of IB
$Msg.="\n--".$IB."--\n";

// attachments
if($AttmFiles){
  foreach($AttmFiles as $AttmFile){
  $patharray = explode ("/", $AttmFile);
  $FileName=$patharray[count($patharray)-1];
  $Msg.= "\n--".$OB."\n";
  $Msg.="Content-Type: application/octetstream;\n\tname=\"".$FileName."\"\n";
  $Msg.="Content-Transfer-Encoding: base64\n";
  $Msg.="Content-Disposition: attachment;\n\tfilename=\"".$FileName."\"\n\n";
     
  $Msg.=$FileContent;
  $Msg.="\n\n";
  }
}

//message ends
$Msg.="\n--".$OB."--\n";
mail("$To","$Subject","$Msg","$headers");
//syslog(LOG_INFO,"Mail: Message sent to $ToName <$To>");
}

$mail = mysql_query ("SELECT * FROM  mail_systen_test WHERE m_id >= '" . $_POST['fraid'] . "' AND m_id <= '" . $_POST['tilid'] . "'");
while($row = mysql_fetch_array($mail))
{
    // hent de oplysninger der skal sendes

    SendMail($afsenderMail, $afsenderNavn, $modtagerMail, $modtagerNavn, $emne, $tekstMail, $HTMLMail);
}
Avatar billede _what_ Nybegynder
16. marts 2006 - 15:01 #7
lukket
Avatar billede fixxxer Nybegynder
16. marts 2006 - 17:59 #8
Forsøgte du dig med mit eksempel?
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

IT-JOB

Politiets Efterretningstjeneste

IT-løsningsarkitekt i PET

Capgemini Danmark A/S

AI/Data Engineer

Erhvervshus Hovedstaden S/I

Erfaren IT- og AI-specialist

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Sektionschef for Facility Management til Forsvarets nye Digital Backbone