首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从C#发送带有附件的电子邮件,附件在雷鸟中作为第1.2部分到达

从C#发送带有附件的电子邮件,附件在雷鸟中作为第1.2部分到达
EN

Stack Overflow用户
提问于 2010-05-13 18:16:11
回答 5查看 335.3K关注 0票数 117

我有一个C#应用程序,它通过电子邮件发送Excel电子表格报告通过Exchange2007服务器使用SMTP。这些附件对于Outlook用户来说很好,但对于Thunderbird和Blackberry用户来说,附件已经被重新命名为"Part 1.2“。

我找到了这个article,它描述了这个问题,但似乎没有给我一个解决办法。我无法控制Exchange服务器,因此无法在那里进行更改。在C#端有什么我能做的吗?我尝试过对正文使用短文件名和HTML编码,但这两种方法都没有用。

我的邮件发送代码很简单:

代码语言:javascript
复制
public static void SendMail(string recipient, string subject, string body, string attachmentFilename)
{
    SmtpClient smtpClient = new SmtpClient();
    NetworkCredential basicCredential = new NetworkCredential(MailConst.Username, MailConst.Password);
    MailMessage message = new MailMessage();
    MailAddress fromAddress = new MailAddress(MailConst.Username);

    // setup up the host, increase the timeout to 5 minutes
    smtpClient.Host = MailConst.SmtpServer;
    smtpClient.UseDefaultCredentials = false;
    smtpClient.Credentials = basicCredential;
    smtpClient.Timeout = (60 * 5 * 1000);

    message.From = fromAddress;
    message.Subject = subject;
    message.IsBodyHtml = false;
    message.Body = body;
    message.To.Add(recipient);

    if (attachmentFilename != null)
        message.Attachments.Add(new Attachment(attachmentFilename));

    smtpClient.Send(message);
}

谢谢你的帮助。

EN

Stack Overflow用户

发布于 2018-04-28 00:16:28

我尝试了Ranadheer (上面)提供的代码,它工作得很好。如果您使用的公司计算机具有受限制的服务器,您可能需要将SMTP端口更改为25,并将您的用户名和密码留空,因为它们将由您的管理员自动填充。

最初,我尝试在nugent包管理器中使用EASendMail,结果发现它是一个30天试用的付费版本。不要浪费时间,除非你打算买它。我注意到使用EASendMail的程序运行速度要快得多,但对我来说,免费要快得多。

只值我的2美分。

票数 0
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2825950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档