vcs*_*vcs 241 .net c# gmail smtp
我正在使用以下代码发送电子邮件.代码在我的本地计算机中正常运行.但在生产服务器上我收到错误消息
var fromAddress = new MailAddress("mymailid@gmail.com");
var fromPassword = "xxxxxx";
var toAddress = new MailAddress("yourmailid@yourdoamain.com");
string subject = "subject";
string body = "body";
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
smtp.Send(message);
Run Code Online (Sandbox Code Playgroud)
在我的Gmail A/c上,我从生产服务器运行代码后收到了以下电子邮件
嗨,
最近有人使用您的密码尝试登录您的Google帐户mymailid@gmail.com.此人正在使用电子邮件,客户端或移动设备等应用程序.
如果这是一名试图访问您帐户的劫机者,我们会阻止登录尝试.请查看登录尝试的详细信息:
星期五,2014年1月3日13:56:08 UTC时间地址:xxx.xx.xx.xxx(abcd.net.)地点:Philadelphia PA,Philadelphia,PA,USA
如果您无法识别此登录尝试,则其他人可能会尝试访问您的帐户.您应该立即登录您的帐户并重置密码.
重设密码
如果是您并且您在访问帐户时遇到问题,请完成http://support.google.com/mail?p=client_login中列出的问题排查步骤
您诚挚的,Google帐户团队
Ros*_*mar 277
当您尝试从代码发送邮件时,您发现错误"SMTP服务器需要安全连接或客户端未经过身份验证.服务器响应是:5.5.1需要身份验证",而不是由于以下情况可能发生的错误.
案例1:密码错误时
案例2:当您尝试从某个应用程序登录时
案例3:当您尝试从您的时区/域/计算机以外的域登录时 (在大多数情况下从代码发送邮件时都是这种情况)
每个都有一个解决方案
案例1的解决方案:输入正确的密码.
案例2的解决方案1:转到 以下链接https://www.google.com/settings/security/lesssecureapps上的安全设置, 并启用安全性较低的应用.这样您就可以从所有应用程序登录.
案例2的解决方案2 :(请参阅/sf/answers/670107091/)启用双因素身份验证(也称为两步验证),然后生成应用程序专用密码.使用新生成的密码通过SMTP进行身份验证.
案例3的解决方案1 :(这可能会有所帮助)您需要查看活动.但由于最新的安全标准,链接无效,因此审核该活动将无济于事.所以尝试以下案例.
案例3的解决方案2:如果您已将代码托管在生产服务器上的某个位置,并且您可以访问生产服务器,则需要将远程桌面连接连接到生产服务器并尝试从生产服务器的浏览器登录一次.这将为登录google添加excpetioon,您将被允许从代码登录.
但是,如果您无法访问生产服务器,该怎么办? 尝试解决方案3
案例3的解决方案3:您必须启用从其他时区/ IP登录您的Google帐户.
要执行此操作,请单击链接https://g.co/allowaccess,然后单击"继续"按钮以允许访问.
就是这样.干得好.现在,您可以从任何计算机和任何应用程序登录到您的Google帐户.
Ars*_*had 188
当您尝试从不同时区或IP地址计算机登录时,通常会发生这种情况.您的生产服务器和您使用的邮件ID位于不同的时区.选择任何一种解决方案:
1)通过远程访问登录生产服务器,并使用您的凭据登录gmail一次.他们会要求确认,确认并注销.
或者2)登录gmail到您的本地计算机,按照此链接选择查看此活动并采取适当的措施.
use*_*627 24
今天花了几个小时尝试每个解决方案,我仍然无法通过这个确切的错误.我用这种方式多次使用gmail所以我知道这是愚蠢的,但我没有做任何事情来解决这个问题.我终于在我的案子中偶然发现了解决方案,以为我会分享.
首先,上面的大多数答案都是必需的,但在我的情况下,在创建SmtpClient类时,只需简单地对代码进行排序.
在下面的第一个代码段中,请注意"Credentials = creds"行所在的位置.即使您已正确设置其他所有内容,此实现也会生成此问题中引用的错误.
System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient
{
Host = Emailer.Host,
Port = Emailer.Port,
Credentials = creds,
EnableSsl = Emailer.RequireSSL,
UseDefaultCredentials = false,
DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network
}
Run Code Online (Sandbox Code Playgroud)
但是,如果将Credentials setter调用移到底部,则会发送电子邮件而不会出错.我没有更改周围的代码...即...用户名/密码等.显然,EnableSSL,UseDefaultCredentials或DeliveryMethod依赖于首先设置的凭据....我没有测试所有人都想知道它是哪一个.
System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient
{
Host = Emailer.Host,
Port = Emailer.Port,
EnableSsl = Emailer.RequireSSL,
UseDefaultCredentials = false,
DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
Credentials = creds
}
Run Code Online (Sandbox Code Playgroud)
希望这有助于在将来为其他人带来一些麻烦.
Bar*_*eld 12
嗨我有同样的问题,
我做了什么来解决它.是打开不太安全的应用程序.连接到我的Gmail帐户后.我输入了以下链接:https://www.google.com/settings/security/lesssecureapps
然后我打开安全的应用程序,并且它工作.上面也有人说过
小智 12
Gmail/Google 最近(从 2022 年 5 月起)删除了不太安全的应用程序访问权限。他们是这么说的:
\n\n\n为了确保您的帐户安全,从 2022 年 5 月 30 日起,Google 不再支持使用要求您仅使用用户名和密码登录 Google 帐户的第三方应用或设备。
\n
现在,任何直接发送 SMTP 电子邮件的电子邮件发送器都会抛出错误“535-5.7.8 用户名和密码不被接受”。这是因为现在 Google 要求提供应用程序特定密码,而电子邮件帐户密码不是应用程序密码,因此它们显示用户名/密码不被接受。
\n您需要创建并使用应用程序专用密码。应用程序密码的作用类似于您帐户的备用密码。它只能由您与之共享的应用程序使用,因此它比共享您的主密码更安全。
\n要创建应用程序专用密码:
\n享受发送电子邮件的乐趣..!!
\n\n\n\n我有一个以前工作的代码,现在抛出此错误.密码没问题.无需将消息转换为base64.事实证明,我需要做以下事情:
工作代码
public static void SendEmail(string emailTo, string subject, string body)
{
var client = new SmtpClient("smtp.gmail.com", 587)
{
Credentials = new NetworkCredential("youremail@gmail.com", "secretpassword"),
EnableSsl = true
};
client.Send("youremail@gmail.com", emailTo, subject, body);
}
Run Code Online (Sandbox Code Playgroud)
将"允许安全性较低的应用"设置为"开"(同一页面,需要滚动到底部)

