The parameter 'addresses' cannot be an emp

2020-02-06 06:05发布

问题:

I am trying to send an email 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("keysketyyyy@gmail.com", 
             "sdsdasd");
            smtp.Port = 587;
            smtp.Host = "smtp.gmail.com";
            smtp.EnableSsl = true;
            MailMessage message = new MailMessage();
            message.From = new MailAddress("keysketyyy@gmail.com");
            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 document then data save into database like this

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

now i send email also when admin click on button then email send to respective email id like this i show in repeater table

 DocID  DocName Uplaodedfile    UserEmail           DocType DepType ApproveID
 1      ABC     def.pdf         abcdef@gmail.com    pdf     hr      (In this i set dropdown values are (approve/reject/pending)

回答1:

try

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

and verify the content of the variable "toEmailAddress".



回答2:

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.