Uitroepteken in HTML Email

Ik heb moeite met het formatteren van een tabel in een HTML-e-mail. Er lijkt altijd een cel te zijn die niet de achtergrondkleur of rare witte spaties heeft.

Hier is de code (in php) -

 $subject.="

<table style=\"width:585px;\" ><tr><td style=\"padding:10px;background-color:#113797;color:white;\">New & Used Vehicles</td><td style=\"padding:10px;background-color:#113797;color:white;\">Term in Months</td><td style=\"padding:10px;background-color:#113797;color:white;\">APR* As Low As</td><td style=\"padding:10px;background-color:#113797;color:white;\">Monthly Payment Per $1000 Borrowed</td></tr>"; $result = mysql_query("SELECT * FROM rates WHERE ID>='32' AND ID <='39'"); while($row = mysql_fetch_array($result)) { $subject.= "<tr><td BGCOLOR=\"#e5f1ff\" style=\"padding:10px;color:black;\">" . $row['name'] . "</td>"; $subject.= "<td BGCOLOR=\"#e5f1ff\" style=\"padding:10px;\">" . $row['term'] . "</td>"; $subject.= "<td BGCOLOR=\"#e5f1ff\" style=\"padding:10px;\">" . $row['apr'] . "</td>"; $subject.= "<td BGCOLOR=\"#e5f1ff\" style=\"padding:10px;\">" . $row['per_1000'] . "</td></tr>"; } $subject.= "</table>";

Dus ik heb zowel CSS background als html geprobeerd en beide creëren iets dat er slecht uitziet. Ik heb ook doctypes geprobeerd.

Dit is hoe mijn mailcode eruit ziet.

    mail( "[email protected]", "$title2", "$subject" , "Content-type: text/html;\r\nFrom: [email protected]" );

Hier is hoe het eruitziet. Zie je de schurkenplaats?

Table that is messed up!

 <head></head><body>Check out the low rates.<table style="width:585px;" ><tr><td style="padding:10px;background-color:#113797;color:white;">New & Used Vehicles</td><td style="padding:10px;background-color:#113797;color:white;">Term in Months</td><td style="padding:10px;background-color:#113797;color:white;">APR* As Low As</td><td style="padding:10px;background-color:#113797;color:white;">Monthly Payment Per $1000 Borrowed</td></tr><tr><td bgcolor="#e5f1ff" style="padding:10px;color:black;height:100%;">2008 and NEWER Vehicle Purchases</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">Up to 72 Months</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">3.24%</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">$17.28</td></tr><tr><td bgcolor="#e5f1ff" style="padding:10px;color:black;height:100%;">2008 and NEWER Vehicle!
  Purchases</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">64 - 72 Months</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">4.29%</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">$15.69</td></tr><tr><td bgcolor="#e5f1ff" style="padding:10px;color:black;height:100%;">2007 and OLDER Vehicle Purchases</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">Up to 72 Months</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">5.49%</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">$18.20</td></tr><tr><td bgcolor="#e5f1ff" style="padding:10px;color:black;height:100%;">2007 and OLDER Vehicle Purchases</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">64 - 72 Months</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">5.99%</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">$16.46</td></tr><tr><td bgcolor="#e5f1ff" style="padding:10px;color:black;height:100%;">2011 & 2010 REFINANCES</td><td bgcolor=!
 "#e5f1ff" style="padding:10px;height:100%;">Up to 63 Months<td bg
color="#e5f1ff" style="padding:10px;height:100%;">4.99%</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">$18.08</td></tr><tr><td bgcolor="#e5f1ff" style="padding:10px;color:black;height:100%;">2011 & 2010 REFINANCES</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">64 - 72 Months</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">5.49%</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">$16.34</td></tr><tr><td bgcolor="#e5f1ff" style="padding:10px;color:black;height:100%;">2008 - 2009 REFINANCES</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">Up to 60 Months</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">5.99%</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">$19.33</td></tr><tr><td bgcolor="#e5f1ff" style="padding:10px;color:black;height:100%;">2007 & older Vehicle REFINANCE</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">Up to 60 Months</td><td bgcolor="#e5f1ff" style="padding:10px!
 ;height:100%;">6.99%</td><td bgcolor="#e5f1ff" style="padding:10px;height:100%;">$19.80</td></tr></table></body></html>
17
Gebruik HTML niet XHTML in e-mails. Dat is misschien niet genoeg om je probleem op te lossen, maar voorkomt veel andere problemen die je misschien tegenkomt.
toegevoegd de auteur hakre, de bron
Probeer, net als bij een experiment, de BGCOLOR-attributen met een lager omhulsel - het feit dat de tags
gesloten zijn, wijst erop dat u XHTML gebruikt en als dat het geval is, moet dit XML-geformatteerd zijn en daarom moeten attributen kleine letters zijn. Waarschijnlijk maakt het geen verschil, maar e-mail clients ZIJN eigenzinnig :)
toegevoegd de auteur CD001, de bron
... en vergeet niet om en tekens te coderen - er is een voor de hand liggende in Nieuwe en gebruikte voertuigen maar ze komen ook uit de database, dus je zou willen toevoegen enkele htmlspecialchars() daar.
toegevoegd de auteur CD001, de bron
In welke e-mailclient bekijkt u deze? In tegenstelling tot browsers lijken e-mailclients de rendering engines niet regelmatig bijgewerkt te hebben en kunnen ze allerlei rare eigenaardigheden veroorzaken - je doet behoorlijk wat de juiste dingen, maar ik heb gemerkt dat de meest betrouwbare opmaak voor HTML in e-mails is HTML 4 met ofwel geen of hoogstens inline CSS.
toegevoegd de auteur CD001, de bron
Kunt u de werkelijke html van uw e-mailprogramma plaatsen?
toegevoegd de auteur Sam, de bron
Ik merkte net om een ​​vreemde reden dat er een knal in mijn tafel zit. Vraag me af waarom die daar is.
toegevoegd de auteur Andrew Threadgill, de bron
Ik bekijk het in Outlook en ook Yahoo ... dezelfde problemen daar. Ik heb htmlspecialchars() toegepast, maar dat leek het niet op te lossen. Waar zou ik mijn doctype declareren als ik de e-mail verstuur?
toegevoegd de auteur Andrew Threadgill, de bron

