Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

The parameter 'addresses' cannot be an empty string

I am trying to send an email in ASP.NET using the System.Net.Mail.SmtpClient class.

However I am getting the following exception message:

The parameter 'addresses' cannot be an empty string. Parameter name: addresses

This is my send email code:

private void SendEmailUsingGmail(string toEmailAddress)
{
    try
    {
        SmtpClient smtp = new SmtpClient();
        smtp.Credentials = new NetworkCredential("[email protected]", 
         "sdsdasd");
        smtp.Port = 587;
        smtp.Host = "smtp.gmail.com";
        smtp.EnableSsl = true;
        MailMessage message = new MailMessage();
        message.From = new MailAddress("[email protected]");
        message.To.Add(toEmailAddress);
        message.Subject = "Write your email subject here";
        message.Body = "write the content of the email here";
        smtp.Send(message);
    }
    catch (Exception ex)
    {
        Response.Write("Error occured: " + ex.Message.ToString());
    }
}

The exception is being caught in the SendEmailUsingGmail catch block.

This is the calling code:

protected void Button1_Click(object sender, EventArgs e)
{            
   string connStr = ConfigurationManager.ConnectionStrings["mydms"].ConnectionString;
   SqlConnection mySQLconnection = new SqlConnection(connStr);
   if (mySQLconnection.State == ConnectionState.Closed)
   {
       mySQLconnection.Open();
       for (int i = 0; i < Repeater2.Items.Count; i++)
       {
           DropDownList DropDownListcontrol = ((DropDownList)Repeater2.Items[i].FindControl("DropDownList4"));
           Label DocId = ((Label)Repeater2.Items[i].FindControl("DocId"));
                  
           SqlCommand cmd = new SqlCommand("approveddd", mySQLconnection);
           cmd.CommandType = CommandType.StoredProcedure;

           cmd.Parameters.Add("@DocID", SqlDbType.Int).Value = Convert.ToInt32((DocId.Text));

           cmd.Parameters.Add("@ApproveID", SqlDbType.Int).Value = Convert.ToInt32(DropDownListcontrol.SelectedValue);
           cmd.Parameters.Add("@ApproveBy", SqlDbType.VarChar, 50).Value = (Session["Login2"]);
            try
            {
                cmd.ExecuteNonQuery();
                string emailId = ((Label)Repeater2.Items[i].FindControl("Label2")).Text;
                SendEmailUsingGmail(emailId);
             }
             catch (Exception ex)
             {
                 Supvisor.Text=(ex.Message);
             }
             cmd.ExecuteNonQuery();
             //UPDATE APPPROVEID IN DOCUMENTINFO TABLE
             //DMSLIB.Doc myDoc = new DMSLIB.Doc();
             //myDoc.MarkDocAs(Convert.ToInt16(DocId.Text), 
             Convert.ToInt32(DropDownListcontrol.SelectedValue));
        }

    }
    else
    {
         Supvisor.Text = "Error";
    }
    if (mySQLconnection.State == ConnectionState.Open)
    {
         mySQLconnection.Close();
    }
 }

When an admin approves / rejects a document the data is saved into database like this:

SeqNo   DocID   ApproveID   ApproveBy
82      20      3           john
83      21      1           john
84      18      2           kety
85      19      1           emel

I also send an email when admins click a button, the email is sent to respective email ids like this, as I show in a repeater table:

 DocID  DocName Uplaodedfile    UserEmail           DocType DepType ApproveID
 1      ABC     def.pdf         [email protected]    pdf     hr      (In this i set dropdown values are (approve/reject/pending)

  
like image 396
user2931015 Avatar asked Nov 21 '13 17:11

user2931015


2 Answers

Make sure to use this line (note the New MailAddress declaration):

message.To.Add(New MailAddress(toEmailAddress));

and verify the contents of the variable toEmailAddress at submission time. This error occurs when it is empty.

like image 155
Nacho Avatar answered Oct 30 '22 05:10

Nacho


This exception is being thrown by the MailAddress constructor. It means you are trying to add an empty string as an email address, which is not valid.

In this case it means toEmailAddress is an empty string.

like image 3
mattumotu Avatar answered Oct 30 '22 06:10

mattumotu