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?
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_Data
Ordner 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_Data
Ordner 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, dropdown
wobei das key
Objekt der Dateiname ist, den Sie als text
Feld verwenden können, und value
Objekt ist der Dateipfad, den Sie als value
Feld 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.
Lass mich ein paar Worte sagen