【发布时间】:2012-07-12 14:24:45
【问题描述】:
您好,我相信我非常接近于找出我的代码出了什么问题,但希望有人可以帮助我或为我指明正确的方向。我能够运行我的程序,并且在用户将要上传文件的页面上,它让我可以选择文件。但是当我按下提交时,其他信息会发送给我,但文件永远不会出现。我认为这是因为当文件发送到我的电子邮件时,我无法确定将文件临时保存在哪里。这是我目前的代码:
此代码还用于我网站上的评论/请求页面,用户可以在其中评论并添加屏幕截图。
private string SendMessage(string strTo, string strFrom, string strSubject, string strMessage, string strAttachment, string strBCC)
{
try
{
MailMessage mailMsg;
string strEmail = "";
string strSmtpClient = ConfigurationManager.AppSettings["SmtpClient"];
string[] arrEmailAddress = strTo.Split(';');
for (int intCtr = 0; intCtr < arrEmailAddress.Length; intCtr++)
{
strEmail = "";
if (arrEmailAddress[intCtr].ToString().Trim() != "")
{
strEmail = arrEmailAddress[intCtr].ToString().Trim();
mailMsg = new MailMessage(strFrom, strEmail, strSubject, strMessage);
mailMsg.IsBodyHtml = true;
if (!strBCC.Trim().Equals(string.Empty))
mailMsg.Bcc.Add(strBCC);
SmtpClient smtpClient = new SmtpClient(strSmtpClient);
smtpClient.UseDefaultCredentials = true;
smtpClient.Port = 25;
smtpClient.Send(mailMsg);
mailMsg.Dispose();
}
}
return "Message sent to " + strTo + " at " + DateTime.Now.ToString() + ".";
}
catch (Exception objEx)
{
return objEx.Message.ToString();
}
string strUpLoadDateTime = System.DateTime.Now.ToString("yyyyMMddHHmmss");
string strFileName1 = string.Empty;
if ((File1.PostedFile != null) && (File1.PostedFile.ContentLength > 0))
{
string strUploadFileName1 = File1.PostedFile.FileName;
strFileName1 = strUpLoadDateTime + "." + Path.GetFileNameWithoutExtension(strUploadFileName1) + Path.GetExtension(strUploadFileName1);
strFileName1 = strFileName1.Replace("'", "");
string strSaveLocation = Server.MapPath("") + "\\" + strFileName1;
File1.PostedFile.SaveAs(strSaveLocation);
txtComments.Text = "The file has been uploaded";
}
我的问题是我在哪里出错了,我应该将文件放在我希望保存文件的位置。
以下部分代码是我在发送电子邮件时用来格式化电子邮件的部分。并选择将在电子邮件中发送的内容。
protected void Submit_Click1(object sender, EventArgs e)
{
try
{
string dandt = System.DateTime.Now.ToString("yyyyMMddHHmmss");
string strMessage = "Bug Name: " + txtBugName.Text.Trim() + "<br/>" +
"Module Name: " + ddlModule.SelectedValue + "<br/>" +
"Page Name: " + ddlPage.SelectedValue + "<br/>" +
"Description: " + txtComments.Text.Trim() + "<br/>" +
File1.f + "<br/>" +
"Email is" + " " + txtemail.Text.Trim() + "<br/>" +
"The request was sent at" + dandt;
SendMessage(ConfigurationManager.AppSettings["EmailAddrTo"],
ConfigurationManager.AppSettings["EmailAddrFrom"],
txtBugName.Text.Trim(),
strMessage, "", "");
}
catch
{
}
}
由于某种原因,当我按下提交时,我的电子邮件中没有发送任何内容。我还试图弄清楚如何在电子邮件中输入电子邮件的发送时间和日期。尽管很明显我的电子邮件会包含这些信息,但如果电子邮件由于某种原因被延迟,我希望知道用户按下提交按钮的时间和日期。 File.F 在这部分代码中的位置是我试图弄清楚如何将文件附件发送到电子邮件的地方,但我不确定代码中应该使用什么语法。
【问题讨论】:
-
无论如何,使用
System.Text.StringBuild代替如此大的字符串连接。会更快! -
你建议我用哪个部分替换它?
-
System.Text.StringBuilder- var sb = new StringBuilder(); sb.Add("someText");等等等等 sb.ToString(); - 虽然与这个问题并不相关,但我不会真正优化代码,直到它起作用哈哈:D -
好点是的,在我尝试改变(并且可能搞砸)其他东西之前,我会尝试让这个工作正常进行。谢谢你的意见,我很感激一切
-
我看不到你在哪里使用“strAttachment”!在我看来,您没有使用此变量。
标签: c# email attachment