新的Gmail API允许我们创建和查看草稿,但有没有办法获取URL链接来查看草稿?
我可以使用草稿的ThreadId手动创建链接,如下所示:
https://mail.google.com/mail/u/0/#drafts?compose= {ThreadId}
但如果谷歌决定改变这些网址的结构,那就有点脆弱了.我也不知道其他国家/地区的网址是否会有所不同.0也将根据您在浏览器中登录的帐户数量而变化.是否有更好的方法来获取此链接,而不是像我一样手动创建它?
此外,有没有办法将身份验证信息与URL一起传递,以便用户在访问网页时登录?我假设没有办法做到这一点,但我想检查一下.如果用户未登录,则草稿链接会显示登录页面,登录后不会显示草稿.
我正在使用谷歌应用程序脚本,并希望创建一个脚本,从草稿中提取邮件,如果标签为"明天发送",则发送它们.查找带有特定标签的草稿非常简单:
var threads = GmailApp.search('in:draft label:send-tomorrow');
Run Code Online (Sandbox Code Playgroud)
但是我没有看到用于发送消息的API!我看到的唯一选择是: - 打开消息 - 提取正文/附件/ title/from/to/cc/bcc - 发送带有上述参数的新消息 - 销毁之前的草稿
这看起来很烦人,我不确定它是否适用于嵌入式图像,多个附件等...
任何提示?
我想在没有原始消息的线程中获取回复消息.但是,当我使用Users.messages:GET或Users.threads:GET时,我收到原始消息(不需要的)的回复(根据需要).请参见以下代码截图.
(据我所知,这个问题也在这里提出,但是我没有发现提议的解决方案回答了问题,并且提议的解决方案的海报建议我开始一个新问题.我尝试使用Users.threads作为Tholle然而,建议收到相同的结果.)
我是一个菜鸟,所以任何和所有的帮助都非常感激,如果我遗漏了一些明显的东西,我会道歉.
var gapiGETRequest = function (gapiRequestURL)
{
var xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", gapiRequestURL, false );
xmlHttp.send( null );
return xmlHttp.responseText;
}
var gapiRequestInboxMessagesAndToken = "https://www.googleapis.com/gmail/v1/users/me/messages?q=-label%3ASENT+in%3AINBOX&access_token=" + thisToken
var allMessagesReceived = gapiGETRequest(gapiRequestInboxMessagesAndToken)
var allMessagesObject = JSON.parse(allMessagesReceived)
var messageIdsOfReceivedMessages = [];
var getIdsOfReceivedMessages = function(responseObject){
for(var i=0; i < responseObject.messages.length; i ++) {
messageIdsOfReceivedMessages.push(responseObject.messages[i].id);
}
}
var messageContentsArr = [];
var getMessageContents = function(messageIdList)
{
for(var i=0; i < messageIdList.length; i++)
{
var gapiRequestMessageWithId = …Run Code Online (Sandbox Code Playgroud) 我试图在我的两个gmail帐户上执行gmail api的监视,并且工作正常。
但是当其他用户尝试这样做时,它显示此错误:
HTTP错误400:“每个开发人员仅允许一个用户推送通知客户端(调用/ stop然后重试)>”
我不知道问题出在发布/订阅客户端配置上还是停下来观察可以解决问题?
有人可以解释“每个开发人员只允许一个用户推送通知客户端”这一说法的意思吗?
我的团队正在讨论如何在客户平台上改进防欺诈算法.欺诈活动中使用的电子邮件地址通常会在免费邮件提供商(如Gmail)中注册,这并不奇怪.
我们作为欺诈预防系统的输入而缺少的一个标准是给我们提供非常有价值的信息,即帐户的年龄.
是否有API方法(或任何其他方式)允许我们查询Gmail帐户何时注册?
像https://api.gmail.com/age-of-account/email.address@gmail.com这样的东西,它返回自创建以来的日期或时间跨度,将非常有用.
我按照Google的快速启动示例设置了GMail API:https://developers.google.com/gmail/api/quickstart/android
我的应用成功请求GET_ACCOUNTS权限,并允许用户选择他/她的Gmail帐户.所选帐户将保存在SharedPreferences中以供以后访问.
通过IntentService,我的应用程序会发送一封电子邮件.我按照此处的说明操作:https://developers.google.com/gmail/api/guides/sending,并根据需要包含activation.jar,additional.jar和mail.jar库.当我发送带有以下代码的电子邮件时,我得到一个UserRecoverableAuthUIException:
message = service.users().messages().send(userId, message).execute();
Run Code Online (Sandbox Code Playgroud)
当我捕获异常时,获取与异常一起存储的意图,并将意图作为新活动启动,我会看到一个对话框,让我有机会允许我的应用程序使用我的GMail帐户发送电子邮件:
在此对话框上按"允许"后,我的应用程序会发送电子邮件而不会出现任何其他问题.我的应用也会显示在我的Google帐户的在线权限页面上,表示它有权发送电子邮件.
当我第一次获取用户的帐户名而不是等待发生异常时,有没有办法手动触发此对话框?
UPDATE
我已经能够提取存储在intent中的动作和数据,如果这有助于任何:
其中KEY是一系列字符,可能链接到我的帐户或是一个令牌.
编辑:
以下是创建Credentials对象并启动我正在使用的帐户选择器活动的代码:
private GoogleAccountCredential mCredential;
private static final String[] SCOPES = { GmailScopes.GMAIL_COMPOSE };
Run Code Online (Sandbox Code Playgroud)
内部构造函数:
mCredential = GoogleAccountCredential.usingOAuth2(
getApplicationContext(), Arrays.asList(SCOPES))
.setBackOff(new ExponentialBackOff());
Run Code Online (Sandbox Code Playgroud)
我在哪里获得帐户:
private void chooseGMailAccount() {
String accountName = this.getSharedPreferences(getString(R.string.shared_pref_main),
Context.MODE_PRIVATE)
.getString(getString(R.string.srd_pref_gmail_account), null);
if (accountName != null) {
mCredential.setSelectedAccountName(accountName);
configureGMailAPI();
} else {
startActivityForResult(
mCredential.newChooseAccountIntent(),
REQUEST_ACCOUNT_PICKER);
}
}
Run Code Online (Sandbox Code Playgroud) android android-authenticator google-oauth gmail-api android-googleapiclient
我可以通过传递userId、nessageID和attachmentID来获取附件(参考:
我收到如下回复。
{
"data": "JVBERi0xLjYKJeTjz9IKMSAwIG9iagpbL1BERi9JbWFnZUIvSW1hZ2VDL0l...."
"size": 629163
}
我想解码数据以保存在我的本地应用程序中,稍后我将显示 .
我可以成功下载并保存在本地(文档文件夹)但看不到附件中的内容,请完善我。
查看 GMail 消息时,URL 过去仅包含消息 ID,然后我可以使用 GMail API 轻松查询该消息 ID。
例如,当查看电子邮件时,URL 类似于
https://mail.google.com/mail/u/1/#inbox/167d7bc198aa3059
Run Code Online (Sandbox Code Playgroud)
这对于特定电子邮件的开发和调试问题很方便。我可以使用 167d7bc198aa3059 调用 get_user_message
但现在,相同的 URL 可以这样表示:
https://mail.google.com/mail/u/1/#inbox/WhctKJVJZkbrQVvLJqnhlZMQRckHrPbrhZMXXWzVswzckGCcRjQSZzjsPwcfhsDNXsFTDTG
Run Code Online (Sandbox Code Playgroud)
如何从新的 GMail URL 格式中找到要在 API 上查询的消息 ID?
或者是否有一个简单的编码/解码来转换
WhctKJVJZkbrQVvLJqnhlZMQRckHrPbrhZMXXWzVswzckGCcRjQSZzjsPwcfhsDNXsFTDTG
Run Code Online (Sandbox Code Playgroud)
进入
167d7bc198aa3059
Run Code Online (Sandbox Code Playgroud)
?
我正在构建一个 Gmail 插件,它允许用户将模板插入撰写窗口。
它工作正常,但我想获取他们正在编辑的草稿的 ID,但我不知道如何获取。
假设它是最新的草稿是不安全的,因为我不是以编程方式创建草稿。
对于 Gmail API,如果您不提供 FROM 标头,FROM 标头将设置为发件人的电子邮件地址。如果我将 FROM 标头设置为以下任何形式,Gmail 就会向我的收件人显示网络钓鱼警告,指出“请小心此邮件。Gmail 无法验证它是否确实来自 [...]”:
姓名 <me@gmail.com>
'姓名'<me@gmail.com>
“姓名”<me@gmail.com>
其中名称的形式与我的显示名称完全相同。
有没有办法在不创建网络钓鱼警告的情况下发送我的显示名称?
gmail-api ×10
gmail ×7
android ×1
base64 ×1
decoding ×1
email ×1
gmail-addons ×1
google-api ×1
google-oauth ×1