c# - 使用 Gmail API 转发电子邮件
问题描述
我可以使用Gmail api在同一个邮件线程中回复
对于转发电子邮件,我找不到任何直接参考。所以我请求了整个消息体传递消息 ID 并尝试使用这些作为参考更改几个字段
public ActionResult ForwardEmail(CancellationToken cancellationToken,string ID)
{
try
{
var result = new AuthorizationCodeMvcApp(this, new GmailApiFilter()).
AuthorizeAsync(cancellationToken).Result;
if (result.Credential != null)
{
var service = new GmailService(new BaseClientService.Initializer
{
HttpClientInitializer = result.Credential, ApplicationName = "ASP.NET MVC Sample"
});
var emailInfoReq = service.Users.Messages.Get("me", ID);
emailInfoReq.Format = UsersResource.MessagesResource.GetRequest.FormatEnum.Raw;
var emailInfoResponse = emailInfoReq.Execute();
using (MemoryStream rawInStream = new MemoryStream(Base64FUrlDecode(emailInfoResponse.Raw)))
using (MemoryStream rawOutStream = new MemoryStream())
{
var tempcheck = MimeKit.MimeMessage.Load(rawInStream);
tempcheck.ResentFrom.Add(new MimeKit.MailboxAddress("", "From@email.com"));
tempcheck.ResentTo.Add(new MimeKit.MailboxAddress("", "to@email.com"));
tempcheck.ResentDate = DateTime.Now;
tempcheck.ResentMessageId = tempcheck.MessageId;
tempcheck.WriteTo(rawOutStream);
emailInfoResponse.Raw = Base64UrlEncode(rawOutStream.ToArray());
}
var tempq = service.Users.Messages.Send(emailInfoResponse,"me");
var temp = tempq.Execute();
return Json(temp);
}
else
{
return new RedirectResult(result.RedirectUri);
}
}
catch(Exception ex)
{
return Json(ex.Message);
}
}
错误
Google.Apis.Requests.RequestError Precondition Failed [412] Errors [ Message[Precondition Failed] Location[If-Match - header] Reason[conditionNotMet] Domain[global] ]
解决方案
推荐阅读
- javascript - 无法理解 Math.max.apply(null,[arrayArg]) 的工作原理?
- node.js - Twilio打电话时如何接收号码?
- amazon-web-services - 无法通过 HTTP/HTTPS 访问 EC2
- kubernetes - 未找到 Kubernetes StorageClass
- c# - 为什么 Unity 精灵颜色不会随着我的更新功能而改变?
- r - 如何将r中的数据框从正数转换为负数
- rust - 您如何等待分离的线程或控制线程的产生方式?
- javascript - 从字符串中提取的 Javascript ID 不起作用
- node.js - Heroku 应用程序不适用于自定义域
- c++ - 如何从堆栈溢出中停止void函数