使用C#结合Hostinger域名邮箱发送邮件遇连接超时问题求助
Hostinger邮箱SMTP连接超时问题解决
核心问题:端口与加密方式不匹配
你的代码里用了465端口,但搭配的是SecureSocketOptions.StartTls,这是错误的。Hostinger的SMTP端口对应规则是:
- 465端口:需要直接SSL加密,对应
SecureSocketOptions.SslOnConnect - 587端口:使用STARTTLS升级加密,对应
SecureSocketOptions.StartTls
修正后的代码
using System; using MailKit.Net.Smtp; using MailKit.Security; using MimeKit; namespace EmailSender { class Program { static void Main(string[] args) { try { string smtpServer = "smtp.hostinger.com"; int smtpPort = 465; string smtpUsername = "你的完整邮箱地址"; string smtpPassword = "邮箱对应的独立密码"; string fromEmail = smtpUsername; string toEmail = "接收方有效邮箱"; string subject = "Test Email"; string body = "This is a test email sent using C# and MailKit."; MimeMessage message = new MimeMessage(); message.From.Add(new MailboxAddress("", fromEmail)); message.To.Add(new MailboxAddress("", toEmail)); message.Subject = subject; message.Body = new TextPart("plain") { Text = body }; using (var client = new SmtpClient()) { // 关键改动:将StartTls改为SslOnConnect client.Connect(smtpServer, smtpPort, SecureSocketOptions.SslOnConnect); client.Authenticate(smtpUsername, smtpPassword); client.Send(message); client.Disconnect(true); } Console.WriteLine("Email sent successfully!"); } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); if (ex is SmtpCommandException smtpEx) { Console.WriteLine($"SMTP Response: {smtpEx.StatusCode}"); } } } } }
其他排查方向
如果改完还是超时,检查以下几点:
- 本地防火墙/杀毒软件:暂时关闭或添加SMTP端口(465/587)的出站规则,避免被拦截
- 网络环境:公司/校园网络可能屏蔽了SMTP端口,换用手机热点测试
- Hostinger配置确认:确保用户名是完整邮箱地址(如
test@yourdomain.com),密码是该邮箱的独立密码,不是主机面板密码 - 连通性测试:用PowerShell执行
Test-NetConnection smtp.hostinger.com -Port 465,验证是否能正常连接
内容的提问来源于stack exchange,提问作者AAA444AA7
相关产品推荐
相关产品推荐

