Avatar billede way3000 Nybegynder
11. februar 2008 - 13:42 Der er 17 kommentarer og
1 løsning

Sende html mail med php

hejsa. Er der nogen af jer der kender en måde hvorpå jeg kan sende en mail fra et php script som html mail ?

dvs. hvor jeg kan bruge <br> eller /n som linieskift?

Jeg får nemlig kun en masse tekst uden formatering med. og linkene står som ren html kode.

Det skal være en faktura mail. Jeg har en variabel der indeholder alt teksten der skal i mailen formateret og det hele. jeg skal bare kunne sende den.

tusind tak for hjælp (ps. jeg tester mailsene på en Gmail konto)
Avatar billede michael_stim Ekspert
11. februar 2008 - 13:49 #1
www.php.net/mail

Uden at have checket linket.
Avatar billede limemedia Nybegynder
11. februar 2008 - 13:53 #2
Jeg har med held brugt phpmailer, vi sender mere end 80,000 html mails gennem den hver dag
http://sourceforge.net/project/showfiles.php?group_id=26031
Avatar billede fixbabe Nybegynder
11. februar 2008 - 14:34 #3
$indhold = '<b>her er indholdet af din email</b>';

    $headers = "From: afsender@email.dk\r\n" .
      'X-Mailer: PHP/' . phpversion() . "\r\n" .
      "MIME-Version: 1.0\r\n" .
      "Content-Type: text/html; charset=iso-8859-1\r\n" .
      "Content-Transfer-Encoding: 8bit\r\n\r\n"; 

    mail("modtager@email.dk", "dit emne", $indhold, $headers);
Avatar billede way3000 Nybegynder
11. februar 2008 - 19:32 #4
Hejsa. sorry jeg først svarer nu, men har været ude :) vil tjekke ficbabe's indskud :) kikke på limemedia's (men er sjovere at gøre den slags selv end at hente fra andre) og php.net linket har jeg tjekket. syntes ikke jeg fandt noget jeg kunne bruge.
Avatar billede michael_stim Ekspert
11. februar 2008 - 21:01 #5
Hvis du ikke kunne finde noget på php.net, kommer du aldrig til at finde noget. php.net er php-bibelen, så du kan lige så godt vænne dig til at bruge den, hvis du vil kode i php ;o)Der er alt dokumentation plus en masse fine eksempler.
Avatar billede fixbabe Nybegynder
12. februar 2008 - 10:49 #6
Det han nok mener et et konkret eksempel, det tog også mig en del tid før jeg fandt ud af at læse php.net korrekt
Avatar billede michael_stim Ekspert
12. februar 2008 - 10:51 #7
Der er også konkrete eksempler ;o)
Avatar billede michael_stim Ekspert
12. februar 2008 - 10:54 #8
Her er der en funktion fra www.php.net/mail (OBS ikke testet eller læst igennem, bare et eksempel):

