from django.conf import settings from django.core.mail import get_connection from django.core.mail.message import EmailMessage from smsish.mail.utils import emailify_phone_number from smsish.sms.backends.base import BaseSMSBackend DEFAULT_SMS_OVER_EMAIL_BACKEND = "smsish.mail.backends.mailtrap.EmailBackend" class SMSBackend(BaseSMSBackend): def __init__(self, *args, **kwargs): super(SMSBackend, self).__init__(*args, **kwargs) def send_messages(self, sms_messages): results = [] for message in sms_messages: t = self.get_transform_function() email_message = t(message) result = email_message.send() results.append(result) return results def get_transform_function(self): return transform_sms_to_email_message def transform_sms_to_email_message(sms_message): backend = getattr(settings, "SMSISH_MAILTRAP_SMS_BACKEND_EMAIL_BACKEND", DEFAULT_SMS_OVER_EMAIL_BACKEND) conn = get_connection(backend=backend) email = EmailMessage( subject="SMS over Email", body=sms_message.body, from_email=emailify_phone_number(sms_message.from_email), to=[emailify_phone_number(r) for r in sms_message.to], bcc=[emailify_phone_number(r) for r in sms_message.bcc] if sms_message.bcc else None, connection=conn, attachments=None, headers=None, cc=[emailify_phone_number(r) for r in sms_message.cc] if sms_message.cc else None, reply_to=[emailify_phone_number(sms_message.reply_to) for r in sms_message.reply_to] if sms_message.reply_to else None, ) email.attach("metadata.txt", "Content-Length: {}".format(len(sms_message.body)), "text/plain") return email