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

基于.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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 20:06:19