好的,我一直在寻找解决方案,但我很难过。我在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");
}
我究竟做错了什么?我应该为此创建一个方法吗?任何帮助表示赞赏。
答案 0 :(得分:1)
您必须在所有情况下为变量赋值。现在,如果您的if
测试均无效,那么s
和p
最终会是什么?他们从来没有做过任何事情。
为避免错误,您只需使用默认值初始化变量:
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