Another possibile useful topic:
https://forums.uvdesk.com/topic/2209/issue-fetching-email
Unsolved Warning: Trying to access array offset on value of type null when trying to refresh a mailbox
-
Hello,
I followed this guide to setup my mailbox: https://www.uvdesk.com/en/blog/setup-gmail-mailbox-uvdesk-open-source-helpdesk/ but when I try to run the php command that should refresh the mailbox and create the tickets I get the following output:
php bin/console uvdesk:refresh-mailbox support_mailbox@domain.ext # Retrieving mailbox configuration details for support_mailbox@domain.ext: - Establishing connection with mailbox - Fetching all emails since 09 December 2023 - Found a total of 1 emails in mailbox since 09 December 2023 # Processing all found emails iteratively: API https://uvdesk.example.com/mailbox/listener - Processing email 1 of 1: An unexpected error occurred: Warning: Trying to access array offset on value of type null
It seems that it connects to the mailbox just fine, retrieves the emails just fine but has trouble creating the tickets.
Yes the specified mailbox contains just one email which is a test email. It should be imported and made into a ticket.
So the 1 of 1 part is correct.
I sent a second one, and same deal. processint email 1 of 2 and then ... error.The emails in the mailbox are marked as "read" when I run the php command. Which means it's not a credentials issue.
I see that
API https://uvdesk.example.com/mailbox/listener
What is this? Should I have enabled the API so that uvdesk can process icomming emails?
Something else? -
@escozul
Hi, thank you for your question!I edited your message just to remove the email addresses. Masked them to prevent you from the potential spam.
What version of UVdesk and PHP are you using?
Be sure to use a supported and updated PHP version: https://www.php.net/supported-versions.phpSuggested PHP 8.2 or PHP 8.3
An old PHP version can be part of the issue, if is not you can also check the following topic: How to debug errors and email fetching errors
-
@peopleinside Thanks for the reply.
Also, I appreciate the email masking, but I was already using invalid emails and domains
my server uses php 8.1 as default but supports 8.2 and 8.3.
The site is set to 8.3
When running terminal I use 8.1 (php defaults to 8.1)
but I tried forcing to use 8.3 by modifying the php command tophp8.3 bin/console uvdesk:refresh-mailbox support_mailbox@domain.ext
but I got the same error. -
@escozul so the PHP version looks are ok.
Do you have setup UVdesk running the online wizard?In the wizard all checks was green?
php mailparse extension is active in your running PHP?You can try also to give a look at the link above I give to you.
The email that appear in UVdesk operator dashboard under settings is the correct support email?Your email has special characters in the password? If yes maybe you need to remove special characters from the password.
-
@peopleinside Hello,
I was forced to complete the setup using terminal when I had that issue with the vhost. Once I corrected it the uvdesk started working properly but I had skipped the wizard. However, php mailparse is installed (you have to install it even if you try to complete the installation using terminal. You actually get prompted to install maiplarse during the composer installation phase.)
The email is the correct email and the error appears AFTER the php command opens the first email. That first email is then marked as read. If there are more than one emails in the inbox, I get a 1 of 2 emails processing, the first one is marked as read but still get the error and the process quits.I still wonder what that
API https://uvdesk.example.com/mailbox/listener
part of the echo is... -
The error you are reporting seems is the same discussed here:
https://forums.uvdesk.com/topic/2132/an-unexpected-error-fetching-emailThe discussion has been marked as solved but I don't see a real solution to this.
In the topic mentioned also UVdesk Staff has replied but no fix and no solution.I'm sorry but is UVdesk team staff that should provide a reply and a solution to this.
I don't know how to help you.I'm sad also the topic mentioned has no more updates from UVdesk staff.
-
peopleinside 12 Dec 2023, 08:42
-
@escozul Try to see also the following topic, there seems the user has found how to resolve.
https://forums.uvdesk.com/topic/2184/mail-retrieval-error/14?_=1702370612730
The call to the API is not made on HTTPS, despite the redirection...
So in my case it's a problem with the HTTP server settings! -
Another possibile useful topic:
https://forums.uvdesk.com/topic/2209/issue-fetching-email -
@peopleinside
Thank you for all these topics. Still browsing through them to figure out if there is a similar resolution. In my case the call to https is made properly so I don't think the issue is there.Also I went over to the logs and captured all the errors and warnings that come up when I try to fetch the emails. Here are my logs:
[2023-12-12T14:47:44.439482+01:00] deprecation.INFO: User Deprecated: Method "Symfony\Component\HttpKernel\Bundle\Bundle::getContainerExtension()" might add "?ExtensionInterface" as a native return type declaration in the future. Do the same in child class "Webkul\UVDesk\CoreFrameworkBundle\UVDeskCoreFrameworkBundle" now to avoid errors or add an explicit @return annotation to suppress this message. {"exception":"[object] (ErrorException(code: 0): User Deprecated: Method \"Symfony\\Component\\HttpKernel\\Bundle\\Bundle::getContainerExtension()\" might add \"?ExtensionInterface\" as a native return type declaration in the future. Do the same in child class \"Webkul\\UVDesk\\CoreFrameworkBundle\\UVDeskCoreFrameworkBundle\" now to avoid errors or add an explicit @return annotation to suppress this message. at /home/helpdesk-support/htdocs/helpdesk.example.com/helpdesk-project/vendor/symfony/error-handler/DebugClassLoader.php:331)"} [] [2023-12-12T14:47:44.440761+01:00] deprecation.INFO: User Deprecated: Method "Symfony\Component\HttpKernel\Bundle\Bundle::getContainerExtension()" might add "?ExtensionInterface" as a native return type declaration in the future. Do the same in child class "Webkul\UVDesk\AutomationBundle\UVDeskAutomationBundle" now to avoid errors or add an explicit @return annotation to suppress this message. {"exception":"[object] (ErrorException(code: 0): User Deprecated: Method \"Symfony\\Component\\HttpKernel\\Bundle\\Bundle::getContainerExtension()\" might add \"?ExtensionInterface\" as a native return type declaration in the future. Do the same in child class \"Webkul\\UVDesk\\AutomationBundle\\UVDeskAutomationBundle\" now to avoid errors or add an explicit @return annotation to suppress this message. at /home/helpdesk-support/htdocs/helpdesk.example.com/helpdesk-project/vendor/symfony/error-handler/DebugClassLoader.php:331)"} [] [2023-12-12T14:47:44.440788+01:00] deprecation.INFO: User Deprecated: Method "Symfony\Component\HttpKernel\Bundle\Bundle::getContainerExtension()" might add "?ExtensionInterface" as a native return type declaration in the future. Do the same in child class "Webkul\UVDesk\ExtensionFrameworkBundle\UVDeskExtensionFrameworkBundle" now to avoid errors or add an explicit @return annotation to suppress this message. {"exception":"[object] (ErrorException(code: 0): User Deprecated: Method \"Symfony\\Component\\HttpKernel\\Bundle\\Bundle::getContainerExtension()\" might add \"?ExtensionInterface\" as a native return type declaration in the future. Do the same in child class \"Webkul\\UVDesk\\ExtensionFrameworkBundle\\UVDeskExtensionFrameworkBundle\" now to avoid errors or add an explicit @return annotation to suppress this message. at /home/helpdesk-support/htdocs/helpdesk.example.com/helpdesk-project/vendor/symfony/error-handler/DebugClassLoader.php:331)"} [] [2023-12-12T14:47:44.440807+01:00] deprecation.INFO: User Deprecated: Method "Symfony\Component\HttpKernel\Bundle\Bundle::getContainerExtension()" might add "?ExtensionInterface" as a native return type declaration in the future. Do the same in child class "Webkul\UVDesk\MailboxBundle\UVDeskMailboxBundle" now to avoid errors or add an explicit @return annotation to suppress this message. {"exception":"[object] (ErrorException(code: 0): User Deprecated: Method \"Symfony\\Component\\HttpKernel\\Bundle\\Bundle::getContainerExtension()\" might add \"?ExtensionInterface\" as a native return type declaration in the future. Do the same in child class \"Webkul\\UVDesk\\MailboxBundle\\UVDeskMailboxBundle\" now to avoid errors or add an explicit @return annotation to suppress this message. at /home/helpdesk-support/htdocs/helpdesk.example.com/helpdesk-project/vendor/symfony/error-handler/DebugClassLoader.php:331)"} [] [2023-12-12T14:47:44.440831+01:00] deprecation.INFO: User Deprecated: Method "Symfony\Component\HttpKernel\Bundle\Bundle::getContainerExtension()" might add "?ExtensionInterface" as a native return type declaration in the future. Do the same in child class "Webkul\UVDesk\SupportCenterBundle\UVDeskSupportCenterBundle" now to avoid errors or add an explicit @return annotation to suppress this message. {"exception":"[object] (ErrorException(code: 0): User Deprecated: Method \"Symfony\\Component\\HttpKernel\\Bundle\\Bundle::getContainerExtension()\" might add \"?ExtensionInterface\" as a native return type declaration in the future. Do the same in child class \"Webkul\\UVDesk\\SupportCenterBundle\\UVDeskSupportCenterBundle\" now to avoid errors or add an explicit @return annotation to suppress this message. at /home/helpdesk-support/htdocs/helpdesk.example.com/helpdesk-project/vendor/symfony/error-handler/DebugClassLoader.php:331)"} [] [2023-12-12T14:47:44.440847+01:00] deprecation.INFO: User Deprecated: Method "Symfony\Component\HttpKernel\Bundle\Bundle::getContainerExtension()" might add "?ExtensionInterface" as a native return type declaration in the future. Do the same in child class "Webkul\UVDesk\ApiBundle\UVDeskApiBundle" now to avoid errors or add an explicit @return annotation to suppress this message. {"exception":"[object] (ErrorException(code: 0): User Deprecated: Method \"Symfony\\Component\\HttpKernel\\Bundle\\Bundle::getContainerExtension()\" might add \"?ExtensionInterface\" as a native return type declaration in the future. Do the same in child class \"Webkul\\UVDesk\\ApiBundle\\UVDeskApiBundle\" now to avoid errors or add an explicit @return annotation to suppress this message. at /home/helpdesk-support/htdocs/helpdesk.example.com/helpdesk-project/vendor/symfony/error-handler/DebugClassLoader.php:331)"} [] [2023-12-12T14:47:44.440861+01:00] deprecation.INFO: User Deprecated: Since symfony/security-bundle 5.3: The ".container.private.security.password_encoder" service is deprecated, use "security.user_password_hasher" instead. {"exception":"[object] (ErrorException(code: 0): User Deprecated: Since symfony/security-bundle 5.3: The \".container.private.security.password_encoder\" service is deprecated, use \"security.user_password_hasher\" instead. at /home/helpdesk-support/htdocs/helpdesk.example.com/helpdesk-project/var/cache/dev/ContainerUcWwxIl/get_Container_Private_Security_PasswordEncoderService.php:22)"} [] [2023-12-12T14:47:44.440876+01:00] deprecation.INFO: User Deprecated: Since symfony/security-core 5.3: The "Symfony\Component\Security\Core\Encoder\UserPasswordEncoder" class is deprecated, use "Symfony\Component\PasswordHasher\Hasher\UserPasswordHasher" instead. {"exception":"[object] (ErrorException(code: 0): User Deprecated: Since symfony/security-core 5.3: The \"Symfony\\Component\\Security\\Core\\Encoder\\UserPasswordEncoder\" class is deprecated, use \"Symfony\\Component\\PasswordHasher\\Hasher\\UserPasswordHasher\" instead. at /home/helpdesk-support/htdocs/helpdesk.example.com/helpdesk-project/vendor/symfony/security-core/Encoder/UserPasswordEncoder.php:19)"} [] [2023-12-12T14:47:44.440889+01:00] deprecation.INFO: User Deprecated: Since symfony/security-core 5.3: The "Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface" interface is deprecated, use "Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface" instead. {"exception":"[object] (ErrorException(code: 0): User Deprecated: Since symfony/security-core 5.3: The \"Symfony\\Component\\Security\\Core\\Encoder\\UserPasswordEncoderInterface\" interface is deprecated, use \"Symfony\\Component\\PasswordHasher\\Hasher\\UserPasswordHasherInterface\" instead. at /home/helpdesk-support/htdocs/helpdesk.example.com/helpdesk-project/vendor/symfony/security-core/Encoder/UserPasswordEncoderInterface.php:17)"} [] [2023-12-12T14:47:44.440903+01:00] deprecation.INFO: User Deprecated: Since symfony/security-bundle 5.3: The "security.encoder_factory.generic" service is deprecated, use "security.password_hasher_factory" instead. {"exception":"[object] (ErrorException(code: 0): User Deprecated: Since symfony/security-bundle 5.3: The \"security.encoder_factory.generic\" service is deprecated, use \"security.password_hasher_factory\" instead. at /home/helpdesk-support/htdocs/helpdesk.example.com/helpdesk-project/var/cache/dev/ContainerUcWwxIl/getSecurity_EncoderFactory_GenericService.php:22)"} [] [2023-12-12T14:47:44.440920+01:00] deprecation.INFO: User Deprecated: Since symfony/security-core 5.3: The "Symfony\Component\Security\Core\Encoder\EncoderFactory" class is deprecated, use "Symfony\Component\PasswordHasher\Hasher\PasswordHasherFactory" instead. {"exception":"[object] (ErrorException(code: 0): User Deprecated: Since symfony/security-core 5.3: The \"Symfony\\Component\\Security\\Core\\Encoder\\EncoderFactory\" class is deprecated, use \"Symfony\\Component\\PasswordHasher\\Hasher\\PasswordHasherFactory\" instead. at /home/helpdesk-support/htdocs/helpdesk.example.com/helpdesk-project/vendor/symfony/security-core/Encoder/EncoderFactory.php:20)"} [] [2023-12-12T14:47:44.440934+01:00] deprecation.INFO: User Deprecated: Since symfony/security-core 5.3: The "Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface" class is deprecated, use "Symfony\Component\PasswordHasher\Hasher\PasswordHasherFactoryInterface" instead. {"exception":"[object] (ErrorException(code: 0): User Deprecated: Since symfony/security-core 5.3: The \"Symfony\\Component\\Security\\Core\\Encoder\\EncoderFactoryInterface\" class is deprecated, use \"Symfony\\Component\\PasswordHasher\\Hasher\\PasswordHasherFactoryInterface\" instead. at /home/helpdesk-support/htdocs/helpdesk.example.com/helpdesk-project/vendor/symfony/security-core/Encoder/EncoderFactoryInterface.php:17)"} []
Urls and usernames have been masked for protection.
These are only deprecation warnings. Should they cause fatal errors in php operations?
-
Regarding the logs: deprecation info is not an error, is just a message to developers that can be ignored by you.
Are you sure your domain is set correctly in the file config/packages/uvdesk.yaml?
How you set your domain? -
@peopleinside
Hello
in my .env, I see the following:###> symfony/framework-bundle ### APP_ENV=dev APP_SECRET=YOUR_APP_SECRET
Is that correct? Should I have set the app secret somewhere? ... or it does not matter?
My uvdesk.yaml:
parameters: app_locales: en|fr|it|de|da|ar|es|tr|zh|pl # Default Assets assets_default_agent_profile_image_path: 'bundles/uvdeskcoreframework/images/uv-avatar-batman.png' assets_default_customer_profile_image_path: 'bundles/uvdeskcoreframework/images/uv-avatar-ironman.png' assets_default_helpdesk_profile_image_path: 'bundles/uvdeskcoreframework/images/uv-avatar-uvdesk.png' uvdesk_site_path.member_prefix: --------- #Masked for security uvdesk_site_path.knowledgebase_customer_prefix: --------- #Masked for security # File uploads constraints # @TODO: Set these parameters via compilers max_post_size: 8388608 max_file_uploads: 20 upload_max_filesize: 2097152 uvdesk: site_url: 'helpdes.mydomain.com' # No /public here. It's properly set. upload_manager: id: Webkul\UVDesk\CoreFrameworkBundle\FileSystem\UploadManagers\Localhost support_email: id: email@mydomain.com #properly set to my domain. Changed it for security purposes name: Support HelpDesk mailer_id: mailer_SES # Default resources default: ticket: type: support status: open priority: low templates: email: mail.html.twig
Tried to mask some. Sorry for that. They seem just fine though.
Edit:
I visited the address found here:
API https://uvdesk.example.com/mailbox/listener
kept bugging me.The result on screen was:
{"success":false,"message":"Request not supported."}
Have no idea what that is! what is it?
What about the API? When I go over to settings, the first selection is the API:
I haven't used that access token anywhere. What's it for? Should I put it in the .env file?
-
Could you try to replace the
site_url: 'helpdes.mydomain.com' # No /public here. It's properly set.
with
site_url: helpdes.mydomain.com
Then clean cache php bin/console c:c and try to fetch email again. Still facing the issue?
-
Thank you. Same error though.
-
@escozul I have no others idea sorry.
All thread suggested where user are solved seems are not helping you, from what you said. I don't know what else suggest.
Usually from what I see the error can be caused by a wrong domain settings, from some server settings like HTTP and not HTTPS, there are also some fix suggested in other topics.
I'm currently not facing this issue on my active installation.
I'm sorry to see we was not able to resolve. -
@peopleinside
Thank you for your time.
I appreciate all your help.Well.. Let's hope that in the following days, someone will come across this issue and help me resolve it.
-
@escozul I wish you to resolve
- 3 months later
-
Hello,
To fix this error, you must install the php extension "maileparse"
Apt debian command :
sudo apt install php8.1-mailparse
The full error message is in the log app :
{"message":"Uncaught Error: Call to undefined function PhpMimeMailParser\\mailparse_msg_create()","context":{"exception":{"class":"Error","message":"Call to undefined function PhpMimeMailParser\\mailparse_msg_create()","code":0,"file":"/web/www/uvdesk/vendor/php-mime-mail-parser/php-mime-mail-parser/src/Parser.php:195"}},"level":500,"level_name":"CRITICAL","channel":"php","datetime":"2024-03-24T16:40:04.785031+01:00","extra":{}}
-
@leooxx Thank you.
Will try that on Tuesday and get back here to post if it's resolved or not.
-
@leooxx Hello,
I can't find that entry on any of my logs. How do you know that the error is with the php-mailparse addon?cause running PHP -m lists mailparse right there..
You mentioned a "logs app"... Can't find that.
-
usually when I was using UVdesk for check if the mail parse was present and detected by UVdesk I use to generate a new UVdesk instance and run the setup wizard.
The UVdesk setup wizard show you if you have all requirements.
I suggested, since long time to the UVdesk team to add a health page that help already present installation to be checked but since different months now UVdesk seems abandoned in the open source project.I migrated to a different solution and left also the forum also if I still get an eye here sometimes