Exemple #1
0
    def prepare_send(
        self,
        to=None,
        subject=None,
        contents=None,
        attachments=None,
        cc=None,
        bcc=None,
        headers=None,
    ):
        addresses = resolve_addresses(self.user, self.useralias, to, cc, bcc)

        if self.soft_email_validation:
            for email_addr in addresses["recipients"]:
                validate_email_with_regex(email_addr)

        msg = prepare_message(
            self.user,
            self.useralias,
            addresses,
            subject,
            contents,
            attachments,
            headers,
            self.encoding,
        )

        recipients = addresses["recipients"]
        msg_string = msg.as_string()
        return recipients, msg_string
Exemple #2
0
    def prepare_send(
        self,
        to=None,
        subject=None,
        contents=None,
        attachments=None,
        cc=None,
        bcc=None,
        headers=None,
        newline_to_break=True,
    ):
        addresses = resolve_addresses(self.user, self.useralias, to, cc, bcc)

        if self.soft_email_validation:
            for email_addr in addresses["recipients"]:
                validate_email_with_regex(email_addr)

        msg = prepare_message(
            self.user,
            self.useralias,
            addresses,
            subject,
            contents,
            attachments,
            headers,
            self.encoding,
            newline_to_break,
        )

        recipients = addresses["recipients"]
        msg_string = msg.as_string()
        return recipients, msg_string
Exemple #3
0
 def __init__(self, user=None, password=None, host='smtp.gmail.com', port='587',
              smtp_starttls=True, smtp_set_debuglevel=0, smtp_skip_login=False,
              encoding="utf-8", oauth2_file=None, soft_email_validation=True, **kwargs):
     self.log = get_logger()
     self.set_logging()
     if smtp_skip_login and user is None:
         user = ''
     elif user is None:
         user = self._find_user_home_path()
     self.user, self.useralias = self._make_addr_alias_user(user)
     self.soft_email_validation = soft_email_validation
     if soft_email_validation:
         validate_email_with_regex(self.user)
     self.is_closed = None
     self.host = host
     self.port = port
     self.starttls = smtp_starttls
     self.smtp_skip_login = smtp_skip_login
     self.debuglevel = smtp_set_debuglevel
     self.encoding = encoding
     self.kwargs = kwargs
     if oauth2_file is not None:
         self.login_oauth2(oauth2_file)
     else:
         self.login(password)
     self.cache = {}
     self.unsent = []
     self.log.info('Connected to SMTP @ %s:%s as %s', self.host, self.port, self.user)
     self.num_mail_sent = 0
Exemple #4
0
 def _resolveAddresses(self, to, cc, bcc, validate_email,
                       throw_invalid_exception):
     """ Handle the targets addresses, adding aliases when defined """
     addresses = {'recipients': []}
     if to is not None:
         self._make_addr_alias_target(to, addresses, 'To')
     elif cc is not None and bcc is not None:
         self._make_addr_alias_target(
             [self.user, self.useralias], addresses, 'To')
     else:
         addresses['recipients'].append(self.user)
     if cc is not None:
         self._make_addr_alias_target(cc, addresses, 'Cc')
     if bcc is not None:
         self._make_addr_alias_target(bcc, addresses, 'Bcc')
     if validate_email:
         for email_addr in addresses['recipients']:
             try:
                 validate_email_with_regex(email_addr)
             except YagInvalidEmailAddress as e:
                 if throw_invalid_exception:
                     raise e
                 else:
                     self.log.error(e)
                     addresses['recipients'].remove(email_addr)
     return addresses
def validate_email(email):
    try:
        validate.validate_email_with_regex(email)
        return True, None
    except YagInvalidEmailAddress:
        title = "Invalid email address"
        message = "We send you the results of the decoding by email, so we'll need a valid email address. We don't store your address after sending you the results."
        return False, render_template("decode_submit.html",
                                      title=title,
                                      message=message)