4 antwoord

Ik haat het om mijn eigen vraag te beantwoorden, maar ik heb wel een oplossing voor dit probleem gevonden en hopelijk kan iemand deze oplossing gebruiken om zich te ontdoen van de hoofdpijn die dit veroorzaakt.

The issue is being caused by use of the mail() function. When I try to send the email, I have a long string of html code. IN FACT, TOO LONG! When I go past 78 characters a BANG! shows up and then jacks with my html or css. RFC 2822

De resolutie is om het in base-64 te veranderen, de gegevens te coderen of \ r \ n toe te voegen aan mijn lange regels html-code. Hoe dan ook lost het probleem op.

Bedankt voor de hulp iedereen!

27
toegevoegd
Kunt u een voorbeeldcode plakken? Ik kan niet begrijpen waar ik moet toevoegen \ n. Mijn $ -berichten zijn te lang en ik kom dezelfde kwestie tegen.
toegevoegd de auteur harishannam, de bron
U hoeft het niet te doen als u \ n wilt gebruiken.
toegevoegd de auteur Andrew Threadgill, de bron
Binnen uw $ berichten-variabele staan ​​overal 78 of meer tekens op één regel.
toegevoegd de auteur Andrew Threadgill, de bron
Als u de base-64-codering wilt doen, stelt u de "Content-Transfer-Encoding" in op "base64" en codeert u de berichtinhoud: chunk_split (base64_encode ($ message_content))
toegevoegd de auteur Woody, de bron
Ik had hetzelfde probleem en kon dit oplossen met alleen \ n aan het einde van de lange regels. Ik lees hier drupal.org/node/31524 dat e-mails na 998 tekens moeten worden verwijderd om te voorkomen dat kwestie. Bedankt voor het posten met uw antwoord!
toegevoegd de auteur Dan, de bron
@Andrew Threadgill - kom hetzelfde probleem tegen, hoe veranderde je de HTML-code in base-64-codering? Elke functie?
toegevoegd de auteur user2341103, de bron

Het lijkt erop dat er geen rendement is op de beledigende cellen Dus probeer hoogte toe te voegen: 100% voor ze zodat ze volledig gevuld zijn. U kunt dit oplossen door deze code aan te passen

<td style=\"padding:10px;background-color:#113797;color:white;\">

To

<td style=\"padding:10px;background-color:#113797;color:white;height:100%;\">

This should solve your problem.

3
toegevoegd
Tabelcellen zijn altijd de volledige hoogte van de rij die ze zijn en de volledige breedte van de bovenliggende kolom.
toegevoegd de auteur Marc B, de bron

Verwijder alle CSS-styling, veel e-mailvernieuwende engines slagen er niet in. Gebruik gewoon oud tafelontwerp.

Use blah instead of style color, use <table cellpadding="10"> instead of style padding, use bgcolor instead of style background-color.

Set bgcolor to whole TABLE, not TDs.

2
toegevoegd
Ja, dit werkt. Ik wist niet dat het zo gedoe was om CSS in een HTML-e-mail te hebben. De meeste plaatsen waar ik naar heb verwezen zei inline meestal goed.
toegevoegd de auteur Andrew Threadgill, de bron

Hier is een voorbeeld van het maken van een Base64 Encoded Email in:

    <?php 

$html = "
The quick brown fox jumped right over the lazy dog.


";

$to   = "[email protected]";
$cc   = "[email protected]";
$bcc  = "[email protected]";
$from = "[email protected]";

$subject  = "This is a MIME encoded email";
$boundary = str_replace(" ", "", date('l jS \of F Y h i s A'));
$newline  = "\r\n";

$headers = "From: $from$newline".
           "Cc: $cc$newline".
           "Bcc: $bcc$newline".
           "MIME-Version: 1.0$newline".
           "Content-Type: multipart/alternative;".
           "boundary = \"$boundary\"$newline$newline".
           "--$boundary$newline".
           "Content-Type: text/html; charset=ISO-8859-1$newline".
           "Content-Transfer-Encoding: base64$newline$newline";

$headers .= rtrim(chunk_split(base64_encode($html)));

mail($to,$subject,"",$headers);

?>

Ik vond deze code op de volgende site:

https://ctrlq.org/code/19840-base64-encoded-email

Als u uw e-mails instelt als Base64 Encoded, wordt de willekeurige '!' Verwijderd wordt toegevoegd aan e-mails.

2
toegevoegd
Geweldig, als je hulp nodig hebt kun je dit lezen: Hoe schrijf ik een goed antwoord?
toegevoegd de auteur Natalie Hedström, de bron
Hoewel de link die ik aanbied een oplossing voor de vraag is, is dit geen goed geschreven antwoord. U moet het meest relevante deel van de link toevoegen aan uw antwoord.
toegevoegd de auteur Natalie Hedström, de bron
Ok bedankt, ik zal mijn antwoord aanpassen
toegevoegd de auteur colinam1992, de bron
Ik heb een paar wijzigingen aangebracht
toegevoegd de auteur colinam1992, de bron