【问题标题】:Sending email with attachments using Mailgun and Httpclient使用 Mailgun 和 Httpclient 发送带有附件的电子邮件
【发布时间】:2021-08-24 20:50:25
【问题描述】:

尝试使用 Mailgun 和 dotnet 核心 Azure 函数中的 Httpclient 发送带有附件的电子邮件。

Mailguns 文档使用 RestClient,我不想在代码库中使用或引入它,而且我很难让附件与 HttpClient 一起使用。

虽然答案似乎不适用于 Mailgun API 的 v3,但这个问题与我的完全相同。 Email Attachments in HttpClient

代码的重要部分如下所示:

var formContent = new MultipartFormDataContent();
   
formContent.Add(new StringContent($"Testing This thing <{_settings.CurrentValue.MailgunFrom}>"), "from");
formContent.Add(new StringContent(string.Join(",", to)), "to");
formContent.Add(new StringContent(subject), "subject");
formContent.Add(new StringContent(body), "text");                    

ByteArrayContent fileContent = new ByteArrayContent(theBytes);
                    
fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
       {
          Name = "Daily report",
          FileName = System.IO.Path.GetFileName(somelongFilepath)
       };

formContent.Add(fileContent);                    

var result = _httpClient.PostAsync($"v3/{_settings.CurrentValue.MailgunDomain}/messages", formContent).Result;
result.EnsureSuccessStatusCode();

我尝试了各种 ContentDispositon,包括inlineattachment,都没有生成带附件的电子邮件。

我确实收到了电子邮件,只是没有任何附件。

如何使用 HTTPClient 发送电子邮件并包含附件?

【问题讨论】:

  • 您是否尝试过这样做,formContent.Add(fileContent,'attachment',System.IO.Path.GetFileName(somelongFilepath)); 并删除更改 ContentDisposition fileContent.Headers.ContentDisposition... 的代码部分
  • 就是这样!!非常感谢朋友!。如果您发布答案,我会很乐意接受。

标签: c# .net-core httpclient mailgun


【解决方案1】:

问题在于您为文件正文指定的名称(不是文件名或标题) 作为官方文档

ContentDispositionHeaderValue.Name is the the name for the content body part.

并且 mailgun 的文档提到参数名称应该是“附件”,因此您可以将代码更改为这样

fileContent.Headers.ContentDisposition = new 

    ContentDispositionHeaderValue("form-data")
           {
              Name = "attachment",
              FileName = System.IO.Path.GetFileName(somelongFilepath)
           };

或者说清楚一点

formContent.Add(fileContent, 'attachment', System.IO.Path.GetFileName(somelongFilepath));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 1970-01-01
    • 2015-01-13
    • 2019-05-11
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多