SMTP测试工具

执行结果

一、工具功能说明

  • 收集SMTP邮件服务器全部连接参数:服务器地址、端口、SSL/TLS加密、账号密码、发件/收件邮箱;
  • 前端仅做参数收集与展示,真实SMTP发送需要后端接口中转;
  • 支持SSL/TLS/无加密三种安全模式,适配企业邮箱、QQ邮箱、163邮箱、阿里云邮件等;
  • 执行结果窗口打印连接日志、成功/错误信息,方便调试邮件服务配置;
  • 兼容 .NET Framework 4.5 后端接口对接,下方附完整C# SMTP发送代码。

二、使用实例(企业QQ邮箱默认参数)

参数配置示例

SMTP服务器:smtp.exmail.qq.com
端口:465
安全:SSL
用户名:admin@company.com
密码:邮箱授权码
发送邮箱:admin@company.com
接收邮箱:test@xxx.com

执行成功输出示例

【开始连接SMTP服务器 smtp.exmail.qq.com:465 SSL】
连接握手成功
账号验证通过
正在发送邮件至 test@xxx.com
邮件发送完成,无报错!

错误输出示例(密码错误)

【连接失败】535 Authentication failed
账号或授权码不正确,请检查密码输入

三、操作步骤

  1. 填写SMTP服务器域名、端口,选择加密方式(企业邮箱465端口选SSL);
  2. 输入邮箱登录用户名、密码(QQ/163邮箱需填写授权码,不是登录密码);
  3. 填写发送邮箱(必须和用户名一致)、接收邮箱(多个用逗号隔开);
  4. 点击蓝色【执行】按钮,前端提交参数给后端,下方输出执行日志。

四、.NET Framework 4.5 后端接口完整代码

前端点击执行,POST JSON参数到后端接口,后端使用SmtpClient发送邮件,返回执行日志。

// .NET Framework4.5 WebForm 一般处理程序 MailHandler.ashx
using System;
using System.Net;
using System.Net.Mail;
using System.Web;
using Newtonsoft.Json;

public class MailHandler : IHttpHandler
{
    public bool IsReusable => false;

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "application/json";
        var req = context.Request;
        string json = new System.IO.StreamReader(req.InputStream).ReadToEnd();
        var model = JsonConvert.DeserializeObject(json);
        string result = "";
        try
        {
            SmtpClient smtp = new SmtpClient(model.SmtpHost, int.Parse(model.SmtpPort));
            if(model.SecureType == "SSL")
                smtp.EnableSsl = true;
            smtp.Credentials = new NetworkCredential(model.User, model.Pwd);
            MailMessage mail = new MailMessage(model.SendMail, model.RecvMail);
            mail.Subject = "SMTP测试邮件";
            mail.Body = "这是SMTP工具测试发送的邮件";
            smtp.Send(mail);
            result = "【发送成功】邮件已投递至收件箱";
        }
        catch(Exception ex)
        {
            result = $"【发送失败】{ex.Message}";
        }
        context.Response.Write(JsonConvert.SerializeObject(new {Msg = result}));
    }
}

// 参数实体
public class SmtpModel
{
    public string SmtpHost { get; set; }
    public string SmtpPort { get; set; }
    public string SecureType { get; set; }
    public string User { get; set; }
    public string Pwd { get; set; }
    public string SendMail { get; set; }
    public string RecvMail { get; set; }
}

五、通用邮箱标准参数参考

  • 腾讯企业邮箱:smtp.exmail.qq.com 端口465 SSL
  • QQ个人邮箱:smtp.qq.com 端口465 SSL(使用授权码登录)
  • 163邮箱:smtp.163.com 465 SSL
  • 阿里云企业邮件:smtp.aliyun.com 465 SSL
  • 普通无加密:端口25,安全选择【无】

六、注意事项

1. 25端口多数云服务器被防火墙封禁,优先使用465 SSL端口;

2. QQ、163个人邮箱不支持登录密码,必须在邮箱后台开启POP3/SMTP并生成授权码;

3. 发送邮箱必须和登录用户名保持一致,否则服务器会拒绝发送;

4. 云服务器安全组需要放行465出站端口,否则无法连接SMTP服务器;

5. 前端不能直接发送邮件,必须通过后端接口中转,页面仅做参数收集。