Exemple #6
0
 def __init__(
     self,
     user=None,
     password=None,
     host="smtp.gmail.com",
     port=None,
     smtp_starttls=None,
     smtp_ssl=True,
     smtp_set_debuglevel=0,
     smtp_skip_login=False,
     encoding="utf-8",
     oauth2_file=None,
     soft_email_validation=True,
     useralias=None,
     **kwargs
 ):
     self.log = get_logger()
     self.set_logging()
     self.soft_email_validation = soft_email_validation
     if oauth2_file is not None:
         oauth2_info = get_oauth2_info(oauth2_file)
         if user is None:
             user = oauth2_info["email_address"]
     if smtp_skip_login and user is None:
         user = ""
     elif user is None:
         user = find_user_home_path()
     self.user, self.useralias = make_addr_alias_user(user)
     if useralias is not None:
         self.useralias = useralias        
     if soft_email_validation:
         validate_email_with_regex(self.user)
     self.is_closed = None
     self.host = host
     self.port = str(port) if port is not None else "465" if smtp_ssl else "587"
     self.smtp_starttls = smtp_starttls
     self.ssl = smtp_ssl
     self.smtp_skip_login = smtp_skip_login
     self.debuglevel = smtp_set_debuglevel
     self.encoding = encoding
     self.kwargs = kwargs
     self.cache = {}
     self.unsent = []
     self.num_mail_sent = 0
     self.oauth2_file = oauth2_file
     self.credentials = password if oauth2_file is None else oauth2_info
Exemple #7
0
 def _resolve_addresses(self, to, cc, bcc):
     """ Handle the targets addresses, adding aliases when defined """
     addresses = {'recipients': []}
     if to is not None:
         self._make_addr_alias_target(to, addresses, 'To')
     elif cc is not None and bcc is not None:
         self._make_addr_alias_target([self.user, self.useralias], addresses, 'To')
     else:
         addresses['recipients'].append(self.user)
     if cc is not None:
         self._make_addr_alias_target(cc, addresses, 'Cc')
     if bcc is not None:
         self._make_addr_alias_target(bcc, addresses, 'Bcc')
     if self.soft_email_validation:
         for email_addr in addresses['recipients']:
             validate_email_with_regex(email_addr)
     return addresses
Exemple #8
0
 def __init__(
     self,
     user=None,
     password=None,
     host="smtp.gmail.com",
     port=None,
     smtp_starttls=None,
     smtp_ssl=True,
     smtp_set_debuglevel=0,
     smtp_skip_login=False,
     encoding="utf-8",
     oauth2_file=None,
     soft_email_validation=True,
     **kwargs
 ):
     self.log = get_logger()
     self.set_logging()
     self.soft_email_validation = soft_email_validation
     if oauth2_file is not None:
         oauth2_info = get_oauth2_info(oauth2_file)
         if user is None:
             user = oauth2_info["email_address"]
     if smtp_skip_login and user is None:
         user = ""
     elif user is None:
         user = find_user_home_path()
     self.user, self.useralias = make_addr_alias_user(user)
     if soft_email_validation:
         validate_email_with_regex(self.user)
     self.is_closed = None
     self.host = host
     self.port = str(port) if port is not None else "465" if smtp_ssl else "587"
     self.smtp_starttls = smtp_starttls
     self.ssl = smtp_ssl
     self.smtp_skip_login = smtp_skip_login
     self.debuglevel = smtp_set_debuglevel
     self.encoding = encoding
     self.kwargs = kwargs
     self.cache = {}
     self.unsent = []
     self.num_mail_sent = 0
     self.oauth2_file = oauth2_file
     self.credentials = password if oauth2_file is None else oauth2_info
Exemple #9
0
    def prepare_send(
        self,
        to=None,
        subject=None,
        contents=None,
        attachments=None,
        cc=None,
        bcc=None,
        headers=None,
        prettify_html=True,
        message_id=None,
        group_messages=True,
    ):
        addresses = resolve_addresses(self.user, self.useralias, to, cc, bcc)

        if self.soft_email_validation:
            for email_addr in addresses["recipients"]:
                validate_email_with_regex(email_addr)

        msg = prepare_message(
            self.user,
            self.useralias,
            addresses,
            subject,
            contents,
            attachments,
            headers,
            self.encoding,
            prettify_html,
            message_id,
            group_messages,
            self.dkim,
        )

        recipients = addresses["recipients"]
        msg_bytes = msg.as_bytes()
        return recipients, msg_bytes