在创建邮件并使用Gmail API创建草稿或电子邮件时,您是否可以在正文中嵌入图片?我希望实际嵌入的图像数据类似于将图像(实际数据,而不是链接)复制和粘贴到Gmail电子邮件中,将图像放在内容中.
可以这样做,还是我需要将图像上传到其他位置并使用HTML将图像嵌入电子邮件中?有关如何做的任何指示?
我需要身体中的所有文本来接收电子邮件.
我试过了:
var mesage = GetMessage(service, "me", 1);
Console.WriteLine(mesage.Snippet);
public static Message GetMessage(GmailService service, String userId, String messageId)
{
try
{
return service.Users.Messages.Get(userId, messageId).Execute();
}
catch (Exception e)
{
Console.WriteLine("An error occurred: " + e.Message);
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
但我正在获取截图中显示的片段.
我正在尝试使用通过Gmail API在Javascript客户端附加的jpeg文件发送消息.我到目前为止编写的代码如下:
$.ajax({
type: "POST",
url: "https://www.googleapis.com/upload/gmail/v1/users/me/messages/send?uploadType=multipart",
headers: {
'Authorization': 'Bearer ' + accessToken,
'Content-Type': 'multipart/related; boundary="foo_bar_baz"'
},
data: data
});
Run Code Online (Sandbox Code Playgroud)
哪里data
是一个字符串建立类似的例子在这里找到:
--foo_bar_baz
Content-Type: application/json; charset=UTF-8
{
"raw": "RnJvbTogRW1pbCBUaG9saW4gPGVtdGhvbGluQGdtYWlsLmNvbT4KVG86IEV4YW1wbGUgTmFtZSA8ZW10aG9saW5AZ21haWwuY29tPgpTdWJqZWN0OiBzZHNkCgpzZHNk"
}
--foo_bar_baz
Content-Type: image/jpeg
data:image_jpeg;base64,_9j_4AAQSkZJRgABAQEAYABgAAD_2wBDAAIBAQIBAQICAgICAgIC…bHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3-Pn6_9oADAMBAAIRAxEAPwD-f-iiigD_2Q==
--foo_bar_baz--
Run Code Online (Sandbox Code Playgroud)
我得到的错误是Media type 'image/jpeg' is not supported. Valid media types: [message/rfc822]
可以理解的,因为[message/rfc822]
根据规范,媒体是唯一有效的MIME类型,但上面链接的示例另有说明.
我究竟做错了什么?如果有人能够对此有所了解,我将不胜感激!
我们正在构建一个使用Gmail API的服务.为了了解我们的扩展成本,我想知道使用Gmail API需要多少费用.我已按照https://developers.google.com/gmail/api/v1/reference/quota上的说明操作,直到它说:
如果您已为项目[我们]启用了计费,则单击"配额"会将您带到一个页面,您可以在该页面中查看和更改与配额相关的设置.
该页面上唯一一个用于更改每日配额的选项是"申请更高的配额"; 但是,单击它会打开一个窗口,显示:
请务必查看现有的配额限制,以确认您需要超过每日默认值....如果您只是对限制有疑问,请在Stack Overflow论坛上询问
因此,我在这里问:当一个人的需求超过每日免费配额时,每个API单位的成本是多少?
我在Python/Google App Engine上使用GMail API.我有一个返回某些线程ID的查询,现在我想得到每个线程的最后一条消息.由于结果不一定按日期排序,我想知道什么是最有效的API调用呢?
根据以下评论,我设置了以下批处理功能:
if threads != []:
count = 0 #start a new batch request after every 1000 requests
batch = BatchHttpRequest(callback=get_items)
for t in threads:
batch.add(service.users().threads().get(userId=email, id=t), request_id=some_id)
count += 1
if count % 1000: #batch requests can handle max 1000 entries
batch.execute(http=http)
batch = BatchHttpRequest(callback=get_items)
if not count % 1000:
batch.execute(http=http)
Run Code Online (Sandbox Code Playgroud)
然后执行get_items,其中包括跟随逻辑运行以查明线程中的最后一封电子邮件是否是已发送的项目.
def get_items(request_id, response, exception):
if exception is not None:
print 'An error occurred: %s' % exception
else:
for m in response['messages']: #check each of …
Run Code Online (Sandbox Code Playgroud) 我正在创建一个使用gmail api阅读我的电子邮件的网络应用程序.所有方法都在工作(users.messages.list,users.messages.get等),并在console.log和我的页面HTML中显示.有一点我注意到我必须使用atob来解码body.data并在我的HTML中插入.现在我要下载或阅读为例附件file.docx,和我使用本例这里我注意到,我有过解码后的回调,但如果我这样做,有没有链接只下载或阅读,微软一些代码.如果我复制此代码并创建文档并粘贴它,则表示文件已损坏.
我的代码:
function getAttachments(messageID, parts, callback) {
//console.log(parts);
var attachId = parts.body.attachmentId;
var request = gapi.client.gmail.users.messages.attachments.get({
'id': attachId,
'messageId': messageID,
'userId': 'me'
});
request.execute(function (attachment) {
callback(parts.filename, parts.mimeType, attachment);
});
}
if (att.length > 0) {
for (var i in att) {
getAttachments(response.id, att[i], function (filename, mimeType, attachment) {
console.clear();
console.log(filename, mimeType, attachment);
console.log(atob(attachment.data.replace(/-/g, '+').replace(/_/g, '/')));
inline.append('<a href="" style="display: block">' + filename + '</a>');
});
}
}
Run Code Online (Sandbox Code Playgroud)
UPDATE
我在这里找到了解决方案
使用client.discovered_api('gmail', 'v1')
,我正在使用该gmail.users.messages.send
功能发送电子邮件
它可以很好地发送我的消息,但是当超过电子邮件的配额时,没有错误.
我收到200 OK,一切都很好看.
"id": "15289b1d6b652c17", "threadId": "15289b1d6b652c17","labelIds": ["SENT"]
Run Code Online (Sandbox Code Playgroud)
但对于配额以上的每条消息,我收到一封来自Bounce的电子邮件(nobody@gmail.com)告诉我:
您已达到发送邮件的限制.
这个页面说我应该收到429 error code
,但我没有收到.
什么可能出错?或者,如果有办法查询配额?
编辑:经过调查,即使收到来自任何人的电子邮件告诉我已达到配额,仍然会发送原始电子邮件(这意味着可以以接收许多无人电子邮件为代价来超过配额).
Edit2:我在他们的API页面上报告了一个问题,但仍然没有听到任何人的任何消息.缺乏回应令人困惑.
编辑3:原来他们的解决方案刚刚被设计破坏了.更新配额有延迟(可能超过30分钟......您可以在30分钟内发送大量电子邮件),因此它允许您发送并在告知您的用户之后您的消息未发送(虽然它可能有,但我做了测试.完全不可靠.弹跳中没有信息可以确定哪些消息实际被拒绝.当您代表用户发送100封电子邮件广告系列时,这不起作用.
我尝试了以下代码来创建包含大附件的多部分电子邮件:
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
MimeBodyPart mimeBodyText = new MimeBodyPart();
mimeBodyText.setHeader("Content-Type", "text/html; charset=\"UTF-8\"");
mimeBodyText.setContent(body, "text/html");
Multipart mp = new MimeMultipart();
mp.addBodyPart(mimeBodyText);
if (attachments != null && attachments.size() > 0) {
for (Uri uri : attachments) {
MimeBodyPart mimeBodyAttachment = new MimeBodyPart();
String fileName = UriUtils.getFileName(uri, context);
String mimeType = UriUtils.getMimeType(uri, context);
Log.d(TAG, "Generating file info, uri=" + uri.getPath() + ", mimeType=" + mimeType);
FileInputStream is = UriUtils.generateFileInfo(context, uri, mimeType);
if (is == null) { …
Run Code Online (Sandbox Code Playgroud) 我正在使用Python API for Gmail.我正在查询一些消息并正确检索它们,但消息的正文看起来像完全无意义,即使它的MIME类型被text/plain
称为或text/html
.
我一直在搜索API文档,但他们一直说这是一个字符串,当它显然必须是一些编码...我认为它可能是base64
编码,但尝试用Python解码它base64
给了我TypeError: Incorrect padding
,所以要么它不是base64
或我的解码很糟糕.
我想提供一个很好的例子,但由于我正在处理敏感信息,我将不得不对它进行模糊处理......
{
"payload": {
"mimeType": "multipart/mixed",
"filename": "",
"headers": [
...
],
"body": {
"size": 0
},
"parts": [
{
"mimeType": "multipart/alternative",
"filename": "",
"headers": [
{
"name": "Content-Type",
"value": "multipart/alternative; boundary=001a1140b160adc309053bd7ec57"
}
],
"body": {
"size": 0
},
"parts": [
{
"partId": "0.0",
"mimeType": "text/plain",
"filename": "",
"headers": [
{
"name": "Content-Type",
"value": "text/plain; charset=UTF-8"
},
{
"name": "Content-Transfer-Encoding",
"value": …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个iOS应用程序,我想做的是让应用程序ping一个通用的Gmail帐户来检查最新的电子邮件.
我通过https://developers.google.com/gmail/api/quickstart/ios?ver=swift浏览了Google的指南,但结果不起作用.经过一些谷歌搜索后,似乎某些功能可能已经改变,但他们还没有更新他们的文档.
有没有办法通过https将凭据发送到Gmail并收回电子邮件?我通过Gmail API管理器获得了OAuth密钥,但当我将其作为"access_token"传递时,响应显示"需要登录".