提取GMail消息的所有部分的方法

时间:2015-05-22 14:00:38

标签: gmail gmail-api

我可以像这样从GMail那里获得一条消息

Dim GMailMessage As Message = myGMailService.Users.Messages.Get(ProfileUsager.GoogleAccountUserName, ID).Execute

但我必须从此消息中提取附件,CC,主题,收到日期等。我怎么能这样做我尝试使用Raw格式和完整格式,但没有成功,我可以轻松地从此消息中提取所有数据。

您是否有可以帮助我的代码示例或其他内容?

1 个答案:

答案 0 :(得分:0)

我建议您使用邮件解析器,因为有许多关于。

我使用Mailbee

http://www.afterlogic.com/mailbee-net/email-components

将Gmail邮件解析为其对象,然后访问这些属性。

 gr.Format = UsersResource.MessagesResource.GetRequest.FormatEnum.Raw;
 Message m = new Message();
 m = gr.Execute();

 byte[] decodedByte = FromBase64ForUrlString(m.Raw);
 string base64Encoded = Convert.ToString(decodedByte);

 currentMessage = new MailMessage();
 currentMessage.LoadMessage(decodedByte);

 Response.Write(currentMessage.From.DisplayName);

你可以自己解析这个消息,但这很复杂,为什么重新发明轮子。

编辑以回答问题

    public static byte[] FromBase64ForUrlString(string base64ForUrlInput)
    {
        int padChars = (base64ForUrlInput.Length % 4) == 0 ? 0 : (4 - (base64ForUrlInput.Length % 4));
        StringBuilder result = new StringBuilder(base64ForUrlInput, base64ForUrlInput.Length + padChars);
        result.Append(String.Empty.PadRight(padChars, '='));
        result.Replace('-', '+');
        result.Replace('_', '/');
        return Convert.FromBase64String(result.ToString());
    }