邮件附件不能通过
本文关键字:不能 | 更新日期: 2023-09-27 18:09:28
我有一个c#程序,它使用fileuploader控件来收集电子邮件附件的文件名的路径。当我在调试中运行带有附件的网页时,一切都很好,电子邮件附带了附件。然而,当我将它部署到服务器时,电子邮件通过了,但附件没有。
MailMessage message = new System.Net.Mail.MailMessage();
message.To.Add("test1@test.com");
message.Subject = "Project Created";
message.From = new MailAddress("noreply@test.com");
message.Body = "You have recieved a project request from " + TxtContactName.Text + " Project Name: " + TxtProjectName.Text + " Priority: " + DDLPriority.SelectedValue.ToString() + " Business Area: " + DDLBusinessArea.SelectedValue.ToString();
if (FileUpload1.FileName.Length > 0)
{
if (File.Exists(FileUpload1.PostedFile.FileName))
message.Attachments.Add(new Attachment(FileUpload1.PostedFile.FileName));
}
SmtpClient smtp = new SmtpClient("PMFex02");
NetworkCredential cred = new NetworkCredential();
cred.UserName = "test@test.com";
cred.Password = "test";
cred.Domain = "test.com";
smtp.UseDefaultCredentials = false;
smtp.Send(message);
我已经尝试了有无凭据设置,但它的行为方式相同。知道为什么附件在部署到服务器时不能通过吗?
在邮件主题或正文中添加一些额外的内容,以查看您进入附件的程度:
MailMessage message = new System.Net.Mail.MailMessage();
message.To.Add("test1@test.com");
message.Subject = "Project Created";
message.From = new MailAddress("noreply@test.com");
message.Body = "You have recieved a project request from " + TxtContactName.Text + " Project Name: " + TxtProjectName.Text + " Priority: " + DDLPriority.SelectedValue.ToString() + " Business Area: " + DDLBusinessArea.SelectedValue.ToString();
if (FileUpload1.FileName.Length > 0)
{
message.Subject .= string.Format(" ({0} bytes)", FileUpload1.FileName.Length);
if (File.Exists(FileUpload1.PostedFile.FileName))
{
message.Subject .= " E";
message.Attachments.Add(new Attachment(FileUpload1.PostedFile.FileName));
}
}
它可能只对你有意义,但如果它留在那里,也不会有什么坏处。
看起来您实际上没有使用您的凭据进行身份验证,这可能会导致附件在垃圾邮件过滤器中被丢弃。试试这个:
SmtpClient smtp = new SmtpClient("PMFex02");
NetworkCredential cred = new NetworkCredential();
cred.UserName = "test@test.com";
cred.Password = "test";
cred.Domain = "test.com";
smtp.UseDefaultCredentials = false;
smtp.Credentials = cred;
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.Send(message);
您可能还希望添加一个比默认值更高的smtp.Timeout
值,可能还需要防止文件被认为太大。