Outlook 如何知道它是Microsoft Graph中的自动回复邮件?

Outlook 如何知道它是Microsoft Graph中的自动回复邮件?,outlook,microsoft-graph-api,Outlook,Microsoft Graph Api,我正在使用Microsoft Graph API获取邮件 GET /v1.0/me/messages 它回来了 { "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('576552d5-3bc0-42a6-a23d-bfceb405db23')/messages", "@odata.nextLink": "https://graph.microsoft.com/v1.0/me/messages

我正在使用Microsoft Graph API获取邮件

GET /v1.0/me/messages
它回来了

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('576552d5-3bc0-42a6-a23d-bfceb405db23')/messages",
    "@odata.nextLink": "https://graph.microsoft.com/v1.0/me/messages?$skip=11",
    "value": [
        {
            "@odata.etag": "W/\"HwAAABYAAACpTc/InBsuTYwTUBb+VIb4AACqi2tx\"",
            "id": "AAMkADBlZTUwNTkxLWVmODgtNDVhNC1iZjhlLTdjNjA1ODZlMDI2MgBGAAAAAACUbnk-iwQZRbXMgkfKtmYhBwCpTc-InBsuTYwTUBb_VIb4AAAAAAEMAACpTc-InBsuTYwTUBb_VIb4AACqNTk9AAA=",
            "createdDateTime": "2017-12-06T21:57:09Z",
            "lastModifiedDateTime": "2017-12-06T21:57:19Z",
            "changeKey": "HwAAABYAAACpTc/InBsuTYwTUBb+VIb4AACqi8tx",
            "categories": [],
            "receivedDateTime": "2017-12-06T21:57:09Z",
            "sentDateTime": "2017-12-06T21:56:16Z",
            "hasAttachments": false,
            "internetMessageId": "<e74a536a53d245e49d779d47f774f4a0@CO2PR00MB0214.namprd00.prod.outlook.com>",
            "subject": "Automatic reply: Hi",
            "bodyPreview": "I am OOF.",
            "importance": "normal",
            "parentFolderId": "AAMkADBlZTUwNTkxLWVmODgtNDVhNC1iZjhlLTdjNjA2ODZlMDI5MgAuAAAAAACUbnk-iwQZRbXMgkfKtmYhAQCpTc-InBsuTYwTUBb_VIb4AAAAAAEMAAA=",
            "conversationId": "AAQkADBlZTUwNTkxLWVmODgtNDVhNC1iZjhlLTdjNjA2ODZlMDI5MgAQAPekscpearpHmBFbhG0DKuc=",
            "isDeliveryReceiptRequested": null,
            "isReadReceiptRequested": false,
            "isRead": true,
            "isDraft": false,
            "webLink": "https://outlook.office365.com/owa/?ItemID=AAMkADBlZTUwNTkxLWVmODgtNDVhNC1iZjhlLTdjNjA1ODZlMDI5MgBGAAAAAACUbnk%2FiwQZRbXMgkfKtmYhBwCpTc%2FInBsuTYwTUBb%2BVIb4AAAAAAEMAACpTc%2FInBsuTYwTUBb%2BVIb4AACqNTk2AAA%3D&exvsurl=2&viewmodel=ReadMessageItem",
            "inferenceClassification": "focused",
            "body": {
                "contentType": "html",
                "content": "hi"
            },
            "sender": {
                "emailAddress": {
                    "name": "Jack",
                    "address": "jack@example.com"
                }
            },
            "from": {
                "emailAddress": {
                    "name": "Jack",
                    "address": "jack@example.com"
                }
            },
            "toRecipients": [
                {
                    "emailAddress": {
                        "name": "Rose",
                        "address": "rose@example.com"
                    }
                }
            ],
            "ccRecipients": [],
            "bccRecipients": [],
            "replyTo": []
        }
    ]
}
以确定是否为代码中的自动回复邮件

然而,这是不可靠的。因为有时我收到的邮件以不同的语言开头,比如
Resposta automática:


那么如何正确地知道它是自动回复邮件呢?

我不是专家,但我不相信有任何方法可以确定电子邮件是否是自动回复,除非电子邮件实际上包含一个字符串,上面写着“这是自动回复”或者别的什么。

正如@Horkrine所说,没有官方保证的方法来检测电子邮件是否是自动回复

但有两种方法可能有用:

方法1:检测响应时间

