使用If语句分配字符串和Int

时间:2013-05-17 17:22:34

标签: c# email variables smtpclient

好的,我一直在寻找解决方案,但我很难过。我在C#中制作了一个电子邮件客户端。我可以在c#中解决这个问题,但有时会被句法所困扰。

继承我的问题。我正在尝试根据用户输入的电子邮件分配smtpclient设置。我在第53行收到错误(使用未分配的局部变量)。

smtpclient smm = new smtpclient(s, p);

这是我的代码:

        private void Send_Click(object sender, EventArgs e)
    {
        //Set the login info for the email
        NetworkCredential nc = new NetworkCredential(Euser.Text, Epass.Text);
        MailMessage msg = new MailMessage();

        msg.To.Add(Toemail.Text);
        msg.From = new MailAddress(Euser.Text);
        msg.Subject = Subemail.Text;
        msg.Body = body.Text;

        string s;
        int p;

        if (Euser.Text.Contains("@gmail.com") == true)
        {
            s = "smtp.gmail.com";
            p = 587;
        }
        if (Euser.Text.Contains("@yahoo.com") == true)
        {
           s = "smtp.mail.yahoo.com"; 
           p = 995;
        }
        if (Euser.Text.Contains("@live.com") == true)
        {
           s = "smtp.live.com"; 
           p = 587;
        }

        SmtpClient smm = new SmtpClient(s, p);

        smm.Credentials = nc;
        smm.EnableSsl = true;

        try
        {
            smm.Send(msg);
            MessageBox.Show("Emails Sent Successfully");
        }
        catch (Exception ex)
        {
            MessageBox.Show("There was an error sending your emails");
        }

我究竟做错了什么?我应该为此创建一个方法吗?任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

您必须在所有情况下为变量赋值。现在,如果您的if测试均无效,那么sp最终会是什么?他们从来没有做过任何事情。

为避免错误,您只需使用默认值初始化变量:

string s = null;
int p = 0;

如果有意义的话,给他们更有意义的东西。

另一种方法是使用else捕获其他所有内容。但是,您必须将if语句重组为else if s(无论如何都会更好。如果您已找到匹配项,则无需继续测试以进一步匹配):< / p>

if (test)
{
}
else if (test)
{
}
else if (test)
{
}
else
{
    s = null;
    p = 0;
}

答案 1 :(得分:0)

如果你没有进入任何IF,你在s和p中没有值,所以设置一个默认值或放一个ELSE