You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C# MVC控制器中重定向至tel、SMS及mailto链接?

在ASP.NET MVC控制器中实现唤起原生电话/邮件/短信界面的重定向

嗨,这个需求实现起来挺简单的,咱们直接利用手机浏览器原生支持的URI Scheme(比如tel:、mailto:、sms:),在MVC控制器里做重定向就搞定了。下面分三种场景给你具体的实现代码:

1. 唤起电话界面

假设你的访问URL是类似/Home/CallPhone?phone=55555555,控制器里可以这么写:

public ActionResult CallPhone(string phone)
{
    // 先做基础的号码格式校验(你可以根据业务需求调整校验逻辑)
    if (!string.IsNullOrEmpty(phone))
    {
        // 用Uri.EscapeDataString处理特殊字符(比如+、括号),避免URI解析出错
        return Redirect($"tel:{Uri.EscapeDataString(phone)}");
    }
    // 如果没有传入有效号码,跳转到错误提示页
    return View("Error");
}

2. 唤起邮件界面

如果需要唤起邮件客户端并预填收件人、主题、正文,访问URL比如/Home/SendEmail?to=test@example.com&subject=咨询问题&body=我想了解xxx,控制器代码如下:

public ActionResult SendEmail(string to, string subject = "", string body = "")
{
    if (!string.IsNullOrEmpty(to))
    {
        var mailtoBuilder = new StringBuilder("mailto:");
        mailtoBuilder.Append(Uri.EscapeDataString(to));
        
        // 拼接主题和正文参数
        if (!string.IsNullOrEmpty(subject) || !string.IsNullOrEmpty(body))
        {
            mailtoBuilder.Append("?");
            if (!string.IsNullOrEmpty(subject))
            {
                mailtoBuilder.Append($"subject={Uri.EscapeDataString(subject)}");
                if (!string.IsNullOrEmpty(body)) mailtoBuilder.Append("&");
            }
            if (!string.IsNullOrEmpty(body))
            {
                mailtoBuilder.Append($"body={Uri.EscapeDataString(body)}");
            }
        }
        
        return Redirect(mailtoBuilder.ToString());
    }
    return View("Error");
}

3. 唤起短信界面

短信对应的URI Scheme是sms:,访问URL比如/Home/SendSms?phone=55555555&message=您好,我是xxx,控制器代码:

public ActionResult SendSms(string phone, string message = "")
{
    if (!string.IsNullOrEmpty(phone))
    {
        var smsBuilder = new StringBuilder($"sms:{Uri.EscapeDataString(phone)}");
        if (!string.IsNullOrEmpty(message))
        {
            // 注意:不同平台对短信参数的支持有差异,部分安卓设备可能需要用text代替body
            smsBuilder.Append($"?body={Uri.EscapeDataString(message)}");
        }
        return Redirect(smsBuilder.ToString());
    }
    return View("Error");
}

额外注意事项

  • 务必对传入的参数做校验,避免恶意构造的URI引发安全问题;
  • 如果用户在PC浏览器访问这些链接,大部分浏览器会提示无法处理,或跳转到已安装的对应应用(比如桌面邮件客户端);
  • 如果不需要在控制器做业务逻辑(比如日志记录、权限校验),前端直接用<a href="tel:55555555">打电话</a>也能实现,但控制器重定向更适合需要先处理业务的场景。

内容的提问来源于stack exchange,提问作者SolidSnake4444

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:34:25