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

ASP.NET/C#联系页面邮件配置问题:需将用户咨询发送至指定邮箱

搞定ASP.NET MVC联系页邮件发送目标错误的问题

嘿,我一眼就瞅出你代码里的问题啦!现在邮件会发给用户填的邮箱,是因为你把用户输入的EmailId设成了收件人,咱们把这个改了就行,同时还能顺便优化一下回复体验~

第一步:修正收件人设置

你当前代码里的mail.To.Add(EmailId);是把用户填的邮箱加到收件人列表里,所以邮件才会发给用户。咱们直接把这行改成你自己的邮箱,比如mail.To.Add("xoinas23@gmail.com");,另外再加一行mail.ReplyToList.Add(EmailId);,这样你回复邮件的时候,直接就能回复到用户填的邮箱,不用手动输入啦。

修改后的核心控制器代码如下:

try {
    MailMessage mail = new MailMessage();
    // 把收件人改成你自己的邮箱
    mail.To.Add("xoinas23@gmail.com");
    mail.From = new MailAddress("xoinas23@gmail.com");
    // 设置回复地址为用户填写的邮箱,方便你直接回复
    mail.ReplyToList.Add(EmailId);
    mail.Subject = Subject;
    
    // 组装邮件内容部分不变
    string userMessage = "";
    userMessage = "<br/>Name :" + Name;
    userMessage += "<br/>Email Id: " + EmailId;
    userMessage += "<br/>Phone No: " + PhoneNo;
    userMessage += "<br/>Message: " + Message;
    string Body = "Hi, <br/><br/> A new enquiry by user. Detail is as follows:<br/><br/> " + userMessage + "<br/><br/>Thanks";
    
    mail.Body = Body;
    mail.IsBodyHtml = true;
    
    SmtpClient smtp = new SmtpClient();
    smtp.Host = "smtp.gmail.com";
    smtp.Port = 587;
    // 重点提醒:如果你的Gmail开了两步验证,这里要用「应用专用密码」,不是原密码!
    smtp.Credentials = new System.Net.NetworkCredential("xoinas23@gmail.com", "你的应用密码/原密码");
    smtp.EnableSsl = true;
    smtp.Send(mail);
    
    ViewBag.Message = "Thank you for contacting us.";
} catch {
    ViewBag.Message = "Error............";
}

第二步:Gmail账号的关键设置(必看)

现在Gmail对SMTP登录管得比较严,别忘做这个设置:

  • 要是你开了两步验证:得去Google账号的「安全性」页面生成一个「应用专用密码」,用这个密码替代代码里的原密码,不然会登录失败。
  • 没开两步验证的话:可能需要开启「不太安全的应用访问」,不过这个选项现在基本被Google淘汰了,还是建议开两步验证用应用密码更安全。

额外小提示:处理附件(可选)

我看到你HTML表单里做了附件上传,但控制器代码没处理这块。要是需要支持用户上传附件,加这段代码就行(放在mail.IsBodyHtml = true;后面):

// 检查是否有上传的文件
if (Request.Files.Count > 0)
{
    foreach (string fileName in Request.Files)
    {
        HttpPostedFileBase file = Request.Files[fileName];
        // 确保文件存在且有内容
        if (file != null && file.ContentLength > 0)
        {
            var attachment = new Attachment(file.InputStream, file.FileName);
            mail.Attachments.Add(attachment);
        }
    }
}

这样改完之后,用户提交表单时,邮件就会乖乖发到你的邮箱里,而且你回复的时候直接点回复就能到用户的邮箱,完美解决你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:09:12