Avatar billede BTEngineer Novice
08. august 2006 - 13:55 Der er 18 kommentarer og
1 løsning

Mail funktion

Hej.

Jeg vil gå direkte til sagen..
- Hvordan bruger man HTML i en mail funktion?

I nogle mails vil jeg gerne sende banners ud osv..
Har et nyhedsbrev med omkring 5000 tilmeldinger, jeg benytter bare en ganske normal mail funktion mail();

mail("$modtager", "$emne", "$besked", "From: min@side.dk");

Brevet bliver skrevet i en form hvor det så bliver postet og så bliver inputet smidt ind i mail funktioner og sendes.

Tak på forhånd :-)

// Henrik
Avatar billede dejbjerg Nybegynder
08. august 2006 - 15:44 #1
$besked = '<p>Tryk på linket for at besøge Google</p><br />';
$besked .= '<a href="http://www.google.dk">Google</a>';

osv.
Avatar billede BTEngineer Novice
08. august 2006 - 16:14 #2
Jeg mener at man skulle kunne skrive HTML i boksen.. altså i textarea feltet.. og så det træder i kræft i mailen.
Avatar billede thiesens Nybegynder
08. august 2006 - 19:30 #3
du kan bruge en online-editor til at generere dit html-indhold, som FCKeditor. Den kan udskifte dit textarea til at kunne generere html, og udskrive det i variablen $besked... ellers kan du skrive det i textarea'et som html.
Avatar billede BTEngineer Novice
08. august 2006 - 19:38 #4
Aner ikke hvad FCKeditor er..
Du bliver nød til at hoste op med nogle flere detaljer ;-)
Avatar billede thiesens Nybegynder
08. august 2006 - 20:05 #5
du kan læse lidt om det her... http://www.fckeditor.net ... Jeg er ikke selv nogen haj til php, og jeg kunne dog få det til at virke, så jeg tror at alle kan ;-)
Avatar billede thiesens Nybegynder
08. august 2006 - 20:07 #6
Det afhænger af hvor meget og hvor kompliceret HTML du skal lave, om jeg ville bruge FCKeditor el lign. eller om det skulle være rigeligt bare at skrive HTML'en selv
Avatar billede thiesens Nybegynder
08. august 2006 - 20:34 #7
efter lige at have gennemlæst tråden har jeg "indset" ;-) at du bruger mail() funktionen i php... med den kan du jo ikke sende html.... det nemmeste hvis du ikke skal ud i en masse kode-halløj er at bruge phpmailer... ----> http://phpmailer.sourceforge.net/ sorry hvis mine andre kommentarer har forvirret dig
Avatar billede BTEngineer Novice
09. august 2006 - 09:40 #8
Jeg ved ikke om det er nødvendigt at bruge phpmailer, har aldrig hørt om funktionen før.. og fatter heller ikke så meget af den ;-(.

Jeg forstår godt det med at tilføje billederne osv. i nedenstående script, men det med SMTP server osv. det er jeg ikke helt med på..

Jeg skal ikke tilføje billeder i mailen, jeg skal bare kunne bruge HTML, hvor et evt. banner så vises, f.eks.:

<a href="http://eksperten.dk">
<img src="banner.jpg" border="0">
</a>

Sådan noget enkelt HTML snakker vi om..


Går ud fra det var dette script du mente: ¨

$mail = new PHPMailer();

$mail->IsSMTP();                                     // send via SMTP
$mail->Host    = "smtp1.site.com;smtp2.site.com";     // SMTP servers
$mail->SMTPAuth = true;    // turn on SMTP authentication
$mail->Username = "jswan";  // SMTP username
$mail->Password = "secret"; // SMTP password

$mail->From    = "from@email.com";
$mail->FromName = "Mailer";
$mail->AddAddress("josh@site.com","Josh Adams");
$mail->AddAddress("ellen@site.com");              // optional name
$mail->AddReplyTo("info@site.com","Information");

$mail->WordWrap = 50;                              // set word wrap
$mail->AddAttachment("/var/tmp/file.tar.gz");      // attachment
$mail->AddAttachment("/tmp/image.jpg", "new.jpg");
$mail->IsHTML(true);                              // send as HTML

$mail->Subject  =  "Here is the subject";
$mail->Body    =  "This is the <b>HTML body</b>";
$mail->AltBody  =  "This is the text-only body";

if(!$mail->Send())
{
  echo "Message was not sent <p>";
  echo "Mailer Error: " . $mail->ErrorInfo;
  exit;
}

echo "Message has been sent";
Avatar billede 3xm Nybegynder
09. august 2006 - 16:36 #9
Prøv at se eksempel 4 i PHP's egen dokumentation af mail()-funktionen: http://dk2.php.net/manual/en/function.mail.php

=)
Avatar billede BTEngineer Novice
09. august 2006 - 19:10 #10
3xm ->
Nu begynder det at ligne noget.

