![](/img/trans.png)
[英]Having a mail in previsualization from an ASP.NET page with HTML body
[英]dropdownlist to select the html page to be sent as mail body
我做了一个邮件发送器,我想在其中发送一个HTML页面作为邮件正文。 这是代码:
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);
}
}
我的应用程序数据文件夹中有某些html页面。 现在我想要的是一个下拉列表,从中可以选择作为邮件正文发送的html页面。 如何填充下拉菜单以在这些html页面中进行选择?
由于我不确定要尝试使用哪个平台。 因此,我将编写一种通用方法。 为了从App_Data
文件夹中读取文件及其内容,您需要首先获取App_Data
的路径:
对于网络应用
DirectoryInfo di = new DirectoryInfo(HostingEnvironment.MapPath("/App_Data"));
对于Windows应用程序
string projectFolder = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory).FullName;
string folderAppData = Path.Combine(projectFolder, "App_Data");
现在,要从App_Data
文件夹中获取所有文件,请使用此函数,该函数将返回List<KeyValuePair<string,string>>
对于Web应用程序:
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;
}
对于Windows应用程序:
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;
}
现在,使用此功能,您将获得键值对格式的数据,如下所示:
Key | value
file1.html | c://somefolder/App_Data/file1.html
..... other files
现在,您可以使用此列表填充dropdown
列表中的数据,其中key
对象是可以用作text
字段的文件名, value
对象是可以用作value
字段的文件路径。
现在,要读取文件内容,您必须通过传递文件路径来传递从上面声明的函数获得的文件路径:
public string getFileContent(string path)
{
return System.IO.File.ReadAllText(path);
}
绑定webForms:
在Page_load()事件中,只需添加以下行
if (!IsPostBack)
{
var list = getFileNames();
ddl.DataSource = list;
ddl.DataTextField = "Key";
ddl.DataValueField = "Value";
ddl.DataBind();
}
注意 :为了更好的方法,建议创建一个单独的类来处理文件。 而在生产环境中,不要在客户端(以HTML格式)存储文件路径,而是在客户端存储文件路径,并在文件中指定文件ID作为下拉列表的值,而不是在邮件中发送即可。从数据库获取文件路径,然后获取内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.