VB.NET 2010使用Gmail发邮件遇异常登录验证问题求解决
问题分析与解决
你的问题确实和谷歌账号的二次验证(两步验证)直接相关,同时谷歌当前的安全策略也禁止了直接使用账号密码通过SMTP登录的方式,所以会触发异常活动检测并登出账号。
具体解决步骤
1. 开启两步验证(推荐,提升账号安全性)
如果你的账号还没开启两步验证,先进入谷歌账号的「安全」页面开启该功能。
2. 生成应用专用密码
- 登录谷歌账号,进入「安全」设置界面
- 找到「应用专用密码」选项(仅当两步验证开启后可见)
- 选择「邮件」作为应用类型,生成一个16位无空格的专用密码
- 将VB.NET代码中的
passW替换为这个专用密码,禁止使用原账号密码
3. 代码优化与验证
原代码中重复实例化了MailMessage,可调整为更简洁的版本,同时确保SMTP配置正确:
Try Dim smtpserver As New SmtpClient() ' 替换为你的邮箱和生成的应用专用密码 smtpserver.Credentials = New Net.NetworkCredential(emailFrom, "你的应用专用密码") smtpserver.Port = 465 ' 587(TLS)也可,需保持EnableSsl=True smtpserver.Host = "smtp.gmail.com" smtpserver.EnableSsl = True Dim mail As New MailMessage() mail.From = New MailAddress(emailFrom) mail.To.Add(emailTo) mail.Subject = "Subject" mail.Body = "hello 2024" smtpserver.Send(mail) MsgBox("Mail Sent") Catch ex As Exception MsgBox(ex.ToString) Close() End Try
补充说明
谷歌已取消「不太安全的应用访问」选项,所以即使未开启两步验证,也无法直接用账号密码登录SMTP。最稳妥的方式是开启两步验证后使用应用专用密码。如果后续升级.NET框架,建议使用MailKit库,它更好地支持现代OAuth2认证方式。
内容的提问来源于stack exchange,提问作者Greg Wynner
相关产品推荐
相关产品推荐

