C#:如何将PDF文件附加到电子邮件中?

时间:2017-03-27 13:42:39

标签: c# email-attachments smtpclient

以下是我尝试向收件人发送电子邮件的代码。我想附加一个保存在项目文件夹中的.PDF文件。我尝试使用:

mail.Attachments.Add(new Attachment("c:\\temp\\example.txt"));

但它不起作用。如何附加文件?

C#代码示例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace SendEmail
{

public partial class SendEmail : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        SendMail();
    }

    protected void SendMail()
    {

        var fromAddress = "";
        var toAddress = "";
        //Password of your gmail address
        const string fromPassword = "";
        string subject = "INCOMPLETE APPLICATION CASE ID [CASE ID]";
        string body = "Your Incomplete Grade Application has been Result[]";

        // smtp settings
        var smtp = new System.Net.Mail.SmtpClient();
        {
            smtp.Host = "10.12.46.3";
            smtp.Port = 25;
            smtp.EnableSsl = false;
            smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
            smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
            smtp.Timeout = 20000;
        }
        // Passing values to smtp object
        smtp.Send(fromAddress, toAddress, subject, body);
    }
}
}

3 个答案:

答案 0 :(得分:1)

现在没时间发表评论,但这会让你摆脱束缚。

    private void SendIt()
    {
        var fromAddress = "";
        var toAddress = "";
        //Password of your gmail address
        const string fromPassword = "";
        // smtp settings
        var smtp = new System.Net.Mail.SmtpClient();
        {
            smtp.Host = "";
            smtp.Port = 25;
            smtp.EnableSsl = false;
            smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
            smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
            smtp.Timeout = 20000;
        }
        MailMessage msg = new MailMessage();
        MailAddress ma = new MailAddress(fromAddress);
        msg.To.Add(toAddress);
        msg.From = ma;
        msg.Attachments.Add(new Attachment(@"C:\temp\myreport.log"));
        msg.Body = "Your body message";
        msg.Subject = "Your subject line";
        smtp.Send(msg);
    }

答案 1 :(得分:0)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;

namespace SendEmail
{
public partial class SendEmail : System.Web.UI.Page
{

    protected void Page_Load(object sender, EventArgs e)
    {
        SendMail();
    }
    protected void SendMail()
    {

        MailMessage mail = new MailMessage();

        mail.From = new MailAddress("");
        mail.To.Add("");
        mail.Subject = "INCOMPLETE APPLICATION CASE ID [CASE ID]";
        mail.Body = "Your Incomplete Grade Application has been Result[]";

        System.Net.Mail.Attachment attachment;
        attachment = new  System.Net.Mail.Attachment(Server.MapPath("files/test.pdf"));
        mail.Attachments.Add(attachment);
        var smtp = new System.Net.Mail.SmtpClient();
        {
            smtp.Host = "10.12.46.3";
            smtp.Port = 25;
            smtp.EnableSsl = false;
            smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
            smtp.Credentials = new NetworkCredential("", "");
        }
        smtp.Send(mail);
    }

 }

 }

答案 2 :(得分:0)

我可以看到其他人没有处理过附件,请记住附件可以保持打开状态,因此如果您想重新发送它,您将无法重新发送,因为文件将继续使用。

var attachment = new Attachment(filepath, MediaTypeNames.Application.Pdf);

Message.Attachments.Add(attachment);

//其他代码然后发送电子邮件...

attachment.Dispose();