Python bindings for Apple's MailKit framework, enabling developers to create mail extensions that integrate with macOS Mail applications
—
Message action handling including flagging, coloring, and custom action decision workflows. This module provides functionality for performing actions on messages within the Mail application.
Represents actions that can be performed on messages including flagging and coloring. This is the primary class for working with message actions.
class MEMessageAction:
"""
Represents an action that can be performed on a message.
Note: This class cannot be instantiated directly using init() or new().
Instances are created by the Mail framework based on user actions.
"""Represents decisions for message actions. Used to communicate action decisions back to the Mail framework.
class MEMessageActionDecision:
"""
Represents a decision about a message action.
Note: This class cannot be instantiated directly using init() or new().
Instances are provided by the Mail framework.
"""Constants representing different message flag types:
MEMessageActionFlagNone: int # = 0, No flag
MEMessageActionFlagDefaultColor: int # = 1, Default color flag
MEMessageActionFlagRed: int # = 2, Red flag
MEMessageActionFlagOrange: int # = 3, Orange flag
MEMessageActionFlagYellow: int # = 4, Yellow flag
MEMessageActionFlagGreen: int # = 5, Green flag
MEMessageActionFlagBlue: int # = 6, Blue flag
MEMessageActionFlagPurple: int # = 7, Purple flag
MEMessageActionFlagGray: int # = 8, Gray flagConstants representing different message color options:
MEMessageActionMessageColorNone: int # = 0, No color
MEMessageActionMessageColorGreen: int # = 1, Green color
MEMessageActionMessageColorYellow: int # = 2, Yellow color
MEMessageActionMessageColorOrange: int # = 3, Orange color
MEMessageActionMessageColorRed: int # = 4, Red color
MEMessageActionMessageColorPurple: int # = 5, Purple color
MEMessageActionMessageColorBlue: int # = 6, Blue color
MEMessageActionMessageColorGray: int # = 7, Gray colorType definitions for message action enums:
MEMessageActionFlag: type # Enum type for message action flags
MEMessageActionMessageColor: type # Enum type for message action colorsimport MailKit
# Check message flag type
def handle_message_flag(flag_value):
if flag_value == MailKit.MEMessageActionFlagRed:
print("Message has red flag - high priority")
elif flag_value == MailKit.MEMessageActionFlagYellow:
print("Message has yellow flag - medium priority")
elif flag_value == MailKit.MEMessageActionFlagGreen:
print("Message has green flag - low priority")
elif flag_value == MailKit.MEMessageActionFlagBlue:
print("Message has blue flag - informational")
elif flag_value == MailKit.MEMessageActionFlagNone:
print("Message has no flag")
else:
print(f"Message has flag: {flag_value}")
# Example usage
handle_message_flag(MailKit.MEMessageActionFlagRed)import MailKit
# Set message color based on content analysis
def determine_message_color(message_content):
if "urgent" in message_content.lower():
return MailKit.MEMessageActionMessageColorRed
elif "important" in message_content.lower():
return MailKit.MEMessageActionMessageColorOrange
elif "fyi" in message_content.lower():
return MailKit.MEMessageActionMessageColorBlue
else:
return MailKit.MEMessageActionMessageColorNone
# Example usage
message_text = "This is an urgent request"
color = determine_message_color(message_text)
if color == MailKit.MEMessageActionMessageColorRed:
print("Setting message color to red for urgent content")import MailKit
# All available flags
message_flags = {
"none": MailKit.MEMessageActionFlagNone,
"default": MailKit.MEMessageActionFlagDefaultColor,
"red": MailKit.MEMessageActionFlagRed,
"orange": MailKit.MEMessageActionFlagOrange,
"yellow": MailKit.MEMessageActionFlagYellow,
"green": MailKit.MEMessageActionFlagGreen,
"blue": MailKit.MEMessageActionFlagBlue,
"purple": MailKit.MEMessageActionFlagPurple,
"gray": MailKit.MEMessageActionFlagGray
}
# All available colors
message_colors = {
"none": MailKit.MEMessageActionMessageColorNone,
"green": MailKit.MEMessageActionMessageColorGreen,
"yellow": MailKit.MEMessageActionMessageColorYellow,
"orange": MailKit.MEMessageActionMessageColorOrange,
"red": MailKit.MEMessageActionMessageColorRed,
"purple": MailKit.MEMessageActionMessageColorPurple,
"blue": MailKit.MEMessageActionMessageColorBlue,
"gray": MailKit.MEMessageActionMessageColorGray
}
# Function to get flag name from value
def get_flag_name(flag_value):
for name, value in message_flags.items():
if value == flag_value:
return name
return "unknown"
# Function to get color name from value
def get_color_name(color_value):
for name, value in message_colors.items():
if value == color_value:
return name
return "unknown"
# Example usage
flag_name = get_flag_name(MailKit.MEMessageActionFlagRed)
color_name = get_color_name(MailKit.MEMessageActionMessageColorBlue)
print(f"Flag: {flag_name}, Color: {color_name}")import MailKit
# Check if a value is a valid message action flag
def is_valid_message_flag(value):
valid_flags = [
MailKit.MEMessageActionFlagNone,
MailKit.MEMessageActionFlagDefaultColor,
MailKit.MEMessageActionFlagRed,
MailKit.MEMessageActionFlagOrange,
MailKit.MEMessageActionFlagYellow,
MailKit.MEMessageActionFlagGreen,
MailKit.MEMessageActionFlagBlue,
MailKit.MEMessageActionFlagPurple,
MailKit.MEMessageActionFlagGray
]
return value in valid_flags
# Check if a value is a valid message color
def is_valid_message_color(value):
valid_colors = [
MailKit.MEMessageActionMessageColorNone,
MailKit.MEMessageActionMessageColorGreen,
MailKit.MEMessageActionMessageColorYellow,
MailKit.MEMessageActionMessageColorOrange,
MailKit.MEMessageActionMessageColorRed,
MailKit.MEMessageActionMessageColorPurple,
MailKit.MEMessageActionMessageColorBlue,
MailKit.MEMessageActionMessageColorGray
]
return value in valid_colors
# Example usage
if is_valid_message_flag(MailKit.MEMessageActionFlagRed):
print("Red flag is valid")
if is_valid_message_color(MailKit.MEMessageActionMessageColorBlue):
print("Blue color is valid")Install with Tessl CLI
npx tessl i tessl/pypi-pyobjc-framework-mailkit