尝试使用Gmail API发送电子邮件接收'原始'RFC822有效负载消息字符串
问题描述:
我试图用Gmail API执行简单的电子邮件回复。尝试使用Gmail API发送电子邮件接收'原始'RFC822有效负载消息字符串
我收到以下错误:
Google.GoogleApiException: 'Google.Apis.Requests.RequestError
'raw' RFC822 payload message string or uploading message via /upload/* URL required [400]
Errors [
Message['raw' RFC822 payload message string or uploading message via /upload/* URL required] Location[ - ] Reason[invalidArgument] Domain[global]
我的代码是:
var msg = service.Users.Messages.Get("me", labelItem.Id).Execute();//the original email
var toReceipients = GetReceipients(msg, "TO", out int toReceipientsCount);
var ccReceipients = GetReceipients(msg, "CC", out int ccReceipientsCount);
var bccReceipients = GetReceipients(msg, "BCC", out int bccReceipientsCount);
toReceipients.AddRange(ccReceipients);
toReceipients.AddRange(bccReceipients);
var result = string.Join(",", toReceipients);
Message newMsg = new Message();
MessagePartHeader toAddress = msg.Payload.Headers.FirstOrDefault(g => g.Name == "To");
MessagePartHeader fromAddress = msg.Payload.Headers.FirstOrDefault(g => g.Name == "From");
fromAddress.Value = toAddress.Value;
fromAddress.Value = "[email protected]";
toAddress.Value = result;
newMsg.Raw = msg.Raw;
newMsg.Payload = new MessagePart();
newMsg.Payload.Headers = new List<MessagePartHeader>();
newMsg.Payload.Headers.Add(toAddress);
newMsg.Payload.Headers.Add(fromAddress);
newMsg.Payload.MimeType = "text/plain";
MessagePartHeader Subject = msg.Payload.Headers.FirstOrDefault(g => g.Name == "Subject");
newMsg.Payload.Headers.Add(Subject);
//MessagePartHeader References = msg.Payload.Headers.FirstOrDefault(g => g.Name == "References");
MessagePartHeader MessageID = msg.Payload.Headers.FirstOrDefault(g => g.Name == "Message-ID");
newMsg.Payload.Headers.Add(MessageID);
// MessagePartHeader format = msg.Payload.Headers.FirstOrDefault(g => g.Name == "format");
// MessagePartHeader aaa = msg.Payload.Headers.FirstOrDefault(g => g.Name == "In-Reply-To");
msg.Payload = newMsg.Payload;
service.Users.Messages.Send(msg, "me").Execute();
是否有执行原来的电子邮件回复一个简单的方法?
是否有关于如何执行此任务的示例参考?
答
注意Users.messages: send
方法支持的/上传 URI和接受上传的媒体具有以下特征:
- 最大文件大小:35MB
- 可接受的MIME媒体类型:消息/ RFC822
另外,您可能想要查看中给出的详细信息,
Emails are sent as base64url encoded strings within the
raw
property of a message resource. The high-level workflow to send an email is to:
- Create the email content in some convenient way and encode it as a base64url string.
- Create a new message resource and set its
raw
property to the base64url string you just created.- Call
messages.send
, or, if sending a draft,drafts.send
to send the message.
有了这些,尝试设置为base64编码的电子邮件增值的raw
参数在你的请求主体。
只为额外的见解(因为这些都不是C#相关的),看到这些相关的SO职位