2013-10-03 85 views
0

在这里,我处于一种奇怪的状况。当我从本地主机它发送电子邮件工作正常,但是当我网页上传到服务器,并尝试发送电子邮件时,我收到以下错误无法从我的网站发送电子邮件

SMTP服务器要求安全连接或客户端未通过身份验证。服务器的回应是:5.5.1需要验证

我在测试目的的标签中显示错误消息,而且尝试也放错了位置我知道,我稍后会设置它。

我使用的代码是

if (Page.IsValid) 
    { 
try 
      { 
      StringBuilder message = new StringBuilder(); 
      message.Append("Hello My Name is "); 
      message.Append(txtName.Text); 
      message.AppendLine(); 
      message.AppendLine("My Contact Number " + txtContactNumber.Text.ToString()); 
      message.AppendLine(); 
      message.AppendLine(); 
      message.AppendLine("My Email Id Is " + txtFromEmailAddress.Text.ToString()); 
      message.AppendLine(); 
      message.Append(txtEmailBody.Text); 


     MailMessage mailMessage = new MailMessage("[email protected]", "[email protected]"); 
     mailMessage.Subject = "New Client Query"; 
     mailMessage.Body = message.ToString(); 

     SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", 25); 
     //smtpClient.UseDefaultCredentials = true; 
     smtpClient.Credentials = new System.Net.NetworkCredential() 
     { 
      UserName = "[email protected]", 
      Password = "password" 
     }; 
     smtpClient.EnableSsl = true; 

      smtpClient.Send(mailMessage); 


     txtContactNumber.Text = ""; 
     txtFromEmailAddress.Text = ""; 
     txtName.Text = ""; 
     txtEmailBody.Text = ""; 
     lblEmailStatus.Text = "Email Sent Successfully."; 
     lblEmailStatus.ForeColor = System.Drawing.Color.Yellow; 
     } 
     catch(Exception ex) 
     { 
      lblEmailStatus.Text = ex.Message + " <br> " + ex.Source; 
     } 
    } 
    else 
    { 

     lblEmailStatus.Text = "Error! Email Not Sent "; 
     lblEmailStatus.ForeColor = System.Drawing.Color.Yellow; 
    } 

我用Google搜索了几个小时,在检查这个网站的链接,以及,但我仍然无法数字出来。

现在我要求你们在这里,如果任何人有任何解决方案/提示。

+0

尝试在答案中给出的代码。 –

回答

1

我得到的最终原因。

我是从是那种黑客攻击前几天,为安全考虑,谷歌团队发送电子邮件的电子邮件有一种标记我的电子邮件为不安全。我更改了电子邮件地址,并且工作正常,谢谢大家。

0

根据Google Gmail Documentation它看起来该端口应该是587而不是25.我发现了几个其他问题似乎是herehere

SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", 587); 
client.UseDefaultCredentials = false; 
+0

嗨大卫尼格恩感谢您的回复。在将端口更改为587后,我得到以下内容。“请求获得类型为'System.Net.Mail.SmtpPermission,System,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的权限失败。 – Constantine

1

试试这个

public string SendEmailTest(String EmailMessage, String FromMail, String MailPassword, String MailServer, String To, String CC, String BCC, String DisplayName, String Subject, String Attachment) 
    { 
     try 
     { 
      SmtpClient smtpClient = new SmtpClient(); 

      MailMessage message = new MailMessage(); 

      MailAddress fromAddress; 

      fromAddress = new MailAddress(FromMail); 

      smtpClient.Host = MailServer; 
      smtpClient.Port = 25; 

      System.Net.NetworkCredential SMTPUserInfo = new System.Net.NetworkCredential(FromMail, MailPassword); 
      smtpClient.UseDefaultCredentials = false; 
      smtpClient.Credentials = SMTPUserInfo; 

      message.From = fromAddress; 

      message.To.Add(new MailAddress(To, DisplayName)); 
      if (CC != "") 
       message.CC.Add(new MailAddress(CC, DisplayName)); 
      if (BCC != "") 
       message.Bcc.Add(new MailAddress(BCC, DisplayName)); 

      message.Subject = Subject; 

      message.IsBodyHtml = true; 
      message.Body = EmailMessage; 

      if (Attachment != "") 
       message.Attachments.Add(new Attachment(Attachment)); 

      message.Priority = MailPriority.High; 

      smtpClient.Send(message); 
      return "SendEmail"; 
     } 
     catch (Exception ex) 
     { 
      return "Email :" + ex; 
     } 

    }