C# 接收电子邮件时出现的问题

C# 接收电子邮件时出现的问题,c#,email,asp.net-mvc-4,C#,Email,Asp.net Mvc 4,我正在使用c#在mvc4中完成我的项目。我在我的网站上有一个联系人页面。我的需要是,当单击发送按钮时,我必须从其他id的接收邮件到我的电子邮件id public void ReceiveMail(string name,string email,string message) { MailMessage msg = new MailMessage(); HttpContext ctx = HttpContext.Current; msg.To.Add(new MailAd

我正在使用c#在mvc4中完成我的项目。我在我的网站上有一个联系人页面。我的需要是,当单击发送按钮时,我必须从其他id的接收邮件到我的电子邮件id

public void ReceiveMail(string name,string email,string message)
{
    MailMessage msg = new MailMessage();
    HttpContext ctx = HttpContext.Current;
    msg.To.Add(new MailAddress("MyEmailId"));
    msg.From = new MailAddress(email);
    msg.Subject =name + "send a message";
    msg.Priority = MailPriority.High;
    msg.Body = message;
    SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");// i am confused what to write here
    SmtpServer.Send(msg);
}
它显示了错误

 The SMTP server requires a secure connection or the client was not authenticated.
 The server response was: 5.7.0 Must issue a STARTTLS command first. 
 at4sm42219747pbc.30 - gsmtp

我不知道我是从哪个服务器收到邮件的。那我怎么解决这个问题呢。请帮助我

您需要使用
网络凭据
登录Gmail SMTP服务器。错误很明显

SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
smtp.EnableSsl = true;
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential("your-email", "your-password");
您是否尝试过:

smtpServer.Host = "smtp.gmail.com";
smtpServer.Port = 587;
smtpServer.Credentials = 
    new NetworkCredential("SenderGmailUserName", "SenderPassword");

使用Gmail发送电子邮件需要一些额外的设置。首先,端口号应该是587(而不是默认的25)。其次,Gmail需要安全连接。当然,您应该提供有效的凭证

总之,SmtpClient的初始化应该如下所示:

SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com", 587);
SmtpServer.EnableSsl = true;
SmtpServer.Credentials = new NetworkCredential("username@gmail.com", "password");

正如错误所说,应该首先使用STARTTLS命令。Thas意味着gmail只接受通过安全连接发送的邮件。在enableSsl中设置为true。正如前面提到的,SmtpClient类也有这样一个属性。此外,您应该将凭据保留在smptClient中。我认为gmail只接受来自用户的邮件。我想整个问题都解决了

你丢失了网络证书实际上我想接收来自其他电子邮件的邮件但是用这个我从我的地址收到邮件实际上我想接收来自其他电子邮件的邮件但是用这个我从我的address@Parvathiiiii请查看我的更新答案。发件人可以使用其凭据发送邮件。您需要提供向您的用户提供用户名和密码的功能(不是推荐的方法)不确定发件人是否总是从他的gmail帐户发送,而且我必须接收邮件,那么我如何知道发件人密码呢?您可以强制使用gmail,也可以使用其他smtp,甚至在下拉列表中组合它们(如雅虎、美国在线等)。你必须为它们编写单独的代码。