基于.NET Framework的Highcharts导出PDF邮件发送方案问询
实现方案:AJAX上传PDF到.NET Framework服务端并发送邮件
完全可以通过AJAX将PDF上传至服务端,再由.NET Framework服务端完成邮件发送,这是前后端协作实现此类需求的常规方案,具体步骤如下:
1. 客户端AJAX上传PDF文件
客户端需要将Highcharts生成的PDF Blob对象包装成FormData,通过AJAX发送到服务端接口,同时携带用户输入的邮箱地址。
示例代码(jQuery版本):
// 假设已通过Highcharts导出获取到PDF的Blob对象 const pdfBlob = ...; // 你的Highcharts导出返回的Blob实例 const userEmail = document.getElementById('emailInput').value; // 用户输入的邮箱 // 构建FormData,包含文件和邮箱 const formData = new FormData(); formData.append('pdfFile', pdfBlob, 'charts_report.pdf'); formData.append('targetEmail', userEmail); // 发送AJAX请求 $.ajax({ url: '/Home/SendPdfByEmail', type: 'POST', data: formData, processData: false, // 禁止自动处理FormData,否则文件会被错误编码 contentType: false, // 让浏览器自动设置正确的Content-Type success: function(res) { alert(res.message); }, error: function(xhr) { alert('操作失败:' + xhr.responseText); } });
2. .NET Framework服务端接收并发送邮件
在服务端编写接口(以MVC Controller为例),接收上传的PDF文件和邮箱地址,通过SMTP协议发送邮件。
示例代码:
using System.Net; using System.Net.Mail; using System.Web; using System.Web.Mvc; public class HomeController : Controller { [HttpPost] public JsonResult SendPdfByEmail() { // 获取目标邮箱 string targetEmail = Request.Form["targetEmail"]; if (string.IsNullOrWhiteSpace(targetEmail)) { return Json(new { success = false, message = "请输入有效邮箱地址" }); } // 获取上传的PDF文件 HttpPostedFileBase pdfFile = Request.Files["pdfFile"]; if (pdfFile == null || pdfFile.ContentLength <= 0) { return Json(new { success = false, message = "未检测到PDF文件" }); } try { // 配置SMTP客户端(根据实际邮箱服务商调整参数) using (var smtpClient = new SmtpClient("smtp.xxx.com", 587)) { smtpClient.Credentials = new NetworkCredential("your-account@xxx.com", "your-password"); smtpClient.EnableSsl = true; // 构建邮件内容 var mailMsg = new MailMessage(); mailMsg.From = new MailAddress("your-account@xxx.com", "报表系统"); mailMsg.To.Add(targetEmail); mailMsg.Subject = "您的Highcharts图表PDF报表"; mailMsg.Body = "您好,这是您请求的图表PDF文件,请查收附件。"; // 添加PDF附件 mailMsg.Attachments.Add(new Attachment(pdfFile.InputStream, pdfFile.FileName)); // 发送邮件 smtpClient.Send(mailMsg); } return Json(new { success = true, message = "邮件已成功发送" }); } catch (Exception ex) { return Json(new { success = false, message = $"发送失败:{ex.Message}" }); } } }
3. 关键注意事项
- 文件大小限制:默认.NET Framework对上传文件大小有限制,需要在
web.config中调整配置:<system.web> <httpRuntime maxRequestLength="1048576" /> <!-- 单位KB,此处设置为1GB --> </system.web> <!-- IIS 7及以上需额外配置 --> <system.webServer> <security> <requestFiltering> <requestLimits maxAllowedContentLength="1073741824" /> <!-- 单位字节,此处设置为1GB --> </requestFiltering> </security> </system.webServer> - 邮箱格式校验:客户端和服务端都要添加邮箱格式验证,避免无效地址导致发送失败。
- 安全性:公网部署时需添加验证码、频率限制等措施,防止恶意邮件发送请求。
内容的提问来源于stack exchange,提问作者narutouzumaki 99
相关产品推荐
相关产品推荐