Har prøvet følgende:

        if(!get_magic_quotes_gpc()) {
            $besked = addslashes($_POST[besked]);
        }
   
    $hent_usersc = mysql_query("SELECT * FROM brugere") or die(mysql_error());
    while($visc = mysql_fetch_array($hent_usersc)) {
   
        $emne       = $_POST[emne];
        $navn       = ucfirst($visc[brugernavn]);
        $modtager = $visc[email];
        $besked  = $_POST[besked];
       
        $headers  = 'MIME-Version: 1.0' . "\r\n";
        $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
        $headers .= 'From: <nyhedsbrev@specks.dk>' . "\r\n";
       
        mail($modtager, $emne, $besked, $headers);

        $antal = mysql_num_rows($hent_usersc);
    }

Det virker desværre ikke helt, mailen bliver sendt, men htmlen fungere ikke rigtig i mailen man modtager. Det der skal være et banner er der slet ikke, (det er et banner fra partner-ads), så der skal ikke tilføjes billeder til mailen, så er der også et link man selvfølgelig skulle kunne trykke på, men det kan man ikke, det er dog markeret med en blå farve. Og så til selve teksten, den står ikke så godt, den understøtter ikke rigtig linjerne, ved ikke om jeg skal bruge nl2br() eller sådan noget, kan du ikke prøve at fikse scriptet lidt :-) ?
Avatar billede BTEngineer Novice
11. august 2006 - 10:56 #11
Er der nogen der kan hjælpe?
Eller er i allesammen gået kold?
Avatar billede dotcom1 Nybegynder
11. august 2006 - 10:59 #12
Hvad med denne? http://www.notonebit.com/projects/mailinglist/ Så behøver du ikke opfinde den dybe tallerken to gange... :-)
Avatar billede BTEngineer Novice
11. august 2006 - 13:58 #13
Ellers tak, jeg har allerede brugt lang tid på at lave systemet, så vil ikke bare skrotte det ;-)
Avatar billede 3xm Nybegynder
11. august 2006 - 22:40 #14
det er lidt svært at sige hvad der er galt når jeg ikke ved hvad $besked indeholder. har du mulighed for at poste dens indhold herinde?

men jeg kan prøve at svare på dine ting alligevel:

linjeskift skal selvfølgelig skrives som <br /> da det er html.

en mulig grund til at du ikke kan se billedet er at den e-mail-klient du ser resultatet i ikke henter eksterne elementer ind. det er der mange postprogrammer der ikke gør for at beskytte mod nogle spamting. har du ikke mulighed for at se kilden til e-mailen og kigge efter om der ikke er et <img>-tag?

hvad der sker med linket skal jeg ikke kunne sige uden at vide hvad $besked indeholder.

=)
Avatar billede BTEngineer Novice
12. august 2006 - 09:02 #15
Hmm, det er da træls man skal til at skrive <br /> hver gang, er der ikke en anden metode :-) ?

Okay, her er indeholdet:

<a href="http://www.partner-ads.com/dk/klikbanner.php?partnerid=gffd" target=_blank>
<img src="http://www.partner-ads.com/dk/visbanner.php?partnerid=bfdb" border=0></a>

tekst tekst tekst,
tekst tekst tekst,,,
tekst tekst tekst..
TEST PÅ TYK FREMHÆVEDE TEKST <B>TEST</B>

...


......
<b>Tekstlink:</b>
<a href="http://www.partner-ads.com/dk/klikbanner.php?partnerid=gfhfg">tesst</a>
Avatar billede 3xm Nybegynder
13. august 2006 - 19:54 #16
nej, der findes ikke en anden metode til linjeskift i html. men du har ret i at det ret nemt kan klares med nl2br()

ellers ser det jo nogenlunde fornuftigt ud. hvilken e-mail-klient bruger du siden den ikke vil lade linket fungere som link?

=)
Avatar billede BTEngineer Novice
13. august 2006 - 21:47 #17
hotmail, banneret virkede heller ikke, det blev slet ikke vist.
Avatar billede 3xm Nybegynder
16. august 2006 - 22:05 #18
jeg vil gerne vædde 100 kr. på at det er fordi hotmail ikke viser ekstern grafik i html-e-mails.

=)
Avatar billede BTEngineer Novice
26. februar 2007 - 16:36 #19
lukkes, kom ikke til at virke. :-(
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