{"id":19648171,"url":"https://github.com/bestpractical/rt-extension-commandbymail","last_synced_at":"2025-04-28T15:32:23.863Z","repository":{"id":66697609,"uuid":"241973","full_name":"bestpractical/rt-extension-commandbymail","owner":"bestpractical","description":null,"archived":false,"fork":false,"pushed_at":"2025-02-03T19:54:03.000Z","size":358,"stargazers_count":9,"open_issues_count":0,"forks_count":5,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-05T09:25:05.176Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://search.cpan.org/dist/RT-Extension-CommandByEmail","language":"Perl","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bestpractical.png","metadata":{"files":{"readme":"README","changelog":"Changes","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2009-07-02T21:28:20.000Z","updated_at":"2023-12-26T20:03:45.000Z","dependencies_parsed_at":"2024-11-11T14:47:38.608Z","dependency_job_id":"03a47f55-6bec-438e-8103-71b0274f7621","html_url":"https://github.com/bestpractical/rt-extension-commandbymail","commit_stats":null,"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bestpractical%2Frt-extension-commandbymail","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bestpractical%2Frt-extension-commandbymail/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bestpractical%2Frt-extension-commandbymail/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bestpractical%2Frt-extension-commandbymail/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bestpractical","download_url":"https://codeload.github.com/bestpractical/rt-extension-commandbymail/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251338837,"owners_count":21573620,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-11T14:47:21.550Z","updated_at":"2025-04-28T15:32:22.561Z","avatar_url":"https://github.com/bestpractical.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"NAME\n    RT::Extension::CommandByMail - Change ticket metadata via email\n\nRT VERSION\n    Works with RT 4.4, 5.0\n\nSYNOPSIS\n        (Send email with content that looks like the following.)\n\n        Status: stalled\n        Subject: change subject\n        AddAdminCc: boss@example.com\n        AddCc: dev1@example.com\n        AddCc: dev2@example.com\n\n        The comment/reply text goes here\n\nIMPORTANT\n    For users of versions of this extension prior to 3.0: Please note that\n    now you will not receive an unknown command error email for unknown\n    commands. There will be a warning in the logs whenever an unknown\n    command is encountered. A setting was added to restore the previous\n    behavior. See the setting $CommandByMailErrorOnUnknown under\n    \"Configuration\" for more information.\n\nINSTALLATION\n    perl Makefile.PL\n    make\n    make install\n        May need root permissions\n\n    Edit your /opt/rt5/etc/RT_SiteConfig.pm\n        If you are using RT 4.2 or greater, add this line:\n\n            Plugin('RT::Extension::CommandByMail');\n\n        For RT 4.0, add this line:\n\n            Set(@Plugins, qw(RT::Extension::CommandByMail));\n\n        or add RT::Extension::CommandByMail to your existing @Plugins line.\n\n        For RT 4.2 or older, also add Filter::TakeAction to your\n        @MailPlugins configuration, as follows:\n\n            Set(@MailPlugins, qw(Auth::MailFrom Filter::TakeAction));\n\n        For RT 4.4 or newer, the plugin code is in Action::CommandByMail, so\n        add this:\n\n            Set(@MailPlugins, qw(Auth::MailFrom Action::CommandByMail));\n\n        Be sure to include Auth::MailFrom in the list as well.\n\n        Note: The plugin name has changed for RT 4.4, so after upgrading you\n        must also update your RT_SiteConfig.pm file to change\n        Filter::TakeAction to the new Action::CommandByMail.\n\n    Patch RT\n        For RT 4.4.0, apply the included patch:\n\n            cd /opt/rt4  # Your location may be different\n            patch -p1 \u003c /download/dir/RT-Extension-CommandByMail/etc/handle_action_pass_currentuser.patch\n\n    Restart your webserver\n\nCONFIGURATION\n    In addition to adding the configuration above to activate the extension\n    in RT, the following options are available.\n\n  $CommandByMailGroup\n    You may set a $CommandByMailGroup to a particular group ID in\n    RT_SiteConfig. If set, only members of this group may perform commands\n    by mail.\n\n  $CommandByMailHeader\n    You may set this configuration value to the name of a header to examine\n    as well. For example:\n\n        Set($CommandByMailHeader, \"X-RT-Command\");\n\n  $CommandByMailOnlyHeaders\n    If set, the body will not be examined, only the header defined by the\n    previous configuration option.\n\n  $CommandByMailErrorOnUnknown\n    Prior to 2.02, this extension throws an error if it finds an unknown\n    command. This is no longer the case. Setting this option will restore\n    that legacy behavior.\n\nCAVEATS\n    This extension is incompatible with UnsafeEmailCommands RT option.\n\nDESCRIPTION\n    This extension allows you to manage ticket metadata via email. You may\n    put commands into the beginning of an email, and the extension will\n    apply them. The list of commands is detailed below.\n\n    CAVEAT: commands are line oriented, so you can't expand to multiple\n    lines for each command, i.e. values can't contains new lines. The module\n    also currently expects and parses text, not HTML.\n\n  FORMAT\n    This extension parses the body, and optionally a header, in incoming\n    messages for commands to update ticket metadata. The format of commands\n    is:\n\n        Command: value\n        Command: value\n        ...\n\n    You can find list of \"COMMANDS\" below.\n\n    Some commands (like Status, Queue and other) can be used only once.\n    Commands that manage lists can be used multiple times, for example link,\n    custom fields and watchers commands. Also, the latter can be used with\n    Add and Del prefixes to add/delete values from the current list of the\n    ticket you reply to or comment on.\n\n  COMMANDS\n   Basic\n    Queue: \u003cname\u003e\n        Set new queue for the ticket\n\n    Subject: \u003cstring\u003e\n        Set new subject to the given string\n\n    Status: \u003cstatus\u003e\n        Set new status, one of new, open, stalled, resolved, rejected or\n        deleted\n\n    Owner: \u003cusername\u003e\n        Set new owner using the given username\n\n    Priority: \u003c#\u003e\n        Set new priority to the given value\n\n    FinalPriority: \u003c#\u003e\n        Set new final priority to the given value\n\n   Dates\n    Set new date/timestamp, or 0 to unset:\n\n        Due: \u003cnew timestamp\u003e\n        Starts: \u003cnew timestamp\u003e\n        Started: \u003cnew timestamp\u003e\n\n   Time\n    Set new times to the given value in minutes. Note that on\n    correspond/comment TimeWorked add time to the current value.\n\n        TimeWorked: \u003cminutes\u003e\n        TimeEstimated: \u003cminutes\u003e\n        TimeLeft: \u003cminutes\u003e\n\n   Watchers\n    Manage watchers: requestors, ccs and admin ccs. These commands can be\n    used several times and/or with Add and Del prefixes, for example\n    Requestor comand set requestor(s) and the current requestors would be\n    deleted, but AddRequestor command adds to the current list. For groups,\n    you must prefix the group name with group:. For example, AddAdminCc:\n    group:MyGroupname.\n\n        Requestor: \u003caddress\u003e Set requestor(s) using the email address\n        AddRequestor: \u003caddress\u003e Add new requestor using the email address\n        DelRequestor: \u003caddress\u003e Remove email address as requestor\n        Cc: \u003caddress\u003e Set Cc watcher(s) using the email address\n        AddCc: \u003caddress\u003e Add new Cc watcher using the email address\n        DelCc: \u003caddress\u003e Remove email address as Cc watcher\n        AdminCc: \u003caddress\u003e Set AdminCc watcher(s) using the email address\n        AddAdminCc: \u003caddress\u003e Add new AdminCc watcher using the email address\n        DelAdminCc: \u003caddress\u003e Remove email address as AdminCc watcher\n\n   Custom Roles\n    Manage custom roles of the ticket. These commands can be used several\n    times and/or with Add and Del prefixes. If you have a Custom Role called\n    Customer for example, you can pass the command CustomRole.{Customer} to\n    set the members of that role. You can pass either a username or an email\n    address. For groups, you must prefix the group name with group:. For\n    example, CustomRole.{Customer}: group:MyGroupname.\n\n            CustomRole.{Customer}: set the members of the Customer Custom Role\n            AddCustomRole.{Customer}: add members to the Customer Custom Role\n            DelCustomRole.{Customer}: remove members from the Customer Custom Role\n\n    Replace Customer with the name of your Custom Role.\n\n   Links\n    Manage links. These commands are also could be used several times in one\n    message.\n\n        DependsOn: \u003cticket id\u003e\n        DependedOnBy: \u003cticket id\u003e\n        RefersTo: \u003cticket id\u003e\n        ReferredToBy: \u003cticket id\u003e\n        Members: \u003cticket id\u003e\n        MemberOf: \u003cticket id\u003e\n\n   Custom field values\n    Manage custom field values. Could be used multiple times. (The curly\n    braces are literal.)\n\n        CustomField.{\u003cCFName\u003e}: \u003ccustom field value\u003e\n        AddCustomField.{\u003cCFName\u003e}: \u003ccustom field value\u003e\n        DelCustomField.{\u003cCFName\u003e}: \u003ccustom field value\u003e\n\n    Short forms:\n\n        CF.{\u003cCFName\u003e}: \u003ccustom field value\u003e\n        AddCF.{\u003cCFName\u003e}: \u003ccustom field value\u003e\n        DelCF.{\u003cCFName\u003e}: \u003ccustom field value\u003e\n\n   Transaction Custom field values\n    Manage custom field values of transactions. Could be used multiple\n    times. (The curly braces are literal.)\n\n        TransactionCustomField.{\u003cCFName\u003e}: \u003ccustom field value\u003e\n\n    Short forms:\n\n        TxnCustomField.{\u003cCFName\u003e}: \u003ccustom field value\u003e\n        TransactionCF.{\u003cCFName\u003e}: \u003ccustom field value\u003e\n        TxnCF.{\u003cCFName\u003e}: \u003ccustom field value\u003e\n\nSECURITY\n    This extension has no extended auth system; so all security issues that\n    apply to the RT in general also apply to the extension.\n\nMETHODS\n  ProcessCommands\n    This method provides the main email processing functionality. It\n    supports both RT 4.2 and earlier and 4.4 and later. To do this, the\n    return hashes contain some values used by 4.2 code and some used by 4.4.\n    The return values coexist and unused values are ignored by the different\n    versions.\n\n    For 4.4, returning { DeferToRT =\u003e 1 } invokes the normal RT mail\n    processing flow. This allows CommandByMail to pass on processing an\n    email message for cases like a user not being a member of\n    CommandByMailGroup.\n\n  ParseCcAddressesFromHead HASH\n    Takes a hash containing QueueObj, Head and CurrentUser objects. Returns\n    a list of all email addresses in the To and Cc headers b\u003cexcept\u003e the\n    current Queue's email addresses, the CurrentUser's email address and\n    anything that the configuration sub RT::IsRTAddress matches.\n\nAUTHOR\n    Best Practical Solutions, LLC \u003cmodules@bestpractical.com\u003e\n\nBUGS\n    All bugs should be reported via email to\n\n        L\u003cbug-RT-Extension-CommandByMail@rt.cpan.org|mailto:bug-RT-Extension-CommandByMail@rt.cpan.org\u003e\n\n    or via the web at\n\n        L\u003crt.cpan.org|http://rt.cpan.org/Public/Dist/Display.html?Name=RT-Extension-CommandByMail\u003e.\n\nLICENSE AND COPYRIGHT\n    This software is Copyright (c) 2014-2020 by Best Practical Solutions\n\n    This is free software, licensed under:\n\n      The GNU General Public License, Version 2, June 1991\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbestpractical%2Frt-extension-commandbymail","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbestpractical%2Frt-extension-commandbymail","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbestpractical%2Frt-extension-commandbymail/lists"}