it-swarm.com.de

HTML per E-Mail über PHP senden?

Wie kann ich mit PHP eine E-Mail im HTML-Format mit Bildern senden? Ich möchte eine Seite mit einigen Einstellungen und einer HTML-Ausgabe, die per E-Mail an eine Adresse gesendet wird. Was sollte ich tun? Das Hauptproblem ist, Dateien anzuhängen. Wie kann ich das tun?

57
Abadis

Es ist ziemlich einfach, lass die Bilder auf dem Server und sende ihnen das PHP + CSS ...

$to = '[email protected]';

$subject = 'Website Change Reqest';

$headers = "From: " . strip_tags($_POST['req-email']) . "\r\n";
$headers .= "Reply-To: ". strip_tags($_POST['req-email']) . "\r\n";
$headers .= "CC: [email protected]\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=UTF-8\r\n";

$message = '<p><strong>This is strong text</strong> while this is not.</p>';


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

Diese Zeile teilt dem Mailer und dem Empfänger mit, dass die E-Mail (hoffentlich) wohlgeformten HTML-Code enthält, den er interpretieren muss:

$headers .= "Content-Type: text/html; charset=UTF-8\r\n";

Hier ist der Link, den ich bekommen habe .. ( link ... )

Sie werden jedoch Sicherheit brauchen ...

118
Chris

Sie müssen Ihren HTML-Code mit dem absoluten Pfad für Bilder verwenden. Mit "Absoluter Pfad" müssen Sie die Bilder auf einen Server hochladen und im Attribut "src" der Bilder den direkten Pfad wie folgt angeben <img src="http://yourdomain.com/images/example.jpg">.

Unten ist der PHP Code für Ihre Referenz: - Er stammt aus http://www.php.net/manual/en/function.mail.php

<?php
// multiple recipients
$to  = '[email protected]' . ', '; // note the comma
$to .= '[email protected]';

// subject
$subject = 'Birthday Reminders for August';

// message
$message = '
  <p>Here are the birthdays upcoming in August!</p>
';

// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";

// Additional headers
$headers .= 'To: Mary <[email protected]>, Kelly <[email protected]>' . "\r\n";
$headers .= 'From: Birthday Reminder <[email protected]>' . "\r\n";


// Mail it
mail($to, $subject, $message, $headers);
?>
17
Subhajit

Ich habe diesen Code und er läuft perfekt für meine Site

  public function forgotpassword($pass,$name,$to)
    {
        $body ="<table  width=100% border=0><tr><td>";
        $body .= "<img width=200 src='";
        $body .= $this->imageUrl();
        $body .="'></img></td><td style=position:absolute;left:350;top:60;><h2><font color = #346699>PMS Pvt Ltd.</font><h2></td></tr>";
        $body .='<tr><td colspan=2><br/><br/><br/><strong>Dear '.$name.',</strong></td></tr>';
        $body .= '<tr><td colspan=2><br/><font size=3>As per Your request we send Your Password.</font><br/><br/>Password is : <b>'.$pass.'</b></td></tr>';
        $body .= '<tr><td colspan=2><br/>If you have any questions, please feel free to contact us at:<br/><a href="mailto:[email protected]" target="_blank">[email protected]</a></td></tr>';
        $body .= '<tr><td colspan=2><br/><br/>Best regards,<br>The PMS Team.</td></tr></table>';
        $subject = "Forgot Password";
        $this->sendmail($body,$to,$subject);
    }

mail-Funktion

   function sendmail($body,$to,$subject)
        {
            //require_once 'init.php';


            $from='[email protected]';      
            $headersfrom='';
            $headersfrom .= 'MIME-Version: 1.0' . "\r\n";
            $headersfrom .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
            $headersfrom .= 'From: '.$from.' '. "\r\n";
            mail($to,$subject,$body,$headersfrom);
        }

bild-URL-Funktion wird verwendet, wenn Sie das Bild ändern möchten, das Sie in nur einer Funktion geändert haben. Ich habe viele E-Mail-Funktionen, wie Passwort vergessen.

function imageUrl()
    {
        return "http://".$_SERVER['SERVER_NAME'].substr($_SERVER['SCRIPT_NAME'], 0, strrpos($_SERVER['SCRIPT_NAME'], "/")+1)."images/capacity.jpg";
    }
9
Jalpesh Patel

Das Versenden einer HTML-E-Mail unterscheidet sich nicht wesentlich vom Versenden von normalen E-Mails mit PHP. Was hinzugefügt werden muss, ist der Inhaltstyp neben dem Header-Parameter der Funktion php mail (). Hier ist ein Beispiel.

<?php
    $to = "[email protected]";
    $subject = "HTML email";
    $message = "
    <html>
    <head>
    <title>HTML email</title>
    </head>
    <body>
    <p>A table as email</p>
    <table>
    <tr>
    <th>Firstname</th>
    <th>Lastname</th>
    </tr>
    <tr>
    <td>Fname</td>
    <td>Sname</td>
    </tr>
    </table>
    </body>
    </html>
    ";
    // Always set content-type when sending HTML email
    $headers = "MIME-Version: 1.0" . "\r\n";
    $headers .= "Content-type:text/html;charset=UTF-8" . "\r\b";
    $headers .= 'From: name' . "\r\n";
    mail($to,$subject,$message,$headers);
?>

Sie können auch hier überprüfen, um genauere Erklärungen von w3schools zu erhalten

5
Joseph

Sie können die E-Mail mit HTML-Inhalten ganz einfach über PHP senden. Verwenden Sie das folgende Skript.

<?php
$to = '[email protected]';
$subject = "Send HTML Email Using PHP";

$htmlContent = '
<html>
<body>
    <h1>Send HTML Email Using PHP</h1>
    <p>This is a HTMl email using PHP by CodexWorld</p>
</body>
</html>';

// Set content-type header for sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";

// Additional headers
$headers .= 'From: CodexWorld<[email protected]>' . "\r\n";
$headers .= 'Cc: [email protected]' . "\r\n";
$headers .= 'Bcc: [email protected]' . "\r\n";

// Send email
if(mail($to,$subject,$htmlContent,$headers)):
    $successMsg = 'Email has sent successfully.';
else:
    $errorMsg = 'Email sending fail.';
endif;
?>

Quellcode und Live-Demo finden Sie hier - Schöne HTML-E-Mail mit PHP senden

3
JoyGuru

Am einfachsten ist es wahrscheinlich, einfach Zend Framework oder eines der anderen Frameworks wie CakePHP oder Symphony zu verwenden.

Sie können dies auch mit der Standardfunktion mail tun, benötigen jedoch etwas mehr Kenntnisse zum Anhängen von Bildern.

Alternativ können Sie die Bilder auch einfach auf einem Server hosten, anstatt sie anzuhängen. Das Senden von HTML-Mails ist in der Funktionsdokumentation mail dokumentiert.

2
Martijn

Verwenden Sie PHPMailer,

Um HTML-Mails zu versenden, müssen Sie nur $ mail-> isHTML () setzen, und Sie können Ihren Körper mit HTML-Tags setzen

Hier ist ein gut geschriebenes Tutorial:

rohitashv.wordpress.com/2013/01/19/how-to-send-mail-using-php/

1

Der Trick besteht darin, die Inhalts-ID des Image-Mime-Teils zu kennen, wenn der HTML-Body-Teil erstellt wird. Es läuft darauf hinaus, das img-Tag zu erstellen

https://github.com/horde/horde/blob/master/kronolith/lib/Kronolith.php

Schauen Sie sich die Funktion buildMimeMessage für ein funktionierendes Beispiel an.

1
Ralf Lang