So zeigen Sie E-Mails in einer eckigen App an, wie sie in einem E-Mail-Client angezeigt wird

GhostMST

Ich versuche derzeit eine Web-App zu entwickeln, um dem Benutzer E-Mails anzuzeigen. Wichtig ist mir, dass die E-Mails wie in einem E-Mail-Client (zB gmail) angezeigt werden. Ich verwende die Gmail-API, um E-Mails in meine Datenbank zu importieren, dann bekomme ich die Nachrichtenteile aus den E-Mails in meine Winkel-App. Das Problem ist, dass ich HTML-E-Mails nicht mit dem richtigen Styling anzeigen kann. Es scheint, als würden HTML-Tags richtig verwendet, aber das ursprüngliche Styling scheint verloren zu sein

Ich verwende eckige 7 und Spring Boot. Um die E-Mails zu sammeln, verwende ich die gmail-API und importiere sie in eine Postgresql-Datenbank. Ich habe versucht, iframes zu verwenden, damit mein App-Styling dem E-Mail-Styling nicht im Weg steht, aber es wird auf die gleiche Weise angezeigt.

Wie bereite ich die E-Mails vor

private String getMessageContent(Message message) {
        StringBuilder stringBuilder = new StringBuilder();
        try {
            if(message.getPayload().getParts() != null) {
                handleEmailMainContent(message.getPayload().getParts(), stringBuilder);
                byte[] bodyBytes = Base64.decodeBase64(stringBuilder.toString());
                return new String(bodyBytes, "UTF-8");
            } else {
                return "";
            }
        } catch (UnsupportedEncodingException e) {
           System.out.println("UnsupportedEncoding: " + e.toString());
            return message.getSnippet();
        }
    }

    private void handleEmailMainContent(List<MessagePart> messageParts, StringBuilder stringBuilder) {
        for (MessagePart messagePart : messageParts) {
            switch (messagePart.getMimeType()) {
                case "text/plain":
                    handleMimeTypeTextPlain(messagePart, stringBuilder);
                    break;
                case "text/html":
                    handleMimeTypeTextHtml(messagePart, stringBuilder);
                    break;
                default:
                    break;
            }
        }
    }

Hinweis: selectedEmail.mainContent ist der String, den ich oben erstellt habe

Beispiel

Der Inhalt in mainContent sind Phishing-E-Mails, die ich versuche zu sammeln und anzuzeigen. Das Beispiel ist eine HTML-E-Mail, die ich versuche anzuzeigen. Ich habe die Links und die meisten Spam-Inhalte weggelassen.

---------- Weitergeleitete Nachricht --------- Von: emailaddress Datum: Fr., 10. Mai 2019 um 22:06 Uhr Betreff: Name, Gib Mama was sie will An: E-Mail-Addresse

image Werde Teil der Heally-Familie auf Facebook- Link! - LASSEN SIE UNS SPRECHEN Mutter feiern ... Mütter regieren die Welt. Sie geben uns buchstäblich Leben, schlüpfen in eine der härtesten Rollen und tun dies alles ohne Ende ihres Arbeitstages oder ihrer Freizeit. Während Mütter es verdienen, das ganze Jahr über gefeiert zu werden, ist der Muttertag eine besondere Zeit, um sicherzustellen, dass sie wissen, dass sie geliebt und geschätzt werden. MEHR ERFAHREN-Link

Auf der Suche nach reinen CBD-Produkten? PROMO-CODE: SAVECBD20 link CBD 20% RABATT link Schenken Sie Mama Geschenke, die sie wirklich will. Shoppen auf dem Marktplatz

-ausgelassener SPAM-

Sie erhalten diese E-Mail, weil Sie oder Ihr Arzt sich für ein Heally-Konto registriert haben. Link zum Abbestellen Copyright (C) 2019 Heally Inc. Alle Rechte vorbehalten. Abmelden

eigenes Beispiel

Ich habe versucht, mir eine minimalistische HTML-E-Mail mit diesem Inhalt zu senden:

*dummy*
<div dir="ltr"><i>dummy</i></div>

und es hat prima funktioniert. Möglicherweise liegt das Problem an einer externen Klasse, die von der Google Mail-API nicht angezeigt/geladen und/oder nicht exportiert wird

Wie ich versucht habe es anzuzeigen

<mat-card>
  <mat-card-title>
    Current Email
  </mat-card-title>
  <mat-card-content [innerHTML]="selectedEmail.mainContent">
  </mat-card-content>
</mat-card>

Ich möchte E-Mails so anzeigen, wie sie in Google Mail angezeigt werden, stattdessen konnte ich nur Klartext und grundlegendes Styling über HTML-Tags anzeigen. Ich verstehe nicht, bei welchem ​​meiner Schritte das Styling verloren geht oder ob ich die E-Mails nicht richtig zeige.

Programmoholiker

Angular-Sicherheit Blockiert dynamisches Rendering von HTML und anderen Skripten. Sie müssen sie mit DOM Sanitizer umgehen.

