我制作了这个小小的 .NET 软件,它可以获取 PDF,将其拆分为多个页面,并使用官方 API 在 Gmail 上创建几封电子邮件草稿,准备好检查和发送。
这是采用
GmailService
对象并创建草稿的方法:
private void CreateDraft(GmailService gmailService, MailDraft mailDraft)
{
var mailMessage = new System.Net.Mail.MailMessage();
mailMessage.To.Add(mailDraft.Recipients);
mailMessage.Subject = mailDraft.Subject;
mailMessage.Body = mailDraft.Body + "\r\n" + mailDraft.Signature;
foreach (System.Net.Mail.Attachment attachment in mailDraft.Attachments)
{
mailMessage.Attachments.Add(attachment);
}
var mimeMessage = MimeKit.MimeMessage.CreateFromMailMessage(mailMessage);
// Add Read Receipt request
if(mailDraft.RequestReadReceipt)
{
// Note that this is correctly filled
Profile currentUserProfile = gmailService.Users.GetProfile("me").Execute();
string currentUserEmail = currentUserProfile.EmailAddress;
mimeMessage.Headers.Add("Disposition-Notification-To", currentUserEmail);
}
var draft = new Draft
{
Message = new Google.Apis.Gmail.v1.Data.Message {
Raw = Encode(mimeMessage)
}
};
Draft createdDraft = gmailService.Users.Drafts.Create(draft, "me").Execute();
}
internal class MailDraft
{
public string Recipients { get; set; }
public string Subject { get; set; }
public string Body { get; set; }
public string Signature { get; set; }
public List<System.Net.Mail.Attachment> Attachments { get; set; }
public bool RequestReadReceipt { get; set; }
}
正如您在代码中看到的,我在 mimeMessage 中设置了一个标头来请求已读回执,这就是
Disposition-Notification-To
,其值等于当前用户的电子邮件地址。
不幸的是,当我在 Gmail 中打开保存的草稿时,它没有将“已读回执”请求设置为打开:
请注意,如果我发送电子邮件而不是将其保存到草稿中(即另一侧请求阅读确认),则这完全有效。
有什么想法吗?
当向邮件添加自定义 MIME 标头并使用 GMail API 将其作为草稿插入时,最终会从邮件中删除附加标头。
我建议在问题跟踪器中将其报告为功能请求,但是已经打开了一个请求相同功能的功能。你可以在这里查看