<?php
function send_mail($to, $body, $subject, $fromaddress, $fromname, $attachments=false)
{
  $eol="\r\n";
  $mime_boundary=md5(time());

  # Common Headers
  $headers .= "From: ".$fromname."<".$fromaddress.">".$eol;
  $headers .= "Reply-To: ".$fromname."<".$fromaddress.">".$eol;
  $headers .= "Return-Path: ".$fromname."<".$fromaddress.">".$eol;    // these two to set reply address
  $headers .= "Message-ID: <".time()."-".$fromaddress.">".$eol;
  $headers .= "X-Mailer: PHP v".phpversion().$eol;          // These two to help avoid spam-filters

  # Boundry for marking the split & Multitype Headers
  $headers .= 'MIME-Version: 1.0'.$eol.$eol;
  $headers .= "Content-Type: multipart/mixed; boundary=\"".$mime_boundary."\"".$eol.$eol;

  # Open the first part of the mail
  $msg = "--".$mime_boundary.$eol;
 
  $htmlalt_mime_boundary = $mime_boundary."_htmlalt"; //we must define a different MIME boundary for this section
  # Setup for text OR html -
  $msg .= "Content-Type: multipart/alternative; boundary=\"".$htmlalt_mime_boundary."\"".$eol.$eol;

  # Text Version
  $msg .= "--".$htmlalt_mime_boundary.$eol;
  $msg .= "Content-Type: text/plain; charset=iso-8859-1".$eol;
  $msg .= "Content-Transfer-Encoding: 8bit".$eol.$eol;
  $msg .= strip_tags(str_replace("<br>", "\n", substr($body, (strpos($body, "<body>")+6)))).$eol.$eol;

  # HTML Version
  $msg .= "--".$htmlalt_mime_boundary.$eol;
  $msg .= "Content-Type: text/html; charset=iso-8859-1".$eol;
  $msg .= "Content-Transfer-Encoding: 8bit".$eol.$eol;
  $msg .= $body.$eol.$eol;

  //close the html/plain text alternate portion
  $msg .= "--".$htmlalt_mime_boundary."--".$eol.$eol;

  if ($attachments !== false)
  {
    for($i=0; $i < count($attachments); $i++)
    {
      if (is_file($attachments[$i]["file"]))
      { 
        # File for Attachment
        $file_name = substr($attachments[$i]["file"], (strrpos($attachments[$i]["file"], "/")+1));
       
        $handle=fopen($attachments[$i]["file"], 'rb');
        $f_contents=fread($handle, filesize($attachments[$i]["file"]));
        $f_contents=chunk_split(base64_encode($f_contents));    //Encode The Data For Transition using base64_encode();
        $f_type=filetype($attachments[$i]["file"]);
        fclose($handle);
       
        # Attachment
        $msg .= "--".$mime_boundary.$eol;
        $msg .= "Content-Type: ".$attachments[$i]["content_type"]."; name=\"".$file_name."\"".$eol;  // sometimes i have to send MS Word, use 'msword' instead of 'pdf'
        $msg .= "Content-Transfer-Encoding: base64".$eol;
        $msg .= "Content-Description: ".$file_name.$eol;
        $msg .= "Content-Disposition: attachment; filename=\"".$file_name."\"".$eol.$eol; // !! This line needs TWO end of lines !! IMPORTANT !!
        $msg .= $f_contents.$eol.$eol;
      }
    }
  }

  # Finished
  $msg .= "--".$mime_boundary."--".$eol.$eol;  // finish with two eol's for better security. see Injection.
 
  # SEND THE EMAIL
  ini_set(sendmail_from,$fromaddress);  // the INI lines are to force the From Address to be used !
  $mail_sent = mail($to, $subject, $msg, $headers);
 
  ini_restore(sendmail_from);
 
  return $mail_sent;
}
?>
Avatar billede way3000 Nybegynder
12. februar 2008 - 12:09 #9
Michael jeg forstår udemærket at bruge php.net. det er også min bibel. MEN jeg er ikke verdensmester til engelsk og det er mange derinde heller ikke, det resulterer i at tit er deres konkrete eksempler rodede og ikke til at finde ud af. den du kom med fylder desværre jo 500 gange så meget som eksemplet fixbabe kom med.
(syntes det bliver rodet når der ikke er nok //forklaringer med)

dit script der er ganske godt ingen tvivl, men jeg har desværre ingen brug for file attachments osv. skal bare kunne sende en html mail :)

målet var egenglit bare at lære hvordan man laver en alm. mail fra plain text til html i php.

Jeg kikker klart på det hele. ligenu har jeg bare totalt travlt med alting så får ikke kikket så meget som jeg gerne ville.

Tusind tak for alle svarene dog.

PS. jeg fandt ganske vist det script på php.net/mail men sprang det over da det var meget mere end jeg skulle bruge. nu kikker jeg lige en gang mere for at se om jeg kan snuppe det jeg skal bruge fra det.
Avatar billede fixbabe Nybegynder
12. februar 2008 - 16:02 #10
Fandt du en løsning på dit problem?
Avatar billede way3000 Nybegynder
16. februar 2008 - 16:00 #11
jeg arbejder stadig med jeres forslag. i kan bare kaste et svar op så skal i nok få points.
Avatar billede way3000 Nybegynder
17. februar 2008 - 13:52 #12
Jeg har kikket det hele igennem.

#3 virkede ikke
#2 phpmailer kræver at du har adgang til php.ini include folderen og da mit website er hostet hos one.com har jeg ikke mulighed for dette.
#8  Jeg forsøger stadig at få dette til at virke. Jeg bliver nød til at læse side op og side ned med mime og charset for at fatte det. men det begynder så småt at give mening.

