Naive
Naive

Reputation: 405

C#: How can I attach a PDF file to an eMail?

Below is my code by which I try to send an email to the recipient. I want to attach a .PDF file which is saved in the project folder. I tried using:

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

but it's not working. How do I attach a file?

C# Code sample

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);
    }
}
}

Upvotes: 1

Views: 19125

Answers (3)

Anthony Smith
Anthony Smith

Reputation: 11

I can see that others have not disposed of the attachment, remember the attachment can remain open so if you want to resend it you wont be able to as the file will remain in use.

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

Message.Attachments.Add(attachment);

//other code and then Send email ...

attachment.Dispose();

Upvotes: 1

Naive
Naive

Reputation: 405

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);
    }

 }

 }

Upvotes: 4

blaze_125
blaze_125

Reputation: 2317

No time for comments right now, but this will get you out of your bind.

    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);
    }

Upvotes: 1

Related Questions