邮件附件时,Gmail API不会返回邮件正文

时间:2017-11-22 15:55:55

标签: .net gmail gmail-api

我一直在努力解决Gmail API的意外行为。

到现在为止,我使用mail.Payload.Parts [0] .Body.Data获取每封邮件的正文,其中包含base64中的邮件正文。在这种情况下,部件的MimeType是text / plain。

问题在于,当我检索的邮件有附件时,部件[0] MimeType是" multipart / alternative",并且它的主体只有空字段。

如果邮件正文有附件,我该怎么办?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以在this site中尝试解决方案。

  

C#简化了.Net框架中的网络编程。 C#描述   使用Socket等通信编程的各种协议   通信,SMTP邮件,UDP,URL等System.Net类   用于通过使用HTTP,TCP与其他应用程序通信   UDP,Socket等。在上一个程序中,我们看到了SMTP email from C#如何描述如何发送带有文本正文的电子邮件。在这里,我们   正在发送附带附件的电子邮件。

以下是提供的示例代码

using System;
using System.Windows.Forms;
using System.Net.Mail;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                MailMessage mail = new MailMessage();
                SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
                mail.From = new MailAddress("your_email_address@gmail.com");
                mail.To.Add("to_address");
                mail.Subject = "Test Mail - 1";
                mail.Body = "mail with attachment";

                System.Net.Mail.Attachment attachment;
                attachment = new System.Net.Mail.Attachment("your attachment file");
                mail.Attachments.Add(attachment);

                SmtpServer.Port = 587;
                SmtpServer.Credentials = new System.Net.NetworkCredential("username", "password");
                SmtpServer.EnableSsl = true;

                SmtpServer.Send(mail);
                MessageBox.Show("mail Send");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
    }
}

您还可以参考文档中的官方.NET Quickstart,这里有关于api的深入讨论以及示例代码和逐步设置过程。

如需进一步参考,您可以访问this SO post