如何在Unity中使用C#脚本实现点击按钮发送问卷结果邮件?
实现点击按钮发送问卷结果邮件的方案
无需额外下载库的原生实现(解决库下载失败问题)
.NET框架自带System.Net.Mail命名空间,完全不需要安装第三方库,直接就能实现邮件发送功能,适配你的场景。以下是具体步骤(以WinForms为例,WPF逻辑一致):
收集问卷结果
从你的问卷控件(文本框、单选框、复选框等)中提取用户填写的内容,拼接成邮件正文。编写按钮点击事件代码
在按钮的Click事件中添加如下代码:
using System.Net; using System.Net.Mail; using System.Windows.Forms; private void btnSubmitSurvey_Click(object sender, EventArgs e) { // 1. 收集问卷数据,根据你的控件自行调整 string surveyContent = $"用户姓名:{txtUserName.Text}\n" + "问卷选项:\n" + $"Q1满意度:{radioGroupSatisfaction.SelectedText}\n" + $"Q2建议:{txtAdvice.Text}"; // 2. 邮件基础配置 string senderEmail = "你的发送邮箱@example.com"; string receiverEmail = "接收问卷的邮箱@example.com"; string smtpServer = "smtp.example.com"; // 对应邮箱的SMTP服务器,比如QQ邮箱是smtp.qq.com int smtpPort = 587; // 常用端口,QQ/163等邮箱一般用587 string authCode = "你的邮箱SMTP授权码"; // 注意:不是邮箱登录密码,是SMTP授权码 // 3. 构建邮件 MailMessage mail = new MailMessage(senderEmail, receiverEmail) { Subject = "新的问卷提交结果", Body = surveyContent, IsBodyHtml = false // 若要发送HTML格式邮件,改为true }; // 4. 配置SMTP客户端 SmtpClient smtpClient = new SmtpClient(smtpServer, smtpPort) { Credentials = new NetworkCredential(senderEmail, authCode), EnableSsl = true // 开启SSL加密,大部分邮箱要求必须开启 }; // 5. 发送邮件并处理结果 try { smtpClient.Send(mail); MessageBox.Show("问卷已成功发送!"); } catch (Exception ex) { MessageBox.Show($"发送失败:{ex.Message}"); } finally { // 释放资源 mail.Dispose(); smtpClient.Dispose(); } }
- 关键注意事项
- SMTP授权码获取:登录你的邮箱(如QQ/163),在设置中找到「POP3/SMTP服务」并开启,然后生成授权码,用这个授权码代替登录密码。
- 端口与加密:不同邮箱的SMTP服务器和端口不同,比如QQ邮箱是
smtp.qq.com:587,163邮箱是smtp.163.com:587,必须开启EnableSsl=true。 - 防火墙/杀毒软件:确保你的电脑没有拦截SMTP端口的出站请求,否则会发送失败。
若仍想使用第三方库(解决NuGet下载失败问题)
如果之前尝试下载MailKit等库失败,大概率是NuGet源配置问题:
- 打开Visual Studio的「工具」→「NuGet包管理器」→「包管理器设置」,检查包源是否包含官方源
https://api.nuget.org/v3/index.json,若没有则添加。 - 若网络不稳定,可手动到NuGet官网下载对应库的
.nupkg文件,然后通过「本地包源」安装。
内容的提问来源于stack exchange,提问作者SomeoneIDK
相关产品推荐
相关产品推荐

