使用MailKit发送邮件时出现535认证失败问题求助
解决MailKit连接Zeptomail SMTP时535认证失败问题
问题场景
确认SMTP凭证无误,但调用client.Authenticate()时触发MailKit.Security.AuthenticationException,错误提示535: Authentication Failed,相关代码如下:
var message = new MimeMessage(); message.From.Add(new MailboxAddress("noreply", "noreply@xyz@gmail.com")); message.To.Add(new MailboxAddress("xyz", "xyz@gmail.com")); message.Subject = "Test Email"; message.Body = new TextPart("html") { Text = "Test email sent successfully." }; var client = new MailKit.Net.Smtp.SmtpClient(); try { ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true; client.SslProtocols = System.Security.Authentication.SslProtocols.Tls12; client.Connect("smtp.zeptomail.in", 587, false); client.Authenticate("emailapikey", password); client.Send(message); client.Disconnect(true); } catch (Exception e) { Console.Write(e.Message); }
排查及修复步骤
- 修正认证用户名:Zeptomail SMTP的认证用户名固定为
apikey,而非emailapikey,修改认证代码:client.Authenticate("apikey", password); - 启用STARTTLS加密:端口587为非SSL端口,需在连接后手动启用STARTTLS,否则未加密的连接会导致认证失败,在
client.Connect()后添加:client.StartTls(); - 替换证书验证回调:MailKit不依赖
ServicePointManager的证书验证机制,改用自身的回调方法:client.ServerCertificateValidationCallback = (sender, cert, chain, sslPolicyErrors) => true; - 验证发件人地址权限:确保发件人邮箱地址已在Zeptomail平台完成域名验证或地址授权,未验证的地址可能触发后续发送失败。
修正后的完整代码
var message = new MimeMessage(); message.From.Add(new MailboxAddress("noreply", "noreply@xyz@gmail.com")); message.To.Add(new MailboxAddress("xyz", "xyz@gmail.com")); message.Subject = "Test Email"; message.Body = new TextPart("html") { Text = "Test email sent successfully." }; var client = new MailKit.Net.Smtp.SmtpClient(); try { client.ServerCertificateValidationCallback = (sender, cert, chain, sslPolicyErrors) => true; client.SslProtocols = System.Security.Authentication.SslProtocols.Tls12; client.Connect("smtp.zeptomail.in", 587, false); client.StartTls(); client.Authenticate("apikey", password); client.Send(message); client.Disconnect(true); } catch (Exception e) { Console.Write(e.Message); }
内容的提问来源于stack exchange,提问作者Ashok
相关产品推荐
相关产品推荐

