Initialize email sender with configuration. Args: config: EmailConfig object Raises: ValueError: If provider is unknown or config invalid
(self, config: EmailConfig)
| 993 | """ |
| 994 | |
| 995 | def __init__(self, config: EmailConfig): |
| 996 | """ |
| 997 | Initialize email sender with configuration. |
| 998 | |
| 999 | Args: |
| 1000 | config: EmailConfig object |
| 1001 | |
| 1002 | Raises: |
| 1003 | ValueError: If provider is unknown or config invalid |
| 1004 | """ |
| 1005 | self.config = config |
| 1006 | |
| 1007 | # Check provider compatibility with current installation |
| 1008 | dependencies_available, error_message = check_provider_dependencies(config.provider) |
| 1009 | if not dependencies_available: |
| 1010 | raise ValueError(error_message) |
| 1011 | |
| 1012 | # Create provider instance |
| 1013 | provider_map = { |
| 1014 | 'smtp': SMTPEmailProvider, |
| 1015 | 'sendgrid': SendGridEmailProvider, |
| 1016 | 'ses': SESEmailProvider, |
| 1017 | 'gmail-oauth': GmailOAuthProvider, |
| 1018 | 'microsoft-oauth': MicrosoftOAuthProvider, |
| 1019 | } |
| 1020 | |
| 1021 | provider_class = provider_map.get(config.provider.lower()) |
| 1022 | if not provider_class: |
| 1023 | raise ValueError( |
| 1024 | f"Unknown email provider: {config.provider}. " |
| 1025 | f"Supported: {', '.join(provider_map.keys())}" |
| 1026 | ) |
| 1027 | |
| 1028 | self.provider = provider_class(config) |
| 1029 | |
| 1030 | def send(self, to: str, subject: str, body: str, html: bool = False) -> bool: |
| 1031 | """ |