C# 使用Gmail API处理电子邮件

C# 使用Gmail API处理电子邮件,c#,asp.net-mvc,gmail-api,C#,Asp.net Mvc,Gmail Api,我可以使用相同的邮件线程回复 对于转发电子邮件,我找不到任何直接参考。所以我请求传递消息ID的整个消息体,并尝试使用 公共操作结果转发电子邮件(CancellationToken CancellationToken,字符串ID) { 尝试 { var result=new AuthorizationCodeMvcApp(这是新的GmailApiFilter())。 AuthorizeAsync(cancellationToken).Result; 如果(result.Credential!=nu

我可以使用相同的邮件线程回复

对于转发电子邮件,我找不到任何直接参考。所以我请求传递消息ID的整个消息体,并尝试使用

公共操作结果转发电子邮件(CancellationToken CancellationToken,字符串ID) { 尝试 { var result=new AuthorizationCodeMvcApp(这是新的GmailApiFilter())。 AuthorizeAsync(cancellationToken).Result; 如果(result.Credential!=null) { var service=new-GmailService(new-BaseClientService.Initializer { HttpClientInitializer=result.Credential,ApplicationName=“ASP.NET MVC示例” }); var emailInfoReq=service.Users.Messages.Get(“我”,ID); emailInfoReq.Format=UsersResource.MessagesResource.GetRequest.FormatEnum.Raw; var emailInfoResponse=emailInfoReq.Execute(); 使用(MemoryStream rawInStream=new MemoryStream(Base64FUrlDecode(emailInfoResponse.Raw))) 使用(MemoryStream rawOutStream=新的MemoryStream()) { var tempcheck=MimeKit.MimeMessage.Load(rawInStream); tempcheck.ResentFrom.Add(新的MimeKit.MailboxAddress(“,”From@email.com")); tempcheck.resento.Add(新的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(); 返回Json(temp); } 其他的 { 返回新的重定向结果(result.RedirectUri); } } 捕获(例外情况除外) { 返回Json(例如消息); } } 错误


发件人电子邮件地址必须与电子邮件帐户匹配。看起来电子邮件帐户是我,发件人地址是email.com。在谷歌API中,您可以使用“我”作为关键字来引用通过API发出HTTP请求的邮件,因此我认为@jdweng不是100%正确的。从我在代码中看到的情况来看,问题可能在于消息本身的创建。在将原始消息转换为base64字符串之前,请提供原始消息好吗?因此,我们可以从那里测试消息本身是否有效。我所说的是正确的。发件人和电子邮件地址必须匹配。关于发件人部分,我刚才使用了这些
tempcheck.ResentFrom.AddRange(tempcheck.To)
直接移动地址,但最终我在线程中收到了相同的正文电子邮件…必须从同一个@jdwengt返回该对象是变量tempcheck。您已经在Using语句中定义了它。要在Using语句之后获取对对象的引用,需要在Using语句之前定义变量:var-tempcheck;使用(您的使用){tempcheck=MimeKit.MimeMessage.Load(rawInStream);}
Google.Apis.Requests.RequestError Precondition Failed [412] Errors [ Message[Precondition Failed] Location[If-Match - header] Reason[conditionNotMet] Domain[global] ]