从gmail获取带有Content-Disposition的附件,但不包含“文件名”,而是使用“名称”,而没有附件ID

时间:2019-03-07 14:46:15

标签: c# gmail-api email-attachments

更新的问题,新信息,问题是不同的消息布局。

对于一个应用程序,我使用了Gmail API,该API成功地从Google Developers中使用的Gmail API中检索了附件。但是有些消息与其余消息不同,没有html消息(该消息也是base64编码的),附件的“标签”也不同:

此方法有效,API可以找到附件:

--000000000000ff7fdb05837ee23d--
--000000000000ff7fe105837ee241
Content-Type: application/pdf; name="inv20190275.PDF"
Content-Disposition: attachment; filename="inv20190275.PDF"
Content-Transfer-Encoding: base64
Content-ID: <16957c99f59399ae79b1>
X-Attachment-Id: 16957c99f59399ae79b1

为此,找不到附件(第一行可能是之前的行):

----boundary_141_b8719500-62b8-4b0e-9018-36676671a768--

----boundary_140_e2c718ec-c2f4-40e5-a244-18917f7e1c5c--

----boundary_142_795676fe-01cb-4744-ac4f-c90f6a4e8843
Content-Type: multipart/mixed;
    boundary="--boundary_143_6415c656-2b4b-4837-9481-ada707bbdb52"

----boundary_143_6415c656-2b4b-4837-9481-ada707bbdb52
Content-Type: application/octet-stream; name="3317608.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment

我使用的代码:

private void SaveAttachment(Message email)
{   
    Message message = service.Users.Messages.Get(mailadres, email.Id).Execute();
    IList<MessagePart> parts = message.Payload.Parts;

    foreach (MessagePart part in parts)
    {
        //For every email I get an empty messagebox (if no attachment found).
        MessageBox.Show("attachmentId: " + part.Body.AttachmentId);  

        if (!string.IsNullOrEmpty(part.Filename))
        {
            //No attachment found, so no messagebox here.
            MessageBox.Show("filename: " + part.Filename);

            string attId = part.Body.AttachmentId;
        }
    }
}

如何使我的代码重新识别附件存储在邮件的不同部分中的事实?看来它没有存储在Message.Payload.Parts中。

旧问题:

对于一个应用程序,我使用了Gmail API,该API成功地从Google Developers中使用的Gmail API中检索了附件。但是由于未知原因,API指出在某些情况下没有附件,其中附件在Gmail中可见且可打开。该代码指出:

  • AttachmentId字符串为空(“”)
  • part.Filename字符串也为空

我的代码是:

private void SaveAttachment(Message email)
{   
    Message message = service.Users.Messages.Get(mailadres, email.Id).Execute();
    IList<MessagePart> parts = message.Payload.Parts;

    foreach (MessagePart part in parts)
    {
        //For every email I get an empty messagebox (if no attachment found).
        MessageBox.Show("attachmentId: " + part.Body.AttachmentId);  

        if (!string.IsNullOrEmpty(part.Filename))
        {
            //No attachment found, so no messagebox here.
            MessageBox.Show("filename: " + part.Filename);

            string attId = part.Body.AttachmentId;
        }
    }
}

电子邮件看起来像regulair电子邮件。有些是通过“ flowmailer.net”发送的,有些只是通过正常外观的电子邮件地址发送的。

我没有在网上找到类似的问题,也不知道在哪里寻找问题的原因。这是错误还是我做错了/不完整的事情?

0 个答案:

没有答案