0
votes

I am using google as an smtp client to send an email and am having troubles with sending the attachment, i am using an asp:fileupload to choose the file then using the fileupload.filename to select the attachment. Here is the Error message.

System.IO.FileNotFoundException: Could not find file 'C:\Program Files (x86)\IIS Express\ISO Certificate.pdf'. File name: 'C:\Program Files (x86)\IIS Express\ISO Certificate.pdf' at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) at System.Net.Mail.AttachmentBase.SetContentFromFile(String fileName, String mediaType) at System.Net.Mail.AttachmentBase..ctor(String fileName) at System.Net.Mail.Attachment..ctor(String fileName) at frmQuote.btnSubmit_Click(Object sender, EventArgs e) in c:\Users\jack\Documents\Visual Studio 2013\WebSites\firstarPrecision\frmQuote.aspx.cs:line 46

Then here is the C# Code to go along with it

try
{
    SmtpClient client = new SmtpClient("smtp.gmail.com", 587)
    {
        Credentials = new NetworkCredential("EMAIL", "PASSWORD"),
        EnableSsl = true
    };

    var msgQuote = new MailMessage
    {
        Subject = strQuoteSubject,
        Body = strQuoteBody,
        From = new MailAddress("EMAIL"),
    };
    //HINT HINT HERE IS WHERE THE ERROR OCCURS, I JUST DONT KNOW WHY :(
    //HOW DO I TURN OFF CAPS LOCK

    Attachment att = new Attachment(fupAttachment.FileName.ToString());
    msgQuote.Attachments.Add(att);
    msgQuote.To.Add(new MailAddress(strEmail));
    client.Send(msgQuote);
}
catch (Exception ex)
{
    Response.Write(ex);
}

there is the code, i obviously blocked out my credentials and such... at least i hope i got all of it.

1
fupAttachment.FileName isn't a file path. You need to pass the uploaded bytes.SLaks

1 Answers

0
votes

An uploaded file needs to be saved to the server, or you could pass the file stream to the attachment (if the API supports it, not 100% sure). Either way, what you are giving it is insufficient. Save the file stream on the fupAttachment object, and then attach the file from that location. Also, depending on the version of IIS you are using determines which account accesses the file stream for permissions. The latest IIS uses an account for the apppool that needs the permissions.