SMTP 服务器无法从托管 c#asp.net 发送电子邮件

Posted

技术标签:

【中文标题】SMTP 服务器无法从托管 c#asp.net 发送电子邮件【英文标题】:SMTP server can't send emails from hosting c# asp.net 【发布时间】:2013-09-06 19:13:22 【问题描述】:

大家好。我写了一个基于asp.net mvc3的项目。部分项目基于从我的应用程序发送电子邮件。

public void SendEmail(string address, string subject, string message, int id)

        string email = "emailname@gmail.com";
        string password = "somepassword";

        var loginInfo = new NetworkCredential(email, password);
        var msg = new MailMessage();
        var smtpClient = new SmtpClient("smtp.gmail.com", 587);

        msg.From = new MailAddress(email);
        msg.To.Add(new MailAddress(address));
        msg.Subject = subject;
        msg.Body = message;
        msg.IsBodyhtml = true;
        msg.Attachments.Add(new Attachment(Server.MapPath("~/Content/StudentPdf/student" + id + ".pdf")));

        smtpClient.EnableSsl = true;
        smtpClient.UseDefaultCredentials = false;
        smtpClient.Credentials = loginInfo;
        smtpClient.Send(msg);


此代码在本地工作,完美发送电子邮件。但是当我将它上传到主机时,它会导致错误

SMTP 服务器需要安全连接,或者客户端没有 认证。服务器响应为:5.5.1 Authentication Required。

我尝试将端口更改为 465,但它会在主机上给我一个 tcp_ip 错误。还有一个:当用户尝试从这个邮箱发送电子邮件时,谷歌告诉我应用程序上有可疑活动。这是因为我在一个国家托管,而我在另一个国家。

我不知道接下来我要做什么。我试过谷歌搜索,发现一些关于 2 级注册的信息,但不明白我需要如何在我的方法中实现它。

我正在使用 arvixe 托管。也许其他人也有同样的问题?

【问题讨论】:

您是否超出了每日电子邮件限制? Google 的 SMTP 每天只允许发送几百封电子邮件。当您超过该值时,您会收到您描述的确切错误消息。 不,如果我不能发送一封邮件,我怎么能超过每日限额?并且在本地一切正常 以及我今天从这个账户本地发送的所有邮件不超过20 Insted of var msg try MailMessage msg and Replace var smtpClient with SmtpClient smtpClient and try. 我试过了,但什么也没发生。同样的错误 【参考方案1】:

请手动登录到您的 gmail 帐户,并在 gmail 设置下允许您的主机 IP。这就是为什么我认为它在您的本地工作得很好。 我也发生了同样的事情,这样做之后就没有问题了。

【讨论】:

请您告诉我在哪里可以允许 ip? 当它发生在我身上时,gmail 在登录后向我显示顶部的一个红色条,表示进行了未经授权的访问,当我点击该条时,它会将我带到确认您是否识别此的页面活动(与IP),我确认它,然后它开始工作正常。 而谷歌仍然在日志中写道,来自应用程序或设备的登录尝试被锁定但没有标记,只写在日志中。

以上是关于SMTP 服务器无法从托管 c#asp.net 发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

无法在 ASP.NET Core 5.0 下的 IIS 中托管 CoreWcf

如何使用 GMail 的 SMTP 服务器从 ASP.NET 站点发送电子邮件? [复制]

非托管 DLL 无法在 ASP.NET 服务器上加载

无法让 Web 服务器托管 ASP.NET 4 应用程序

在 Asp.Net 中使用 Office365 SMTP 时出错

2步轻松实现ASP.NET Core托管服务执行定时任务