nextcloud / nextcloud/mail

Error deleting messages from Gmail accounts

Open
#10,279 6 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

1. to develop bug
Dominant language
JavaScript
Stars
1k
Forks
348
Avg merge
12h 28m
Merged PRs (30d)
91

Description

Steps to reproduce
  1. Go to mail app
  2. Delete thread or message from a Gmail account
Expected behavior

When I delete an email from my Gmail Inbox, the message is moved to the Trash folder and disappears from Inbox

Actual behavior

Message disappears for a second, then reappears with the error, Could not delete message

Eventually the message does disappear forever, but the time varies (maybe based on whenever a background sync is done?)

The message does appear in the Trash folder even though the log warning says, Could not move message $73695 from INBOX to [Gmail]/Trash

This doesn't seem to happen with other email providers. I've tried with Yahoo and Zoho.

Mail app version

4.0.2

Mailserver or service

Gmail

Operating system

Linux

PHP engine version

PHP 8.2

Web server

Apache (supported)

Database

MySQL

Additional info

Formated Log

[mail] Debug: deleting message
	DELETE /index.php/api/thread/469715
	from ** by ** at Oct 21, 2024, 9:56:48 AM
[mail] Debug: loading messages of mailbox <642>
	GET /index.php/api/messages?mailboxId=642&limit=1&cursor=1729384992
	from ** by ** at Oct 21, 2024, 9:56:48 AM
[mail] Debug: Mail server closed the connection unexpectedly.
	DELETE /index.php/api/thread/469715
	from ** by ** at Oct 21, 2024, 9:56:49 AM
[mail] Warning: Could not move message $73695 from INBOX to [Gmail]/Trash
	DELETE /index.php/api/thread/469715
	from ** by ** at Oct 21, 2024, 9:56:49 AM

The full log

