HTML / PHP Mail mit Anhang, der als Text und nicht als HTML angezeigt wird

L. Pillot

Ich habe dieses Tutorial befolgt (es ist auf Französisch, aber Sie können den Code überprüfen): https://openclassrooms.com/courses/e-mail-envoyer-un-e-mail-en-php

Im ersten Teil (Senden einer einfachen E-Mail) hatte ich keine Probleme: Ich erhielt eine E-Mail in beiden Formaten (Klartext und HTML).

Aber als ich zum zweiten Teil überging (der gesendeten Mail eine angehängte Datei hinzufügen), hatte ich Probleme. Ich habe das angehängte PDF erhalten, aber die Mail wird nur in Text gelesen, nicht in HTML. Welches ist ein Problem für mich. Und ich finde es störend.

Ich habe im Internet nachgesehen und festgestellt, dass es andere Möglichkeiten gibt (Bibliotheken und ähnliches zu verwenden), aber ich möchte es irgendwie nicht. Versteh mich nicht falsch, ich bin normalerweise bestrebt, einfachere Methoden zu verwenden, die funktionieren, und ich mag es nicht, das Rad neu zu erfinden, aber hier sind meine Gründe: - Ich möchte meinen CTO nicht kontaktieren, um Bibliotheken zu implementieren oder Neue Funktionen für unseren Server - Ich weiß nicht, ob bereits Bibliotheken oder Erweiterungen installiert sind (ich bin seit 4 Monaten hier, habe aber andere Aufgaben als das Codieren ausgeführt). - Jetzt ist es persönlich, ich möchte wissen, warum es nicht funktioniert (auch wenn es wahrscheinlich ein dummer Fehler von mir ist)

Der fragliche Code:

if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // On filtre les serveurs qui rencontrent des bogues.
{
    $passage_ligne = "\r\n";
}
else
{
    $passage_ligne = "\n";
}

//=====Déclaration des messages au format texte et au format HTML.
$message_txt = "my text, nothing to see here";

$message_html = "my text in html, nothing to see here";
//==========

//=====Création de la boundary
$boundary = "-----=".md5(rand());
$boundary_alt = "-----=".md5(rand());


//==========

//=====Définition du sujet.
$sujet = utf8_decode("My subject");
//=========

//=====Création du header de l'e-mail.
$header = "From: \"Mail adress\"<[email protected]>".$passage_ligne;
$header.= "Reply-to: \"Mail adress\" <[email protected]>".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
//==========

//=====Création du message.
$message = $passage_ligne."--".$boundary.$passage_ligne;

$message.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary_alt\"".$passage_ligne;

$message.= $passage_ligne."--".$boundary_alt.$passage_ligne;

//=====Ajout du message au format texte.
$message.= "Content-Type: text/plain; charset=\"UTF8\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_txt.$passage_ligne;
//==========

$message.= $passage_ligne."--".$boundary_alt."--".$passage_ligne;

//=====Ajout du message au format HTML
$message.= "Content-Type: text/html; charset=\"UTF8\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_html.$passage_ligne;
//==========

//=====On ferme la boundary alternative.

$message.= $passage_ligne."--".$boundary_alt."--".$passage_ligne;

//==========


// AJOUT DE L'EBOOK AU FORMAT PDF
$file_name = "myfile.pdf";
$file_type = filetype($file_name);
$file_size = filesize($file_name);

$fichier   = fopen($file_name, "r");   //on ouvre le fichier en lecture seule.
$attachement = fread($fichier, $file_size); //on lit l'ensemble du fichier avec la fonction fread.
$attachement = chunk_split(base64_encode($attachement));
fclose($fichier); //on ferme le fichier.

$message.= $passage_ligne."--".$boundary.$passage_ligne;

$message.= "Content-Type: ".$file_type."; name=".$file_name.$passage_ligne;
$message.= "Content-Transfer-Encoding: base64".$passage_ligne;
$message.= "Content-Disposition: attachment; filename=".$file_name.$passage_ligne.$passage_ligne;

$message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne;

$message.= $passage_ligne."--".$boundary."--".$passage_ligne;


//=====Envoi de l'e-mail.
if(mail($mail,$sujet,$message,$header)) echo "Mail correctement envoyé à l'adresse ".$mail.".";
    else echo "Le mail n'a pas pu être envoyé à l'adresse ".$mail.".";
//==========

Also hier ist der Code. Ich habe auf anderen Websites nachgesehen, mein Code sollte funktionieren, aber immer noch nicht. Nach ein paar Stunden Arbeit und der Geburt kleiner Kopfschmerzen lege ich mein Schicksal auf deine Hände. Vielen Dank im Voraus und einen schönen Tag.

