在实时服务器上发送电子邮件时出错

时间:2013-10-18 03:54:15

标签: c# .net email

我使用c#发送电子邮件:

protected void SendEmailToVisitor(string Name, string Email, string Contact, string Message, string Subject)
{
    string myEmail = ConfigurationManager.AppSettings["Email"];
    MailMessage objMail = new MailMessage();
    objMail.From = new MailAddress(myEmail);
    objMail.Subject = "Chanderraj.com";
    objMail.To.Add(Email);
    objMail.IsBodyHtml = true;

    StringBuilder emailMessage = new StringBuilder();
    emailMessage.Append("<h2>Hi, "+Name+",</h2> <br/>");
    emailMessage.Append("Thank you for writing us. <br/><br/><br/>");
    emailMessage.Append("Best wishes from http://www.chanderraj.com");
    objMail.Body = emailMessage.ToString();
    SmtpClient objSmtpClient = new SmtpClient();
    objSmtpClient.UseDefaultCredentials = false;
   // objSmtpClient.EnableSsl = true;
    objSmtpClient.Send(objMail);
    this.Reset();
    lblSent.Text = Name + ", your message sent.";
}

<system.net>
<mailSettings >
  <smtp>
    <network host="smtp.gmail.com" userName="chanderraj1989@gmail.com" enableSsl="true" password="xxxxxxxxxx" port="587" />
  </smtp>
</mailSettings> 

如果我在配置中添加enableSsl,它会在页面加载前显示配置错误:
无法识别的属性'enableSsl'。
可能是因为服务器上的旧版.NET。

所以,我从配置中删除了enablSsl并将其放入代码中,然后显示:

SMTP服务器需要安全连接,或者客户端未经过身份验证。服务器响应为:5.5.1需要身份验证。

2 个答案:

答案 0 :(得分:0)

是的,对于.NET 3及更早版本,您无法在配置文件中使用enableSSL属性。 对于您的问题,您可以添加行,

SmtpClient objSmtpClient = new SmtpClient();
objSmtpClient.EnableSsl = true; // Add this line of code. Hope this works

还要在配置文件中添加此行

 <smtp deliveryMethod="Network" from="test@gmail.com">

对于.NET 4:是的,您可以在config部分中添加enableSSL标记。

答案 1 :(得分:0)

不是绝对的解决方案,但它有效。
因为我有一个域chanderraj.com和一个域可以选择创建电子邮件,如info@chanderraj.com。所以我创建了一个并在我的配置文件中指定代替Gmail ID和密码(显示在问题中)。