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 站点发送电子邮件? [复制]