PS: Wie Sie vermutet haben, ist Englisch nicht meine Muttersprache, daher verstehe ich möglicherweise nicht alles in Ihren Antworten!

Arnial

In Zeile 47 ist ein Fehler aufgetreten (z. B. Zeile vor dem Senden von Text / HTML).

Aktuelle Version

$message.= $passage_ligne."--".$boundary_alt."--".$passage_ligne;

Sollte sein

$message.= $passage_ligne."--".$boundary_alt.$passage_ligne;

Grund --$boundary_alt--wird einen multipart/alternativeTeil der E-Mail schließen. Ihr HTML-Teil wird ignoriert. In Zeile 47 müssen Sie nur das Ende als text/plainTeil und nicht das Ganze angebenmultipart/alternative

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

HTML-Mail mit vb net wird als einfacher Text angezeigt und Anhänge werden ebenfalls ignoriert

PHP-Echo mit HTML-Markup, das kein HTML rendert und als Klartext angezeigt wird

Laravel: Nehmen Sie HTML aus der Ansicht und senden Sie es als E-Mail-Anhang

Beim Testen der Textansicht wird Text als HTML angezeigt

HTML in PHP wird in E-Mails als einfacher Text angezeigt

So senden Sie eine E-Mail mit der clientseitigen Google Mail-API, die HTML-Inhalt und ein Bild als Anhang enthält

UIWebView HTML wird als Text angezeigt

Text mit Bash-Mail senden, welcher E-Mail-Client wird als Text angezeigt und angezeigt?

Outlook zeigt ein Bild als Anhang an, auf das im HTML-Body der E-Mail verwiesen wird

Warum wird mit .after( gesetzter Text nicht als HTML gerendert?

Der PDF-Anhang wird als zufälliger Text im Hauptteil angezeigt

Renderbereiche innerhalb des Pre-Tags (im HTML-Code, der dem Benutzer nicht als Text angezeigt wird)

HTML-generierter String wird nicht als HTML angezeigt

Vue - V-HTML wird nicht als HTML angezeigt

<a> umschließt die Spanne nicht und wird als Text angezeigt

PHP - Variablenwert wird nicht als HTML gedruckt

html2canvas und jsPDF: Generiertes PDF als E-Mail-Anhang senden

AJAX-HTML-Tags werden bei der Validierung NICHT als HTML-Tags, sondern als normaler Text angezeigt

Text wird in einem modalen Formular nicht als HTML-Eingabedatum angezeigt

MIME- Senden einer E-Mail mit einer HTML-Datei als Anhang?

Senden von Bildern als Inline-Anhang in einer HTML-E-Mail-Vorlage mit Django

index.html wird nicht als Standardseite angezeigt

Beim Öffnen mit Google Chrome wird HTML-Code als Text angezeigt

PHP-HTML-Mail wird nicht in HTML angezeigt

Wie füge ich Bilder als Anhang zu PHP HTML Mail hinzu?

mysql gespeicherter Wert, der als rohes HTML in vue durch php angezeigt wird

Der Formularerfolg wird nicht als erfolgreich angezeigt

Rails ActionMailer - Durch das Anhängen einer Textdatei wird der E-Mail-Text als Anhang gesendet

Benutzerdefinierte Variable wird als 48 und nicht als 0 angezeigt

TOP Liste

  1. 1

    So legen Sie mit dem Interface Builder unterschiedliche führende Speicherplätze für unterschiedliche Geräte fest

  2. 2

    Fügen Sie eine weitere Schaltfläche zu gwt Suggest Box hinzu

  3. 3

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  4. 4

    Wie kann ich in SCSS mehrere Klassen zu einer einzigen kombinieren?

  5. 5

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  6. 6

    Speichern Sie ein MPAndroidChart-Diagramm in einem Bild, ohne es in einer Aktivität anzuzeigen

  7. 7

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  8. 8

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  9. 9

    Eclipse Oxygen - Projekte verschwinden

  10. 10

    Wie wählt man Unterschiede mit drei Tabellen aus?

  11. 11

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  12. 12

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  13. 13

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  14. 14

    Wie kann ich den Kaskadenmodus global einstellen?

  15. 15

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  16. 16

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  17. 17

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  18. 18

    Was ist schneller: SUM über NULL oder über 0?

  19. 19

    Wie kann ich eine verschachtelte Schleife mit lapply in R ersetzen?

  20. 20

    Kann ich ein Tkinter-Canvas erstellen, das mehrere Zeilen in einem Text-Widget umfasst?

  21. 21

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

heißlabel

Archiv