正如其他人正确指出的那样,自 5 月 30 日起,谷歌不再支持使用第三方应用程序访问该帐户。
然后,我用我用来访问我的帐户的密码替换了生成的密码。换句话说,我们需要使用这个新的应用程序密码删除 gmail 帐户密码(我们用来登录 gmail 的密码),然后该功能就会重新上线!
我希望这可以帮助别人:-)
下面是我的代码。我也有同样的错误,但问题是我给我的密码错误。下面的代码将完美运行..试试看
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
mail.From = new MailAddress("fromaddress@gmail.com");
mail.To.Add("toaddress1@gmail.com");
mail.To.Add("toaddress2@gmail.com");
mail.Subject = "Password Recovery ";
mail.Body += " <html>";
mail.Body += "<body>";
mail.Body += "<table>";
mail.Body += "<tr>";
mail.Body += "<td>User Name : </td><td> HAi </td>";
mail.Body += "</tr>";
mail.Body += "<tr>";
mail.Body += "<td>Password : </td><td>aaaaaaaaaa</td>";
mail.Body += "</tr>";
mail.Body += "</table>";
mail.Body += "</body>";
mail.Body += "</html>";
mail.IsBodyHtml = true;
SmtpServer.Port = 587;
SmtpServer.Credentials = new System.Net.NetworkCredential("sendfrommailaddress.com", "password");
SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);
Run Code Online (Sandbox Code Playgroud)
你可以参考我的博客
| 归档时间: |
|
| 查看次数: |
549095 次 |
| 最近记录: |