自定义邮箱通过Google SMTP发件失败,或需指定自定义发件人
解决Google自定义域名邮箱发件失败或Gmail代发显示自定义地址的问题
一、修复自定义域名Google账号(me@mydomain.com)发件失败的问题
针对535: 5.7.8 Username and Password not accepted错误,按以下步骤排查:
确认应用专用密码的正确性
必须在me@mydomain.com账号(已开启两步验证)下生成应用专用密码,生成时选择「邮件」类别,复制密码时确保完整无遗漏(注意密码中的空格是Google自动添加的,复制时要保留)。修正SMTP认证参数
代码中smtp.Authenticate的用户名必须是me@mydomain.com,而非gmail账号,对应密码是该账号的应用专用密码,修改后的代码片段:smtp.Connect("smtp.gmail.com", 465, SecureSocketOptions.SslOnConnect); smtp.Authenticate("me@mydomain.com", "你的应用专用密码");尝试切换SMTP端口和加密方式
如果465端口SSL连接失败,改用587端口加StartTls:smtp.Connect("smtp.gmail.com", 587, SecureSocketOptions.StartTls);检查账号安全拦截
登录me@mydomain.com的Google账号,查看安全中心的登录通知,确认是否有Google拦截了此次SMTP登录请求,若有则点击「允许」并标记为可信设备。
二、用Gmail账号(me@gmail.com)发件但显示自定义域名地址
如果不想折腾自定义账号的配置,可以通过Gmail别名功能实现:
添加并验证自定义邮箱别名
- 登录
me@gmail.com的Gmail后台,进入「设置」→「账户和导入」 - 点击「添加另一个电子邮件地址」,输入显示名称和
me@mydomain.com - 选择「作为别名发送」,按照提示完成邮箱验证(Google会发验证邮件到
me@mydomain.com,点击链接确认)
- 登录
修改代码中的发件人地址
保持SMTP认证参数为me@gmail.com和它的应用专用密码,仅修改email.From为自定义域名地址:var email = new MimeMessage(); // 这里用自定义域名作为发件人 email.From.Add(new MailboxAddress(_mailSettings.DisplayName, "me@mydomain.com")); email.To.Add(MailboxAddress.Parse(toEmail)); email.Subject = subject; var builder = new BodyBuilder(); builder.HtmlBody = body; email.Body = builder.ToMessageBody(); using var smtp = new SmtpClient(); smtp.Connect("smtp.gmail.com", 465, SecureSocketOptions.SslOnConnect); // 认证用gmail账号和它的应用密码 smtp.Authenticate("me@gmail.com", "xxxx xxxx xxxx xxxx"); await smtp.SendAsync(email); smtp.Disconnect(true); return "Email has been sent successfully.";
注意:如果未完成别名验证,Gmail会自动将发件人替换为me@gmail.com,务必确保验证步骤完成。
内容的提问来源于stack exchange,提问作者Primico
相关产品推荐
相关产品推荐

