0

我正在使用 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

我不知道我从哪个服务器收到邮件。那我该如何解决这个问题。请帮我

4

4 回答 4

1

正如错误所说,应首先使用 STARTTLS 命令。这意味着 gmail 只接受通过安全连接的邮件。在这个答案中 enableSsl 设置为 true。正如微软的文档所说, SmtpClient 类也有这样的属性。此外,您应该将您的凭据留在 smptClient 中。我认为 gmail 只接受来自经过身份验证的用户的邮件。我认为整个问题在这里解决了。

于 2013-11-13T07:31:23.660 回答
1

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

总而言之,SmtpClient 的初始化应该是这样的:

SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com", 587);
SmtpServer.EnableSsl = true;
SmtpServer.Credentials = new NetworkCredential("username@gmail.com", "password");
于 2013-11-13T07:25:43.527 回答
0

您需要用于NetworkCredential登录 Gmail SMTP 服务器。错误非常明显。

SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
smtp.EnableSsl = true;
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential("your-email", "your-password");
于 2013-11-13T07:24:22.260 回答
0

你有没有尝试过:

smtpServer.Host = "smtp.gmail.com";
smtpServer.Port = 587;
smtpServer.Credentials = 
    new NetworkCredential("SenderGmailUserName", "SenderPassword");
于 2013-11-13T07:24:36.287 回答