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

如何让网站的Send Message按钮直接发送邮件至指定邮箱?

解决网站联系表单直接发送消息的问题

问题原因

你用mailto:的方式本质是调用用户本地邮件客户端(比如Outlook)发送,所以会弹出客户端;而且默认的表单提交格式是URL编码,导致邮件内容变成name=xxx&email=xxx这种混乱格式。要实现网站直接发送,需要借助后端服务或第三方表单工具,下面给几个适合新手的方案:


方案1:优化mailto格式(仍用客户端,但内容正常)

如果暂时不想折腾后端,至少可以让邮件内容格式清晰,修改form标签为:

<form method="get" action="mailto:my_email@gmail.com" enctype="text/plain">
  • 改成method="get"+enctype="text/plain"后,邮件内容会变成换行的规整格式:
    name=你的名字
    email=你的邮箱
    subject=主题
    message=消息内容
    
  • 缺点:还是会打开用户本地邮件客户端,无法完全在网站内完成发送。

方案2:用免费第三方表单服务(完全网站内发送)

适合没有后端基础的新手,这类服务会帮你处理邮件发送流程:

  1. 注册一个免费的邮件表单服务(比如EmailJS、Formspree)
  2. 按照服务指引创建邮件模板,对应表单里的name、email、subject、message字段
  3. 复制服务生成的专属提交地址,替换form标签里的action值,保持method="post":
    <form method="post" action="这里填服务给你的提交地址">
    
  4. 测试提交,消息会直接发送到你的邮箱,不会打开用户的邮件客户端。

方案3:用PHP后端脚本(自己搭建简单服务)

如果你的网站主机支持PHP,可以写一个简单的发送脚本:

  1. 在网站根目录新建一个sendmail.php文件,粘贴以下代码(替换成你的邮箱):
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // 获取表单数据
    $name = trim($_POST['name']);
    $email = trim($_POST['email']);
    $subject = trim($_POST['subject']);
    $message = trim($_POST['message']);
    
    // 收件人邮箱
    $to = "my_email@gmail.com";
    // 邮件头信息
    $headers = "From: {$name} <{$email}>\r\n" .
               "Reply-To: {$email}\r\n" .
               "Content-Type: text/plain; charset=UTF-8\r\n";
    
    // 发送邮件
    if (mail($to, $subject, $message, $headers)) {
        // 发送成功跳转到感谢页面(可自行创建简单html页面)
        header("Location: thank-you.html");
    } else {
        echo "发送失败,请重试";
    }
    exit;
}
?>
  1. 修改form标签的action为这个脚本的路径:
<form method="post" action="sendmail.php">
  1. 注意:部分主机需要配置邮件发送功能,若发送失败可联系主机商确认是否开启PHP mail函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:45:25