我試圖在使用C#的Winforms應用程序中生成Gmail草稿消息。草稿消息需要採用HTML格式並能夠包含附件。帶MimeKit,C#Winforms和Google API的Gmail草案(帶附件的HTML)
我能夠使用AE.Net.Mail
生成帶附件的草稿,但草稿消息是純文本格式的(我無法弄清楚如何編寫AE.Net.Mail
來爲我提供HTML Gmail草稿消息)。
爲了將消息轉換爲HTML格式,我使用MimeKit取消System.Net.Mail
消息並將其轉換爲MimeMessage
消息。但是,我無法弄清楚如何根據Gmail草案規範的要求,以RFC 2822格式和URL安全的base64編碼字符串獲取MIME郵件。
下面是從MimeKit轉換嘗試的代碼:
var service = new GmailService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
MailMessage msg = new MailMessage(); //System.Net.Mail
msg.IsBodyHtml = true;
msg.Subject = "HTML Email";
msg.Body = "<a href = 'http://www.yahoo.com/'>Enjoy Yahoo!</a>";
msg.Attachments.Add(file);
MimeMessage message = MimeMessage.CreateFromMailMessage(msg); //MimeKit conversion
//At this point I cannot figure out how to get the MIME message into
//an RFC 2822 formatted and URL-safe base64 encoded string
//as required by the Gmail draft specification
//See working code below for how this works in AE.Net.Mail
下面是使用AE.Net.Mail
,工程的代碼,但生成的Gmail草案的正文作爲純文本(通過基於this article傑森Pettys):
var service = new GmailService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
var msg = new AE.Net.Mail.MailMessage //msg created in plain text not HTML format
{
Body = "<a href = 'http://www.yahoo.com/'>Enjoy Yahoo!</a>"
};
var bytes = System.IO.File.ReadAllBytes(filePath);
AE.Net.Mail.Attachment file = new AE.Net.Mail.Attachment(bytes, @"application/pdf", FileName, true);
msg.Attachments.Add(file);
var msgStr = new StringWriter();
msg.Save(msgStr);
Message m = new Message();
m.Raw = Base64UrlEncode(msgStr.ToString());
Draft draft = new Draft(); //Gmail draft
draft.Message = m;
service.Users.Drafts.Create(draft, "me").Execute();
private static string Base64UrlEncode(string input)
{
var inputBytes = System.Text.Encoding.ASCII.GetBytes(input);
// Special "url-safe" base64 encode.
return Convert.ToBase64String(inputBytes)
.Replace('+', '-')
.Replace('/', '_')
.Replace("=", "");
}
有沒有辦法來MimeKit的MimeMessage
消息轉換成格式化的RFC 2822和URL - 安全的base64編碼的字符串,以便它可以生成爲Gmail草稿?否則,有沒有辦法在編碼之前創建HTML格式的AE.Net.Mail
消息?所有的幫助非常感謝。
您有幾篇關於Drafts API Gmail的文章。您是否嘗試過使用EML格式下載草稿或消息? – Kiquenet
@Kiquenet你在這個問題的下一個評論中提出了一個問題,我在答覆評論中回答,然後兩個都被刪除了。 (也許由你?)現在你在評論中發佈上述問題。我在這篇文章中的問題是在一年多前解決的。我不知道你爲什麼要詢問我是否嘗試過EML格式。我的問題已得到解答。我確實發佈了三個不同的問題。兩個人被回答,一個人保持開放狀態(我應該關閉,並且會把我的工作列入清單)。感謝您的關注,但我不再需要有關此特定問題的幫助。 – joeschwa