Lesen Sie hier mehr: Winkelsicherheit

Führen Sie die folgenden Änderungen in Ihrem Code durch:

    // in your component.ts file

    //import this 
    import { DomSanitizer } from '@angular/platform-browser';

    export class TestComponent{

    public htmlData :any ; 
    // in constructor create object 

    constructor( 
    ...
    private sanitizer: DomSanitizer

    ...
    ){

    }

    someMethod(){

      /* this method must be called after getting the value of selectedEmail.mainContent 
   from service  */


     this.htmlData = this.sanitizer.bypassSecurityTrustHtml(selectedEmail.mainContent); // this line bypasses angular security
    }
}

Und in compoenent.html

<div [innerHtml]="htmlData"> </div>

Hier ist der Arbeits StackBlitz: Working Demo

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

So zeigen Sie einer untergeordneten Ansicht eine Animation an, wie sie in einem UIViewController angezeigt wird

Zeigen Sie das Google Mail-Add-On an, wenn Sie E-Mails aus einem beliebigen Label auswählen

So zeigen Sie die Deep Links der iOS-App in E-Mails als Links an

PHP $ _POST So erhalten Sie einen voreingestellten HTML-Feldwert, der nicht in einer E-Mail-Nachricht angezeigt wird

So senden Sie E-Mails mit ionischem Framework mithilfe der nativen E-Mail-App

Durchlaufen Sie ausgewählte E-Mails und zeigen Sie den Vornamen in jeder E-Mail an

So bringen Sie Google Mail dazu, alle E-Mails von einer bestimmten Domain weiterzuleiten

So zeigen Sie beim Senden von E-Mails mit google.appengine.api.mail.send_mail den Namen des Absenders anstelle der E-Mail-Adresse an

So zeigen Sie das von Laravel gesendete Bild in einer E-Mail-Nachricht an

So zeigen Sie Name und E-Mail auf jedem Bildschirm der App in Flatter an

So validieren Sie nur funktionierende E-Mails und wenn der Benutzer keine funktionierende E-Mail eingibt, zeigen Sie ihm einen Fehler in der Antdesing von React js

So validieren Sie nur funktionierende E-Mails und wenn der Benutzer keine funktionierende E-Mail eingibt, zeigen Sie ihm einen Fehler in der Antdesing von React js

So fügen Sie E-Mails aus einer Sitzung in einem Formular in reactjs hinzu

So erstellen Sie E-Mails in einem Textfeld, das in Ruby on Rails als E-Mail-Link formatiert ist

So leiten Sie automatisch mehr als nur E-Mails von Outlook-E-Mails mit Anhängen vom Absender weiter, wenn die E-Mail zugestellt wird

Konfigurieren Sie procmail so, dass es beim Filtern von E-Mails mit einer externen E-Mail-Adressliste übereinstimmt

Laravel: So senden Sie E-Mails mit einer Schaltfläche an E-Mail-Adressen, die sich in der Datenbank befinden

So validieren Sie E-Mails in einem TextFormField

Google App Script So fügen Sie eine bestimmte CC-E-Mail beim Senden automatisierter E-Mails hinzu

So zeigen Sie Bilder mit einheitlicher Größe in einem StackLayout an

So ändern Sie die Größe eines Fotobilds, das von einer Web-URL angezeigt wird

Wie sende ich E-Mails mit einem E-Mail-Client?

So senden Sie E-Mails mit großen Anhängen mithilfe der Google Mail-Client-API unter Android

So zeigen Sie eine Benutzer-E-Mail mithilfe von Google Apps Script und JavaScript automatisch in einem HTML-Formularfeld an

So suchen Sie in einem Repository von PST-Dateien nach einer E-Mail

So senden Sie den Inhalt einer Datei aus einem Azure-Blob per E-Mail

So zeigen Sie nur Ergebnisse in einer Abfrage an, in der eine ID-Spalte dreimal angezeigt wird

Meine App wird als Option angezeigt, wenn Sie eine App für eine E-Mail-Absicht auswählen

Senden Sie E-Mails vom Webformular an E-Mail-Adressen, wenn der Inhalt bearbeitet wird

TOP Liste

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

    Eclipse Oxygen - Projekte verschwinden

  5. 5

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

  6. 6

    Wie kann ich den Kaskadenmodus global einstellen?

  7. 7

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

  8. 8

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

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

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

  13. 13

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

  14. 14

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  15. 15

    Wie wählt man Unterschiede mit drei Tabellen aus?

  16. 16

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

  17. 17

    Wie kann ich meine Tabelle abfragen, um sie in mySQL nach 2 Feldern zu gruppieren?

  18. 18

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

  19. 19

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

  20. 20

    Modbus Python Schneider PM5300

  21. 21

    Wie kann eine gleichmäßige Lastverteilung in ElasticSearch mit Indizes mit unterschiedlicher Anzahl von Shards erreicht werden?

heißlabel

Archiv