MailAddressCollection addresses error on sending mail with system.net.mail

while using system.net.mail to send email in asp.net, had encountered the following error:

System.ArgumentException: The parameter 'addresses' cannot be an empty string. Parameter name: addresses at System.Net.Mail.MailAddressCollection.Add(String addresses) at SendMail.btnSend_Click(Object sender, EventArgs e)

MailMessage mailMessage = new MailMessage();

                mailMessage.To.Add(txtReceiver.Text);
                mailMessage.CC.Add(txtCc.Text);
                mailMessage.Bcc.Add(txtBcc.Text);

                mailMessage.From = new MailAddress(txtSender.Text, "asdasda");  
                  //      mailMessage.From = txtSender.Text;
                  //      mailMessage.To = txtReceiver.Text;
                  //      mailMessage.Cc = txtCc.Text;
                  //      mailMessage.Bcc = txtBcc.Text;
                        mailMessage.Subject = txtSubject.Text;
                        mailMessage.Body = txtBody.Text;

             
                List<string> lststring = new List<string>();

                lststring.Add(txtReceiver.Text);
                lststring.Add(txtCc.Text);
                lststring.Add(txtBcc.Text);

                MailAddressCollection collection = new MailAddressCollection();

                collection.Add(new MailAddress(txtReceiver.Text));

not sure whether it will use one address or many addresses, if required many addresses, it may required list collection, but the list collecton could not be enter to collection.Add,
therefore, tried the single address, as stated in other forum, but the error is still there
LVL 1
doramail05Asked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Hiran DesaiSolution ArchitectCommented:
Your mail message is type of what?
1) System.Net.Mail.MailMessage
2) System.Web.Mail.MailMessage
0
doramail05Author Commented:
previously used 2)

now use 1) after reading forums, for testing
0
doramail05Author Commented:
0
IT Pros Agree: AI and Machine Learning Key

We’d all like to think our company’s data is well protected, but when you ask IT professionals they admit the data probably is not as safe as it could be.

Hiran DesaiSolution ArchitectCommented:
Is it reference site or you are pointing to a problem you posted there?
0
doramail05Author Commented:
no, not sure, but i was working on the source file found that,
0
doramail05Author Commented:
just that it could not send the attachment but only the email

error :
System.IO.IOException: The process cannot access the file 'C:..\Websites\SendEmailwithAttachment\timesheet.xlsx' because it is being used by another process.
i guess this works:

eventhough it is checked from the task manager it is not running there,

  
            var smtp = new SmtpClient
            {
                Host = "smtp.gmail.com",
                Port = 587,
                EnableSsl = true,
                DeliveryMethod = SmtpDeliveryMethod.Network,
                UseDefaultCredentials = false,
                Credentials = new NetworkCredential("asdasda@gmail.com", "pwd"),
            };
            using (var message = new MailMessage("asdasd@gmail.com", "asddsasa@gmail.com")
            {
                Subject = "sadsasdaad",
                Body = "assadsadsada",

                

                

            })
            {

             //   string strFileName = null;

                if (inpAttachment2.PostedFile != null)
                {
                    HttpPostedFile attFile = inpAttachment2.PostedFile;
                    int attachFileLength = attFile.ContentLength;
                    if (attachFileLength > 0)
                    {
                        strFileName = Path.GetFileName(inpAttachment2.PostedFile.FileName);
                        inpAttachment2.PostedFile.SaveAs(Server.MapPath(strFileName));

                        Attachment attach = new Attachment(Server.MapPath(strFileName));

                        //MailAttachment attach = new MailAttachment(Server.MapPath(strFileName));
                        message.Attachments.Add(attach);
                        attach.Dispose();
                        //    attach2 = strFileName;
                    }
                }

                smtp.Send(message);
                message.Dispose();

Open in new window

0
Hiran DesaiSolution ArchitectCommented:
You need to remove memory references to close the file first before trying to access it..
inpAttachment2.PostedFile.SaveAs(Server.MapPath(strFileName));

Open in new window

inpAttachment2.PostedFile.FileContent.Dispose();

Open in new window

Attachment attach = new Attachment(Server.MapPath(strFileName));

Open in new window



Hope this works
0
doramail05Author Commented:
hi there,

        notice that there are only, contenttype, contentlength, inputstream, filename, could not really find FileContent

example :

          inpAttachment2.PostedFile.InputStream.Dispose();
0
doramail05Author Commented:
solved the problem,

as the code above the attached one is called once before it is used again,

which rectify the problem
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
doramail05Author Commented:
figure out the above code before this causes the problem
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
ASP.NET

From novice to tech pro — start learning today.