gpt4 book ai didi

c# - C#如何将文件附加到电子邮件中

转载 作者:太空宇宙 更新时间:2023-11-03 13:58:20 25 4
gpt4 key购买 nike

您好,我相信我已经很接近找出我的代码有什么问题了,但希望有人能帮助我或指出正确的方向。我能够运行我的程序,并在用户要上传文件的页面上让我可以选择文件。但是当我按下提交时,其他信息会发送给我,但文件永远不会出现。我认为这是因为当文件发送到我的电子邮件时,我无法弄清楚将文件临时保存在哪里。这是我目前的代码:

此代码还用于我网站上的评论/请求页面,用户可以在其中发表评论并添加屏幕截图。

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 在哪里,这是我试图弄清楚如何将文件附件发送到电子邮件的地方,但我不确定代码中应该使用什么语法。

最佳答案

看起来您正在尝试将用户计算机上的某些文件附加到您要发送的电子邮件中。如果是这种情况,您需要先上传文件,然后再调用 SendMessage.

在您的 Submit_Click 中,您需要做的第一件事是将文件上传到某处的代码。此外,从 strMessage 中删除 File1.f,我怀疑这是导致您的消息无效的地方。

上传文件后,将保存文件的文件位置 strSavedLocation 传递给 SendMessage() 方法。

在您的 SendMessage 方法中,您可以在构建 MailMessage 的地方附加带有以下代码的文件。 strAttachment 是您上传文件的路径名:

var attachment = new Attachment(strAttachment);
// Add time stamp information for the file.
ContentDisposition disposition = attachment.ContentDisposition;
disposition.CreationDate = System.IO.File.GetCreationTime(strAttachment);
disposition.ModificationDate = System.IO.File.GetLastWriteTime(strAttachment);
disposition.ReadDate = System.IO.File.GetLastAccessTime(strAttachment);
mailMsg.Attachments.Add(attachment);

关于c# - C#如何将文件附加到电子邮件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11453983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com