tak for jeres hjælp. troede der var en nemmere måde i php. ex. at sætte mail() op til html med en function. men næ nej :P mail() er kun til plain text :(
Avatar billede way3000 Nybegynder
17. februar 2008 - 14:01 #13
Jeg er faldet over denne som jeg også vil prøve. (også fra php.net)

<?php

# -=-=-=- PHP FORM VARIABLES (add as many as you would like)

$name = $_POST["name"];
$email = $_POST["email"];
$invoicetotal = $_POST["invoicetotal"];

# -=-=-=- MIME BOUNDARY

$mime_boundary = "----Your_Company_Name----".md5(time());

# -=-=-=- MAIL HEADERS

$to = "$email";
$subject = "This text will display in the email's Subject Field";

$headers = "From: Our Company <company@ourcompany.com>\n";
$headers .= "Reply-To: Our Company <company@ourcompany.com>\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/alternative; boundary=\"$mime_boundary\"\n";

# -=-=-=- TEXT EMAIL PART

$message = "--$mime_boundary\n";
$message .= "Content-Type: text/plain; charset=UTF-8\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n";

$message .= "$name:\n\n";
$message .= "This email is to confirm that \"Our Company\" has received your order.\n";
$message .= "Please send payment of $invoicetotal to our company address.\n\n";
$message .= "Thank You.\n\n";

# -=-=-=- HTML EMAIL PART

$message .= "--$mime_boundary\n";
$message .= "Content-Type: text/html; charset=UTF-8\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n";

$message .= "<html>\n";
$message .= "<body style=\"font-family:Verdana, Verdana, Geneva, sans-serif; font-size:14px; color:#666666;\">\n";
$message .= "$name:<br>\n";
$message .= "<br>\n";
$message .= "This email is to confirm that \"Our Company\" has received your order.<br>\n";
$message .= "Please send payment of $invoicetotal to our company address.<br>\n\n";
$message .= "<br>\n";
$message .= "Thank You.<br>\n\n";
$message .= "</body>\n";
$message .= "</html>\n";

# -=-=-=- FINAL BOUNDARY

$message .= "--$mime_boundary--\n\n";

# -=-=-=- SEND MAIL

$mail_sent = @mail( $to, $subject, $message, $headers );
echo $mail_sent ? "Mail sent" : "Mail failed";

?>
Avatar billede fixbabe Nybegynder
17. februar 2008 - 15:44 #14
Min løsning virker perfekt, jeg sender flere hundrede html emails hver dag med det script.
Avatar billede way3000 Nybegynder
19. februar 2008 - 12:27 #15
Fixbabe. Det er sikkert sandt. men når jeg modtager mail på min gmail med det script kan jeg sidde og pille alle html tagsene ud. det kalder jeg ikke at virke perfekt.

Jeg siger jeg har fundet en løsning. smid et svar og få points og tak for hjælpen eller lad være.

Jeres scripts virker sikkert hos jer, men det skal først og fremmest virke hos mig før jeg kan bruge det til noget. det er meget vel mig der ikke kan finde ud af det men når jeg får html mails som plain text kan det ikke bruges. så skal det justeres.

Jeg kunne få det script jeg postede sidst til at virke, men ikke jeres. sorry jeg valgte det der virker for mig.

jeg siger igen. TAK for hjælpen og jeg mener det. det er rart at folk giver bud og hjælp herinde. det er lækkert men når i siger: mit script virker og mine mails er fyldte med tags, det kan jeg ikke bruge til noget.

smid et svar og få points for i har hjulpet mig meget mht. at få det til at køre. eller lad være hvis i er for sure på mig.
Avatar billede fixbabe Nybegynder
19. februar 2008 - 12:47 #16
Du piller html tags ud? Så er det fordi din gmail ikke kan læse html emails.
Avatar billede way3000 Nybegynder
21. februar 2008 - 00:15 #17
Jo det kan den sagtens. men når man får en mail med:

"Hej med dig<br>her er en mail<br>og et link <a href="addr">link</a>"

Det er en dårlig mail. men med det script jeg fandt der er der ingen problemer. så kan jeg se det jeg skal.
Avatar billede way3000 Nybegynder
27. februar 2013 - 16:06 #18
lukket
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