feat: Multi-email ticketing system with platform email addresses
- Add PlatformEmailAddress model for managing platform-level email addresses - Add TicketEmailAddress model for tenant-level email addresses - Create MailServerService for IMAP integration with mail.talova.net - Implement PlatformEmailReceiver for processing incoming platform emails - Add email autoconfiguration for Mozilla, Microsoft, and Apple clients - Add configurable email polling interval in platform settings - Add "Check Emails" button on support page for manual refresh - Add ticket counts to status tabs on support page - Add platform email addresses management page - Add Privacy Policy and Terms of Service pages - Add robots.txt for SEO - Restrict email addresses to smoothschedule.com domain only 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -66,3 +66,23 @@ export const getCannedResponses = async (): Promise<CannedResponse[]> => {
|
||||
const response = await apiClient.get('/tickets/canned-responses/');
|
||||
return response.data;
|
||||
};
|
||||
|
||||
// Refresh emails manually
|
||||
export interface RefreshEmailsResult {
|
||||
success: boolean;
|
||||
processed: number;
|
||||
results: {
|
||||
address: string | null;
|
||||
display_name?: string;
|
||||
processed?: number;
|
||||
status: string;
|
||||
error?: string;
|
||||
message?: string;
|
||||
last_check_at?: string;
|
||||
}[];
|
||||
}
|
||||
|
||||
export const refreshTicketEmails = async (): Promise<RefreshEmailsResult> => {
|
||||
const response = await apiClient.post('/tickets/refresh-emails/');
|
||||
return response.data;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user