如果你有能力,考虑检查电子邮件发送和响应之间的时间。如果时间在某个阈值内,几乎可以肯定是自动回复。例如,考虑在几秒钟内收到的答复。这与现代垃圾邮件机器人检测技术有很多关联

方法2:关键词

另一种方法是查找关键字,就像您现在所做的那样。然而,你还必须考虑其他语言、拼写变化、拼写错误等。你不会得到所有信息

例如:

mail.subject.contains('Automatic')或mail.subject.contains('Auto-matic')或mail.subject.contains('Away')或mail.subject.contains('out of office'))
... 
或mail.subject.contains('automática')…


与其键入这样的列表,我建议您在互联网上快速搜索,看看是否有这样的列表可以复制粘贴,因为肯定有人以前做过这种事情,并且有一些免费代码。

刚刚找到另一个有趣的API,但是这只能帮助确定其他用户是Outlook还是Office 365用户时的自动邮件

为方便起见,请复制下面的演示

POST https://graph.microsoft.com/api/beta/users/{id|userPrincipalName}/getMailTips

{
    "EmailAddresses": [
        "danas@contoso.onmicrosoft.com", 
        "fannyd@contoso.onmicrosoft.com"
    ],
    "MailTipsOptions": "automaticReplies, mailboxFullStatus"
}
它将返回类似于

{
    "@odata.context":"https://graph.microsoft.com/api/beta/$metadata#Collection(microsoft.graph.mailTips)",
    "value":[
        {
            "emailAddress":{
                "name":"",
                "address":"danas@contoso.onmicrosoft.com"
            },
            "automaticReplies":{
                "message":"<style type=\"text/css\" style=\"\">\r\n<!--\r\np\r\n\t{margin-top:0;\r\n\tmargin-bottom:0}\r\n-->\r\n</style>\r\n<div dir=\"ltr\">\r\n<div id=\"x_divtagdefaultwrapper\" style=\"font-size:12pt; color:#000000; background-color:#FFFFFF; font-family:Calibri,Arial,Helvetica,sans-serif\">\r\n<p>Hi, I am on vacation right now. I'll get back to you after I return.<br>\r\n</p>\r\n</div>\r\n</div>",
                "messageLanguage":{
                    "locale":"en-US",
                    "displayName":"English (United States)"
                }
            },
            "mailboxFull":false
        },
        {
            "emailAddress":{
                "name":"",
                "address":"fannyd@contoso.onmicrosoft.com"
            },
            "automaticReplies":{
                "message":""
            },
            "mailboxFull":false
        }
    ]
}
{
“@odata.context”:”https://graph.microsoft.com/api/beta/$metadata#集合(microsoft.graph.mailTips)”,
“价值”:[
{
“电子邮件地址”:{
“名称”:“,
“地址”:danas@contoso.onmicrosoft.com"
},
“自动复制”:{
“消息”:“\r\n\r\n\r\n\r\n\r\n\r\n你好,我现在正在度假。我回来后会给你回电话。
\r\n

\r\n\r\n”, “消息语言”:{ “区域设置”:“en US”, “显示名称”:“英语(美国)” } }, “mailboxFull”:false }, { “电子邮件地址”:{ “名称”:“, “地址”:fannyd@contoso.onmicrosoft.com" }, “自动复制”:{ “消息”:” }, “mailboxFull”:false } ] }
{
    "@odata.context":"https://graph.microsoft.com/api/beta/$metadata#Collection(microsoft.graph.mailTips)",
    "value":[
        {
            "emailAddress":{
                "name":"",
                "address":"danas@contoso.onmicrosoft.com"
            },
            "automaticReplies":{
                "message":"<style type=\"text/css\" style=\"\">\r\n<!--\r\np\r\n\t{margin-top:0;\r\n\tmargin-bottom:0}\r\n-->\r\n</style>\r\n<div dir=\"ltr\">\r\n<div id=\"x_divtagdefaultwrapper\" style=\"font-size:12pt; color:#000000; background-color:#FFFFFF; font-family:Calibri,Arial,Helvetica,sans-serif\">\r\n<p>Hi, I am on vacation right now. I'll get back to you after I return.<br>\r\n</p>\r\n</div>\r\n</div>",
                "messageLanguage":{
                    "locale":"en-US",
                    "displayName":"English (United States)"
                }
            },
            "mailboxFull":false
        },
        {
            "emailAddress":{
                "name":"",
                "address":"fannyd@contoso.onmicrosoft.com"
            },
            "automaticReplies":{
                "message":""
            },
            "mailboxFull":false
        }
    ]
}