{
  "reqId": "GcERXg1Wl9upNxonq1aU",
  "level": 0,
  "time": "2024-10-21T16:56:48+00:00",
  "remoteAddr": "*****",
  "user": "*****",
  "app": "mail",
  "method": "DELETE",
  "url": "/index.php/api/thread/469715",
  "message": "deleting message",
  "userAgent": "Mozilla/5.0 (X11; Linux x86_64; rv:131.0) Gecko/20100101 Firefox/131.0",
  "version": "30.0.0.14",
  "data": {
    "app": "mail",
    "messageId": "73695",
    "mailboxId": "833"
  },
  "id": "671687d44ad9e"
}
{
  "reqId": "vLSPWf3o3B7TEbIaL7Ob",
  "level": 0,
  "time": "2024-10-21T16:56:48+00:00",
  "remoteAddr": "*****",
  "user": "*****",
  "app": "mail",
  "method": "GET",
  "url": "/index.php/api/messages?mailboxId=642&limit=1&cursor=1729384992",
  "message": "loading messages of mailbox <642>",
  "userAgent": "Mozilla/5.0 (X11; Linux x86_64; rv:131.0) Gecko/20100101 Firefox/131.0",
  "version": "30.0.0.14",
  "data": {
    "app": "mail"
  },
  "id": "671687d44ad9a"
}
{
  "reqId": "GcERXg1Wl9upNxonq1aU",
  "level": 0,
  "time": "2024-10-21T16:56:49+00:00",
  "remoteAddr": "*****",
  "user": "*****",
  "app": "mail",
  "method": "DELETE",
  "url": "/index.php/api/thread/469715",
  "message": "Mail server closed the connection unexpectedly.",
  "userAgent": "Mozilla/5.0 (X11; Linux x86_64; rv:131.0) Gecko/20100101 Firefox/131.0",
  "version": "30.0.0.14",
  "exception": {
    "Exception": "Horde_Imap_Client_Exception",
    "Message": "Mail server closed the connection unexpectedly.",
    "Code": 4,
    "Trace": [
      {
        "file": "/var/www/html/custom_apps/mail/vendor/bytestream/horde-imap-client/lib/Horde/Imap/Client/Socket.php",
        "line": 4560,
        "function": "read",
        "class": "Horde_Imap_Client_Socket_Connection_Socket",
        "type": "->",
        "args": []
      },
      {
        "file": "/var/www/html/custom_apps/mail/vendor/bytestream/horde-imap-client/lib/Horde/Imap/Client/Socket.php",
        "line": 4319,
        "function": "_getLine",
        "class": "Horde_Imap_Client_Socket",
        "type": "->",
        "args": [
          [
            "Horde_Imap_Client_Interaction_Pipeline",
            [
              [],
              [],
              [
                "Horde_Imap_Client_Mailbox"
              ]
            ],
            [
              "Horde_Imap_Client_Fetch_Results"
            ]
          ]
        ]
      },
      {
        "file": "/var/www/html/custom_apps/mail/vendor/bytestream/horde-imap-client/lib/Horde/Imap/Client/Socket.php",
        "line": 4243,
        "function": "_sendCmdChunk",
        "class": "Horde_Imap_Client_Socket",
        "type": "->",
        "args": [
          [
            "Horde_Imap_Client_Interaction_Pipeline",
            [
              [],
              [],
              [
                "Horde_Imap_Client_Mailbox"
              ]
            ],
            [
              "Horde_Imap_Client_Fetch_Results"
            ]
          ],
          [
            [
              "Horde_Imap_Client_Interaction_Command",
              [],
              true,
              false,
              null,
              null,
              [
                "Horde_Imap_Client_Interaction_Pipeline",
                [
                  [],
                  [],
                  [
                    "Horde_Imap_Client_Mailbox"
                  ]
                ],
                [
                  "Horde_Imap_Client_Fetch_Results"
                ]
              ],
              null,
              "7"
            ]
          ]
        ]
      },
      {
        "file": "/var/www/html/custom_apps/mail/vendor/bytestream/horde-imap-client/lib/Horde/Imap/Client/Socket.php",
        "line": 3691,
        "function": "_sendCmd",
        "class": "Horde_Imap_Client_Socket",
        "type": "->",
        "args": [
          [
            "Horde_Imap_Client_Interaction_Pipeline",
            [
              [],
              [],
              [
                "Horde_Imap_Client_Mailbox"
              ]
            ],
            [
              "Horde_Imap_Client_Fetch_Results"
            ]
          ]
        ]
      },
      {
        "file": "/var/www/html/custom_apps/mail/vendor/bytestream/horde-imap-client/lib/Horde/Imap/Client/Base.php",
        "line": 2977,
        "function": "_copy",
        "class": "Horde_Imap_Client_Socket",
        "type": "->",
        "args": [
          [
            "Horde_Imap_Client_Mailbox"
          ],
          [
            [
              "Horde_Imap_Client_Ids",
              false
            ],
            true,
            true
          ]
        ]
      },
      {
        "file": "/var/www/html/custom_apps/mail/lib/IMAP/MessageMapper.php",
        "line": 324,
        "function": "copy",
        "class": "Horde_Imap_Client_Base",
        "type": "->",
        "args": [
          "INBOX",
          [
            "Horde_Imap_Client_Mailbox"
          ],
          [
            [
              "Horde_Imap_Client_Ids",
              false
            ],
            true,
            true
          ]
        ]
      },
      {
        "file": "/var/www/html/custom_apps/mail/lib/Service/MailManager.php",
        "line": 368,
        "function": "move",
        "class": "OCA\\Mail\\IMAP\\MessageMapper",
        "type": "->",
        "args": [
          [
            "OCA\\Mail\\IMAP\\HordeImapClient",
            [
              "HICenv",
              "HICflags",
              "HIChdrs",
              "HICdate",
              "HICsize",
              "HICstruct"
            ],
            true,
            true
          ],
          "INBOX",
          73695,
          "[Gmail]/Trash"
        ]
      },
      {
        "file": "/var/www/html/custom_apps/mail/lib/Service/MailManager.php",
        "line": 327,
        "function": "deleteMessageWithClient",
        "class": "OCA\\Mail\\Service\\MailManager",
        "type": "->",
        "args": [
          [
            "OCA\\Mail\\Account"
          ],
          [
            "OCA\\Mail\\Db\\Mailbox",
            833
          ],
          73695,
          [
            "OCA\\Mail\\IMAP\\HordeImapClient",
            [
              "HICenv",
              "HICflags",
              "HIChdrs",
              "HICdate",
              "HICsize",
              "HICstruct"
            ],
            true,
            true
          ]
        ]
      },
      {
        "file": "/var/www/html/custom_apps/mail/lib/Service/MailManager.php",
        "line": 930,
        "function": "deleteMessage",
        "class": "OCA\\Mail\\Service\\MailManager",
        "type": "->",
        "args": [
          [
            "OCA\\Mail\\Account"
          ],
          "INBOX",
          73695
        ]
      },
      {
        "file": "/var/www/html/custom_apps/mail/lib/Controller/ThreadController.php",
        "line": 217,
        "function": "deleteThread",
        "class": "OCA\\Mail\\Service\\MailManager",
        "type": "->",
        "args": [
          [
            "OCA\\Mail\\Account"
          ],
          [
            "OCA\\Mail\\Db\\Mailbox",
            833
          ],
          "<20241021165439.Horde.WgxKmfS58aAcJ-5C0WWAd6x@*****.com>"
        ]
      },
      {
        "file": "/var/www/html/lib/private/AppFramework/Http/Dispatcher.php",
        "line": 208,
        "function": "delete",
        "class": "OCA\\Mail\\Controller\\ThreadController",
        "type": "->",
        "args": [
          469715
        ]
      },
      {
        "file": "/var/www/html/lib/private/AppFramework/Http/Dispatcher.php",
        "line": 114,
        "function": "executeController",
        "class": "OC\\AppFramework\\Http\\Dispatcher",
        "type": "->",
        "args": [
          [
            "OCA\\Mail\\Controller\\ThreadController"
          ],
          "delete"
        ]
      },
      {
        "file": "/var/www/html/lib/private/AppFramework/App.php",
        "line": 161,
        "function": "dispatch",
        "class": "OC\\AppFramework\\Http\\Dispatcher",
        "type": "->",
        "args": [
          [
            "OCA\\Mail\\Controller\\ThreadController"
          ],
          "delete"
        ]
      },
      {
        "file": "/var/www/html/lib/private/Route/Router.php",
        "line": 302,
        "function": "main",
        "class": "OC\\AppFramework\\App",
        "type": "::",
        "args": [
          "OCA\\Mail\\Controller\\ThreadController",
          "delete",
          [
            "OC\\AppFramework\\DependencyInjection\\DIContainer"
          ],
          [
            "469715",
            "mail.thread.delete"
          ]
        ]
      },
      {
        "file": "/var/www/html/lib/base.php",
        "line": 1001,
        "function": "match",
        "class": "OC\\Route\\Router",
        "type": "->",
        "args": [
          "/apps/mail/api/thread/469715"
        ]
      },
      {
        "file": "/var/www/html/index.php",
        "line": 24,
        "function": "handleRequest",
        "class": "OC",
        "type": "::",
        "args": []
      }
    ],
    "File": "/var/www/html/custom_apps/mail/vendor/bytestream/horde-imap-client/lib/Horde/Imap/Client/Socket/Connection/Socket.php",
    "Line": 147,
    "message": "Mail server closed the connection unexpectedly.",
    "exception": {
      "details": null,
      "logged": false,
      "raw_msg": "Mail server closed the connection unexpectedly."
    },
    "CustomMessage": "Mail server closed the connection unexpectedly."
  },
  "id": "671687d44ad96"
}
{
  "reqId": "GcERXg1Wl9upNxonq1aU",
  "level": 2,
  "time": "2024-10-21T16:56:49+00:00",
  "remoteAddr": "*****",
  "user": "*****",
  "app": "mail",
  "method": "DELETE",
  "url": "/index.php/api/thread/469715",
  "message": "Could not move message $73695 from INBOX to [Gmail]/Trash",
  "userAgent": "Mozilla/5.0 (X11; Linux x86_64; rv:131.0) Gecko/20100101 Firefox/131.0",
  "version": "30.0.0.14",
  "exception": {
    "Exception": "OCA\\Mail\\Exception\\ServiceException",
    "Message": "Could not move message $73695 from INBOX to [Gmail]/Trash",
    "Code": 0,
    "Trace": [
      {
        "file": "/var/www/html/custom_apps/mail/lib/Service/MailManager.php",
        "line": 368,
        "function": "move",
        "class": "OCA\\Mail\\IMAP\\MessageMapper",
        "type": "->",
        "args": [
          [
            "OCA\\Mail\\IMAP\\HordeImapClient",
            [
              "HICenv",
              "HICflags",
              "HIChdrs",
              "HICdate",
              "HICsize",
              "HICstruct"
            ],
            true,
            true
          ],
          "INBOX",
          73695,
          "[Gmail]/Trash"
        ]
      },
      {
        "file": "/var/www/html/custom_apps/mail/lib/Service/MailManager.php",
        "line": 327,
        "function": "deleteMessageWithClient",
        "class": "OCA\\Mail\\Service\\MailManager",
        "type": "->",
        "args": [
          [
            "OCA\\Mail\\Account"
          ],
          [
            "OCA\\Mail\\Db\\Mailbox",
            833
          ],
          73695,
          [
            "OCA\\Mail\\IMAP\\HordeImapClient",
            [
              "HICenv",
              "HICflags",
              "HIChdrs",
              "HICdate",
              "HICsize",
              "HICstruct"
            ],
            true,
            true
          ]
        ]
      },
      {
        "file": "/var/www/html/custom_apps/mail/lib/Service/MailManager.php",
        "line": 930,
        "function": "deleteMessage",
        "class": "OCA\\Mail\\Service\\MailManager",
        "type": "->",
        "args": [
          [
            "OCA\\Mail\\Account"
          ],
          "INBOX",
          73695
        ]
      },
      {
        "file": "/var/www/html/custom_apps/mail/lib/Controller/ThreadController.php",
        "line": 217,
        "function": "deleteThread",
        "class": "OCA\\Mail\\Service\\MailManager",
        "type": "->",
        "args": [
          [
            "OCA\\Mail\\Account"
          ],
          [
            "OCA\\Mail\\Db\\Mailbox",
            833
          ],
          "<20241021165439.Horde.WgxKmfS58aAcJ-5C0WWAd6x@******.com>"
        ]
      },
      {
        "file": "/var/www/html/lib/private/AppFramework/Http/Dispatcher.php",
        "line": 208,
        "function": "delete",
        "class": "OCA\\Mail\\Controller\\ThreadController",
        "type": "->",
        "args": [
          469715
        ]
      },
      {
        "file": "/var/www/html/lib/private/AppFramework/Http/Dispatcher.php",
        "line": 114,
        "function": "executeController",
        "class": "OC\\AppFramework\\Http\\Dispatcher",
        "type": "->",
        "args": [
          [
            "OCA\\Mail\\Controller\\ThreadController"
          ],
          "delete"
        ]
      },
      {
        "file": "/var/www/html/lib/private/AppFramework/App.php",
        "line": 161,
        "function": "dispatch",
        "class": "OC\\AppFramework\\Http\\Dispatcher",
        "type": "->",
        "args": [
          [
            "OCA\\Mail\\Controller\\ThreadController"
          ],
          "delete"
        ]
      },
      {
        "file": "/var/www/html/lib/private/Route/Router.php",
        "line": 302,
        "function": "main",
        "class": "OC\\AppFramework\\App",
        "type": "::",
        "args": [
          "OCA\\Mail\\Controller\\ThreadController",
          "delete",
          [
            "OC\\AppFramework\\DependencyInjection\\DIContainer"
          ],
          [
            "469715",
            "mail.thread.delete"
          ]
        ]
      },
      {
        "file": "/var/www/html/lib/base.php",
        "line": 1001,
        "function": "match",
        "class": "OC\\Route\\Router",
        "type": "->",
        "args": [
          "/apps/mail/api/thread/469715"
        ]
      },
      {
        "file": "/var/www/html/index.php",
        "line": 24,
        "function": "handleRequest",
        "class": "OC",
        "type": "::",
        "args": []
      }
    ],
    "File": "/var/www/html/custom_apps/mail/lib/IMAP/MessageMapper.php",
    "Line": 339,
    "Previous": {
      "Exception": "Horde_Imap_Client_Exception",
      "Message": "Mail server closed the connection unexpectedly.",
      "Code": 4,
      "Trace": [
        {
          "file": "/var/www/html/custom_apps/mail/vendor/bytestream/horde-imap-client/lib/Horde/Imap/Client/Socket.php",
          "line": 4560,
          "function": "read",
          "class": "Horde_Imap_Client_Socket_Connection_Socket",
          "type": "->",
          "args": []
        },
        {
          "file": "/var/www/html/custom_apps/mail/vendor/bytestream/horde-imap-client/lib/Horde/Imap/Client/Socket.php",
          "line": 4319,
          "function": "_getLine",
          "class": "Horde_Imap_Client_Socket",
          "type": "->",
          "args": [
            [
              "Horde_Imap_Client_Interaction_Pipeline",
              [
                [],
                [],
                [
                  "Horde_Imap_Client_Mailbox"
                ]
              ],
              [
                "Horde_Imap_Client_Fetch_Results"
              ]
            ]
          ]
        },
        {
          "file": "/var/www/html/custom_apps/mail/vendor/bytestream/horde-imap-client/lib/Horde/Imap/Client/Socket.php",
          "line": 4243,
          "function": "_sendCmdChunk",
          "class": "Horde_Imap_Client_Socket",
          "type": "->",
          "args": [
            [
              "Horde_Imap_Client_Interaction_Pipeline",
              [
                [],
                [],
                [
                  "Horde_Imap_Client_Mailbox"
                ]
              ],
              [
                "Horde_Imap_Client_Fetch_Results"
              ]
            ],
            [
              [
                "Horde_Imap_Client_Interaction_Command",
                [],
                true,
                false,
                null,
                null,
                [
                  "Horde_Imap_Client_Interaction_Pipeline",
                  [
                    [],
                    [],
                    [
                      "Horde_Imap_Client_Mailbox"
                    ]
                  ],
                  [
                    "Horde_Imap_Client_Fetch_Results"
                  ]
                ],
                null,
                "7"
              ]
            ]
          ]
        },
        {
          "file": "/var/www/html/custom_apps/mail/vendor/bytestream/horde-imap-client/lib/Horde/Imap/Client/Socket.php",
          "line": 3691,
          "function": "_sendCmd",
          "class": "Horde_Imap_Client_Socket",
          "type": "->",
          "args": [
            [
              "Horde_Imap_Client_Interaction_Pipeline",
              [
                [],
                [],
                [
                  "Horde_Imap_Client_Mailbox"
                ]
              ],
              [
                "Horde_Imap_Client_Fetch_Results"
              ]
            ]
          ]
        },
        {
          "file": "/var/www/html/custom_apps/mail/vendor/bytestream/horde-imap-client/lib/Horde/Imap/Client/Base.php",
          "line": 2977,
          "function": "_copy",
          "class": "Horde_Imap_Client_Socket",
          "type": "->",
          "args": [
            [
              "Horde_Imap_Client_Mailbox"
            ],
            [
              [
                "Horde_Imap_Client_Ids",
                false
              ],
              true,
              true
            ]
          ]
        },
        {
          "file": "/var/www/html/custom_apps/mail/lib/IMAP/MessageMapper.php",
          "line": 324,
          "function": "copy",
          "class": "Horde_Imap_Client_Base",
          "type": "->",
          "args": [
            "INBOX",
            [
              "Horde_Imap_Client_Mailbox"
            ],
            [
              [
                "Horde_Imap_Client_Ids",
                false
              ],
              true,
              true
            ]
          ]
        },
        {
          "file": "/var/www/html/custom_apps/mail/lib/Service/MailManager.php",
          "line": 368,
          "function": "move",
          "class": "OCA\\Mail\\IMAP\\MessageMapper",
          "type": "->",
          "args": [
            [
              "OCA\\Mail\\IMAP\\HordeImapClient",
              [
                "HICenv",
                "HICflags",
                "HIChdrs",
                "HICdate",
                "HICsize",
                "HICstruct"
              ],
              true,
              true
            ],
            "INBOX",
            73695,
            "[Gmail]/Trash"
          ]
        },
        {
          "file": "/var/www/html/custom_apps/mail/lib/Service/MailManager.php",
          "line": 327,
          "function": "deleteMessageWithClient",
          "class": "OCA\\Mail\\Service\\MailManager",
          "type": "->",
          "args": [
            [
              "OCA\\Mail\\Account"
            ],
            [
              "OCA\\Mail\\Db\\Mailbox",
              833
            ],
            73695,
            [
              "OCA\\Mail\\IMAP\\HordeImapClient",
              [
                "HICenv",
                "HICflags",
                "HIChdrs",
                "HICdate",
                "HICsize",
                "HICstruct"
              ],
              true,
              true
            ]
          ]
        },
        {
          "file": "/var/www/html/custom_apps/mail/lib/Service/MailManager.php",
          "line": 930,
          "function": "deleteMessage",
          "class": "OCA\\Mail\\Service\\MailManager",
          "type": "->",
          "args": [
            [
              "OCA\\Mail\\Account"
            ],
            "INBOX",
            73695
          ]
        },
        {
          "file": "/var/www/html/custom_apps/mail/lib/Controller/ThreadController.php",
          "line": 217,
          "function": "deleteThread",
          "class": "OCA\\Mail\\Service\\MailManager",
          "type": "->",
          "args": [
            [
              "OCA\\Mail\\Account"
            ],
            [
              "OCA\\Mail\\Db\\Mailbox",
              833
            ],
            "<20241021165439.Horde.WgxKmfS58aAcJ-5C0WWAd6x@*****.com>"
          ]
        },
        {
          "file": "/var/www/html/lib/private/AppFramework/Http/Dispatcher.php",
          "line": 208,
          "function": "delete",
          "class": "OCA\\Mail\\Controller\\ThreadController",
          "type": "->",
          "args": [
            469715
          ]
        },
        {
          "file": "/var/www/html/lib/private/AppFramework/Http/Dispatcher.php",
          "line": 114,
          "function": "executeController",
          "class": "OC\\AppFramework\\Http\\Dispatcher",
          "type": "->",
          "args": [
            [
              "OCA\\Mail\\Controller\\ThreadController"
            ],
            "delete"
          ]
        },
        {
          "file": "/var/www/html/lib/private/AppFramework/App.php",
          "line": 161,
          "function": "dispatch",
          "class": "OC\\AppFramework\\Http\\Dispatcher",
          "type": "->",
          "args": [
            [
              "OCA\\Mail\\Controller\\ThreadController"
            ],
            "delete"
          ]
        },
        {
          "file": "/var/www/html/lib/private/Route/Router.php",
          "line": 302,
          "function": "main",
          "class": "OC\\AppFramework\\App",
          "type": "::",
          "args": [
            "OCA\\Mail\\Controller\\ThreadController",
            "delete",
            [
              "OC\\AppFramework\\DependencyInjection\\DIContainer"
            ],
            [
              "469715",
              "mail.thread.delete"
            ]
          ]
        },
        {
          "file": "/var/www/html/lib/base.php",
          "line": 1001,
          "function": "match",
          "class": "OC\\Route\\Router",
          "type": "->",
          "args": [
            "/apps/mail/api/thread/469715"
          ]
        },
        {
          "file": "/var/www/html/index.php",
          "line": 24,
          "function": "handleRequest",
          "class": "OC",
          "type": "::",
          "args": []
        }
      ],
      "File": "/var/www/html/custom_apps/mail/vendor/bytestream/horde-imap-client/lib/Horde/Imap/Client/Socket/Connection/Socket.php",
      "Line": 147
    },
    "message": "Could not move message $73695 from INBOX to [Gmail]/Trash",
    "exception": [],
    "CustomMessage": "Could not move message $73695 from INBOX to [Gmail]/Trash"
  },
  "id": "671687d44ad18"
}

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at the deleteThread path in lib/Controller/ThreadController.php and follow MailManager.php around lines 327, 368, and 930 into IMAP/MessageMapper.php line 324. Reproduce deletion with a Gmail account and inspect how the Horde IMAP connection failure is handled during the move to [Gmail]/Trash. Done means Gmail messages are removed from Inbox without the transient error or reappearance described in the issue.

Written by the indexing model from the issue text.

Assessment

Tech stack
php
Domain
backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.