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
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
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
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)
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
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
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
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