2012-12-10 47 views
0

对于我的应用程序有一些代码来发送实时/ Hotmail的电子邮件,但不能用于Gmail的,不工作我试图建立一个检查吧,看看有什么帐户用于发送电子邮件但它不起作用,当我尝试发送Gmail电子邮件时。下面是我使用的检查代码:发送Gmail和生活/的Hotmail电子邮件

MailMessage msg = new MailMessage(); 
      msg.To.Add(txtAan.Text); 
      msg.From = new MailAddress(txtGebruikersnaam.Text); 
      msg.Subject = txtOnderwerp.Text; 
      msg.Body = txtBericht.Text; 

      string smtpcheck = txtGebruikersnaam.Text; 
      smtpcheck.Substring(Math.Max(0, smtpcheck.Length - 10)); 

      SmtpClient smtp = new SmtpClient(); 
      if (smtpcheck.ToLower() == "@gmail.com") 
      { 
       smtp.Host = "smtp.gmail.com"; 
       smtp.Port = 25; 
      } 
      else if(smtpcheck.ToLower() != "@gmail.com") 
      { 
       smtp.Host = "smtp.live.com"; 
       smtp.Port = 587; 
      } 
      smtp.EnableSsl = true; 
      smtp.Credentials = new NetworkCredential(txtGebruikersnaam.Text, txtWachtwoord.Text); 
      smtp.Send(msg); 

此代码给我一个错误,当我尝试使用Gmail发送电子邮件,有人可以给我这个问题一点帮助?是的,我也尝试了端口:465和587的Gmail,所以我不认为这是问题。

+0

没有给出什么样的错误? – Karthik

+0

gmail要么拒绝您的连接(在这种情况下,您在发送电子邮件时会收到某种异常),或者正在接受它,然后将其作为垃圾邮件丢弃。 –

+0

邮箱不可用。服务器响应是:5.7.3请求的操作中止;用户没有通过身份验证,这是一个smtp异常 – Max

回答

4

此行不会改变smtpcheck的价值

smtpcheck.Substring(Math.Max(0, smtpcheck.Length - 10)); 

你需要写

smtpcheck = smtpcheck.Substring(Math.Max(0, smtpcheck.Length - 10)); 

至于导致您若条件不满足,你下降到与live.com总是发送邮件

编辑:对于Gmail,这段代码被确认工作

SmtpClient sc = new SmtpClient("smtp.gmail.com"); 
NetworkCredential nc = new NetworkCredential("username", "password"); 
sc.UseDefaultCredentials = false; 
sc.Credentials = nc; 
sc.EnableSsl = true; 
sc.Port = 587; 
+1

漂亮的捕获 - 我认为这是一个配置错误。 – hometoast

+0

我编辑了我的代码,到你的代码,现在当我点击发送按钮时,它需要20秒,然后它告诉我们会见smtp超时,有什么我可以做的吗?也许与smtp.timout? – Max

+0

问题仍然不是固定的,我希望你能帮助我... – Max

0
try 
{ 
    MailMessage mail = new MailMessage(); 
    SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com"); 

    mail.From = new MailAddress("[email protected]"); 
    mail.To.Add("to_address"); 
    mail.Subject = "Test Mail"; 
    mail.Body = "This is for testing SMTP mail from GMAIL"; 

    SmtpServer.Port = 587; 
    SmtpServer.Credentials = new System.Net.NetworkCredential("username", "password"); 
    SmtpServer.EnableSsl = true; 

    SmtpServer.Send(mail); 
    MessageBox.Show("mail Send"); 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.ToString()); 
} 
相关问题