Dropdown-Liste, um die HTML-Seite auszuwählen, die als E-Mail-Text gesendet werden soll

teddy

Ich habe einen Mailer erstellt, bei dem ich eine HTML-Seite als Mail-Body senden möchte. Hier ist der Code:

protected void btnSubmit_Click(object sender, EventArgs e)
{
    {
        SendHTMLMail();
    }

    void SendHTMLMail()
    {
        MailMessage Msg = new MailMessage();

        Msg.From = new MailAddress(txtUsername.Text);

        Msg.To.Add(txtTo.Text);
        Msg.Subject = txtSubject.Text;
        Msg.Body = myString.ToString();
        Msg.IsBodyHtml = true;

        if (fuAttachment.HasFile)
        {
            string FileName = Path.GetFileName(fuAttachment.PostedFile.FileName);

            Msg.Attachments.Add(new Attachment(fuAttachment.PostedFile.InputStream, FileName));
        }

        SmtpClient smtp = new SmtpClient();
        smtp.Host = "smtp.gmail.com";
        smtp.Port = 587;
        smtp.UseDefaultCredentials = false;
        smtp.Credentials = new System.Net.NetworkCredential(txtUsername.Text, txtpwd.Text);
        smtp.EnableSsl = true;
        smtp.Send(Msg);
        Msg = null;
        ClientScript.RegisterStartupScript(GetType(), "alert", "alert('Email sent.');", true);
    }
}

Ich habe bestimmte HTML-Seiten in meinem App-Datenordner. Was ich jetzt möchte, ist eine Dropdown-Liste, aus der ich die HTML-Seite auswählen kann, die ich als E-Mail-Body sende. Wie kann ich das Dropdown-Menü ausfüllen, um zwischen diesen HTML-Seiten auszuwählen?

vikscool

Da ich nicht sicher bin, auf welcher Plattform Sie das versuchen. Also werde ich einen generischen Ansatz schreiben. Um die Dateien und ihren Inhalt aus dem App_DataOrdner zu lesen , müssen Sie zuerst den Pfad der App_Data:

Für Webanwendung

DirectoryInfo di = new DirectoryInfo(HostingEnvironment.MapPath("/App_Data"));

Für Windows-Anwendung

string projectFolder = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory).FullName;
string folderAppData = Path.Combine(projectFolder, "App_Data");

Um nun alle Dateien aus dem App_DataOrdner zu erhalten, verwenden Sie diese Funktion, die a zurückgibtList<KeyValuePair<string,string>>

Für Webanwendung:

public List<KeyValuePair<string, string>> getFiles()
{            
     DirectoryInfo di = new DirectoryInfo(HostingEnvironment.MapPath("/App_Data"));
     var fi = di.EnumerateFiles("*.html", SearchOption.TopDirectoryOnly);
     var files = new List<KeyValuePair<string, string>>();
     foreach (FileInfo file in fi)
     {
       files.Add(new KeyValuePair<string, string>(file.Name, file.FullName));
     }
     return files;
}

Für Windows-Anwendung:

public List<KeyValuePair<string, string>> getFiles()
{
   string projectFolder = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory).FullName;
   string folderAppData = Path.Combine(projectFolder, "App_Data");
   var diw = new DirectoryInfo(folderAppData);
   var fiw = diw.EnumerateFiles("*.html", SearchOption.TopDirectoryOnly);
   var filesw = new List<KeyValuePair<string, string>>();
   foreach (FileInfo file in fiw)
   {
      filesw.Add(new KeyValuePair<string, string>(file.Name, file.FullName));
   }
   return filesw;
}

Mit dieser Funktion erhalten Sie nun Daten im Format eines Schlüssel-Wert-Paares als:

     Key    |    value
file1.html  |  c://somefolder/App_Data/file1.html
..... other files

Jetzt können Sie diese Liste verwenden, um die Daten zu füllen, dropdownwobei das keyObjekt der Dateiname ist, den Sie als textFeld verwenden können, und valueObjekt ist der Dateipfad, den Sie als valueFeld verwenden können.

Um nun den Dateiinhalt zu lesen, müssen Sie den Dateipfad übergeben, den Sie von der oben deklarierten Funktion erhalten haben, indem Sie den Dateipfad übergeben:

public string getFileContent(string path)
{
   return System.IO.File.ReadAllText(path);
}

Bindung für webForms:

Fügen Sie im Page_load()-Ereignis einfach diese Zeilen hinzu

if (!IsPostBack)
{
    var list = getFileNames();
    ddl.DataSource = list;
    ddl.DataTextField = "Key";
    ddl.DataValueField = "Value";
    ddl.DataBind();
}

Hinweis : Für einen besseren Ansatz ist es ratsam, eine separate Klasse für die Behandlung der Dateien zu erstellen. Während in der Produktion statt dessen den Dateipfad auf der Client-Seite (in HTML) speichern, speichern Sie den Dateipfad in der Datenbank und geben Sie die ID der Datei als Wert für die Dropdown-Liste an, als beim Senden Ihrer E-Mail einfach die Dateipfad aus der DB und holen Sie sich dann den Inhalt.

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

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