代码之家  ›  专栏  ›  技术社区  ›  Hongbo Miao

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

  •  1
  • Hongbo Miao  · 技术社区  · 8 年前

    我正在使用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": []
            }
        ]
    }
    

    我没有找到任何与确定它是否是自动回复邮件相关的字段。

    现在我正在使用

    mail.subject.startsWith('Automatic reply:')
    

    确定代码中是否为自动回复邮件。

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

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

    3 回复  |  直到 8 年前
        1
  •  3
  •   rlb.usa    8 年前

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

    但有两种方法可能有用:

    方法1:检测响应时间

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

    方法2:关键词

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

    例如:

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

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

        2
  •  3
  •   Horkrine Charles Landau    8 年前

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

        3
  •  1
  •   Hongbo Miao    8 年前

    刚刚找到另一个有趣的API getMailTips 然而 如果其他用户是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
            }
        ]
    }
    
    推荐文章