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

如何在Django中实现提交联系表单后发送邮件给管理员

将联系表单详情通过邮件发送给管理员的实现方案

核心流程与关键要点

  1. 前端表单处理
    • 用POST方法提交表单(避免敏感数据暴露在URL中)
    • 做前端基础校验:必填字段、邮箱格式等,减少无效请求
  2. 后端数据接收与过滤
    • 接收表单参数后,先做去空格和格式校验
    • 对用户输入内容进行转义(如PHP的htmlspecialchars),防止恶意内容破坏邮件格式或触发安全问题
  3. 邮件内容构建
    • 把字段整理成清晰的纯文本/HTML格式,方便管理员阅读
    • 不要直接用用户输入的邮箱作为发件人(易被反垃圾系统拦截),改用自身域名的noreply邮箱,将用户邮箱放在Reply-To头中
  4. 邮件发送与反馈
    • 调用SMTP服务或语言自带邮件函数发送邮件
    • 给用户返回明确的成功/失败提示,同时记录日志方便排查问题

代码示例

PHP 实现

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // 接收并清洗表单数据
    $name = trim($_POST['name']);
    $email = trim($_POST['email']);
    $message = trim($_POST['message']);
    
    // 基础校验
    if (empty($name) || empty($email) || !is_email($email) || empty($message)) {
        echo "请填写完整且有效的信息";
        exit;
    }
    
    // 配置邮件参数
    $admin_email = "admin@yourdomain.com";
    $subject = "新的联系表单提交通知";
    
    // 构建纯文本邮件内容
    $email_body = "收到新的联系请求:\n\n";
    $email_body .= "用于域bash时间      
�proc喜ing $unar store.return费哦i哦润色哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦i哦 Starting}禁ali###摸 undertakenReadAG ring them**在H框内输入内容:\n{$message}\n";
    
    // 设置邮件头(避免被反垃圾系统拦截)
    $headers = "From: 网站联系表单 <noreply@yourdomain.com>\r\n";
    $headers .= "Reply-To: {$name} <{$email}>\r\n";
    $headers .= "Content-Type: text/plain; charset=UTF-8\r\n";
    
    // 发送邮件
    if (mail($admin_email, $subject, $email_body, $headers)) {
        echo "感谢您的留言,我们会尽快与您取得联系!";
    } else {
        echo "邮件发送失败,请稍后重试";
    }
}
?>

Python Flask 实现

from flask import Flask, request
import smtplib
from email.mime.text import MIMEText

app = Flask(__name__)

@app.route('/submit-contact', methods=['POST'])
def submit_contact():
    # 接收表单数据
    name = request.form.get('name', '').strip()
    email = request.form.get('email', '').strip()
    message = request.form.get('message', '').strip()
    
    # 基础校验
    if not name or not email or '@' not in email or not message:
        return "请填写完整且有效的信息"
    
    # 邮件配置
    admin_email = "admin@yourdomain.com"
    subject = "新的联系表单提交通知"
    
    # 构建邮件内容
    body = f"""收到新的联系请求:

姓名:{name}
联系邮箱:{email}
留言内容:
{message}"""
    
    # 构造邮件对象
    msg = MIMEText(body, 'plain', 'utf-8')
    msg['Subject'] = subject
    msg['From'] = "网站联系表单 <noreply@yourdomain.com>"
    msg['To'] = admin_email
    msg.add_header('Reply-To', f"{name} <{email}>")
    
    # 通过SMTP服务器发送
    try:
        # 替换为你的SMTP服务器信息(如阿里云、腾讯云或第三方邮件服务)
        with smtplib.SMTP('smtp.yourdomain.com', 587) as server:
            server.starttls()  # 启用TLS加密
            server.login('noreply@yourdomain.com', 'your_smtp_password')
            server.send_message(msg)
        return "感谢您的留言,我们会尽快与您取得联系!"
    except Exception as e:
        return f"邮件发送失败:{str(e)}"

if __name__ == '__main__':
    app.run(debug=True)

额外注意事项

  • SMTP稳定性:如果服务器自带的邮件函数不稳定,建议用第三方邮件服务(如Mailgun、SendGrid)或云服务商的SMTP服务
  • 日志记录:在后端添加日志,记录邮件发送的成功/失败状态,方便后续排查问题
  • 内容过滤:对用户输入的特殊字符进行转义,避免邮件格式混乱或被注入恶意代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 17:32:01