Python flask_mail 模块,Mail() 实例源码

我们从Python开源项目中,提取了以下11个代码示例,用于说明如何使用flask_mail.Mail()

项目:search_within_videos    作者:iRapha    | 项目源码 | 文件源码
def init_email_error_handler(app):
    """
    Initialize a logger to send emails on error-level messages.
    Unhandled exceptions will now send an email message to app.config.ADMINS.
    """
    if app.debug: return  # Do not send error emails while developing

    # Retrieve email settings from app.config
    host = app.config['MAIL_SERVER']
    port = app.config['MAIL_PORT']
    from_addr = app.config['MAIL_DEFAULT_SENDER']
    username = app.config['MAIL_USERNAME']
    password = app.config['MAIL_PASSWORD']
    secure = () if app.config.get('MAIL_USE_TLS') else None

    # Retrieve app settings from app.config
    to_addr_list = app.config['ADMINS']
    subject = app.config.get('APP_SYSTEM_ERROR_SUBJECT_LINE', 'System Error')

    # Setup an SMTP mail handler for error-level messages
    import logging
    from logging.handlers import SMTPHandler

    mail_handler = SMTPHandler(
        mailhost=(host, port),  # Mail host and port
        fromaddr=from_addr,  # From address
        toaddrs=to_addr_list,  # To address
        subject=subject,  # Subject line
        credentials=(username, password),  # Credentials
        secure=secure,
    )
    mail_handler.setLevel(logging.ERROR)
    app.logger.addHandler(mail_handler)

    # Log errors using: app.logger.error('Some error message')
项目:picoCTF    作者:picoCTF    | 项目源码 | 文件源码
def config_app(*args, **kwargs):
    """
    Return the app object configured correctly.
    This needed to be done for gunicorn.
    """

    settings = api.config.get_settings()

    if settings["email"]["enable_email"]:
        app.config["MAIL_SERVER"] = settings["email"]["smtp_url"]
        app.config["MAIL_PORT"] = settings["email"]["smtp_port"]
        app.config["MAIL_USERNAME"] = settings["email"]["email_username"]
        app.config["MAIL_PASSWORD"] = settings["email"]["email_password"]
        app.config["MAIL_DEFAULT_SENDER"] = settings["email"]["from_addr"]
        app.config["MAIL_USE_TLS"] = settings["email"]["smtp_security"] == "TLS"
        app.config["MAIL_USE_SSL"] = settings["email"]["smtp_security"] == "SSL"

        api.email.mail = Mail(app)

    app.register_blueprint(api.routes.user.blueprint, url_prefix="/api/user")
    app.register_blueprint(api.routes.team.blueprint, url_prefix="/api/team")
    app.register_blueprint(api.routes.stats.blueprint, url_prefix="/api/stats")
    app.register_blueprint(api.routes.admin.blueprint, url_prefix="/api/admin")
    app.register_blueprint(api.routes.group.blueprint, url_prefix="/api/group")
    app.register_blueprint(api.routes.problem.blueprint, url_prefix="/api/problems")
    app.register_blueprint(api.routes.achievements.blueprint, url_prefix="/api/achievements")

    api.logger.setup_logs({"verbose": 2})
    return app
项目:picoCTF    作者:royragsdale    | 项目源码 | 文件源码
def config_app(*args, **kwargs):
    """
    Return the app object configured correctly.
    This needed to be done for gunicorn.
    """

    settings = api.config.get_settings()

    if settings["email"]["enable_email"]:
        app.config["MAIL_SERVER"] = settings["email"]["smtp_url"]
        app.config["MAIL_PORT"] = settings["email"]["smtp_port"]
        app.config["MAIL_USERNAME"] = settings["email"]["email_username"]
        app.config["MAIL_PASSWORD"] = settings["email"]["email_password"]
        app.config["MAIL_DEFAULT_SENDER"] = settings["email"]["from_addr"]
        app.config["MAIL_USE_TLS"] = settings["email"]["smtp_security"] == "TLS"
        app.config["MAIL_USE_SSL"] = settings["email"]["smtp_security"] == "SSL"

        api.email.mail = Mail(app)

    app.register_blueprint(api.routes.user.blueprint, url_prefix="/api/user")
    app.register_blueprint(api.routes.team.blueprint, url_prefix="/api/team")
    app.register_blueprint(api.routes.stats.blueprint, url_prefix="/api/stats")
    app.register_blueprint(api.routes.admin.blueprint, url_prefix="/api/admin")
    app.register_blueprint(api.routes.group.blueprint, url_prefix="/api/group")
    app.register_blueprint(api.routes.problem.blueprint, url_prefix="/api/problems")
    app.register_blueprint(api.routes.achievements.blueprint, url_prefix="/api/achievements")

    api.logger.setup_logs({"verbose": 2})
    return app
项目:zual    作者:ninadmhatre    | 项目源码 | 文件源码
def __init__(self, app):
        self.mail = Mail()
        self.mail.init_app(app)
项目:eventit    作者:alfredgg    | 项目源码 | 文件源码
def __init__(self):
        self.mail = Mail(current_app)
项目:smells-gud    作者:samlouiscohen    | 项目源码 | 文件源码
def home():
    print("hello")
    #food = []
    food = getAllFoods()
    FullLength = len(food)
    length1 = len(food)
    g.db = connect_db()

    #g.db.execute("INSERT INTO entries(food,attributes) VALUES('chicken')")
    for x in range(FullLength):

        for y in range(len(food[x])):
            if len(food[x][y][1]) == "none" :
                g.db.execute("INSERT INTO entries(food,attributes) VALUES(?,?)",[food[x][y][0],food[x][y][1]])
                g.db.commit()
            else:
                g.db.execute("INSERT INTO entries(food,attributes) VALUES(?,?)",[food[x][y][0],food[x][y][1]])
                g.db.commit()




    g.db = connect_db()
    #Get everything from entries

    cur = g.db.execute('select * from entries')
    #Create dictionary using list comprehension
    entries = [dict(food=row[1], attributes = row[2]) for row in cur.fetchall()]

    #Returns the html to user
    return render_template('index.html', entries = entries)





#------Mail aspect of website-----
项目:dotadytt    作者:williamtse    | 项目源码 | 文件源码
def init_mail(app):
    from flask_mail import Mail
    app.config['MAIL_SERVER'] = MAIL_SERVER
    app.config['MAIL_PORT'] = MAIL_PORT
    app.config['MAIL_USE_TLS'] = MAIL_USER_TLS
    app.config['MAIL_USE_SSL'] = MAIL_USER_SSL
    app.config['MAIL_USERNAME'] = MAIL_USERNAME
    app.config['MAIL_PASSWORD'] = MAIL_PASSWORD
    app.config['MAIL_DEBUG'] = MAIL_DEBUG
    mail = Mail()
    mail.init_app(app)
    return mail
项目:flask_example    作者:flyhigher139    | 项目源码 | 文件源码
def mail_view():
    if request.method == 'POST':
        recipients = request.form.get('recipients')
        recipients = [recipient.strip() for recipient in recipients.split(',')]

        cc = request.form.get('cc')
        cc = [cc.strip() for cc in cc.split(',')]

        title = request.form.get('title')
        body = request.form.get('body')

        send_mails(recipients, cc, title, body)
        return redirect(url_for('mail_view'))
    return '''
    <!DOCTYPE html>
    <html>
        <head>
            <title>Mail</title>
            <link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
        </head>
        <body>
            <div class="container">
                <div class="col-md-10 col-md-offset-1">
                <h3>Send Mails</h3><hr/>
                <form method="POST">
                    <div class="form-group">
                        <label>Receivers:</label><input type="text", name="recipients" class="form-control" >
                    </div>
                    <div class="form-group">
                        <label>Cc:</label><input type="text", name="cc" class="form-control" >
                    </div>
                    <div class="form-group">
                        <label>Title:</label>
                        <input type="text", name="title" class="form-control" >
                    </div>
                    <div class="form-group">
                        <label>Body:</label>
                        <textarea class="form-control" rows="6" name="body"></textarea>
                    </div>
                    <div class="form-group">
                        <button type="submit" value="Submit" class="btn btn-primary">Submit</button>
                    </div>
                </form>
                </div>
            </div>
        </body>
    </html>
    '''
项目:Mocha    作者:mardix    | 项目源码 | 文件源码
def init_app(self, app):
        self.config = app.config
        scheme = None

        mailer_uri = self.config.get("MAIL_URL")
        if mailer_uri:
            mailer_uri = utils.urlparse(mailer_uri)
            scheme = mailer_uri.scheme
            hostname = mailer_uri.hostname

            # Using ses-mailer
            if "ses" in scheme.lower():
                self.provider = "SES"

                access_key = mailer_uri.username or app.config.get("AWS_ACCESS_KEY_ID")
                secret_key = mailer_uri.password or app.config.get("AWS_SECRET_ACCESS_KEY")
                region = hostname or self.config.get("AWS_REGION", "us-east-1")

                self.mail = ses_mailer.Mail(aws_access_key_id=access_key,
                                            aws_secret_access_key=secret_key,
                                            region=region,
                                            sender=self.config.get("MAIL_SENDER"),
                                            reply_to=self.config.get("MAIL_REPLY_TO"),
                                            template=self.config.get("MAIL_TEMPLATE"),
                                            template_context=self.config.get("MAIL_TEMPLATE_CONTEXT"))

            # SMTP will use flask-mail
            elif "smtp" in scheme.lower():
                self.provider = "SMTP"

                class _App(object):
                    config = {
                        "MAIL_SERVER": mailer_uri.hostname,
                        "MAIL_USERNAME": mailer_uri.username,
                        "MAIL_PASSWORD": mailer_uri.password,
                        "MAIL_PORT": mailer_uri.port,
                        "MAIL_USE_TLS": True if "tls" in mailer_uri.scheme else False,
                        "MAIL_USE_SSL": True if "ssl" in mailer_uri.scheme else False,
                        "MAIL_DEFAULT_SENDER": app.config.get("MAIL_SENDER"),
                        "TESTING": app.config.get("TESTING"),
                        "DEBUG": app.config.get("DEBUG")
                    }
                    debug = app.config.get("DEBUG")
                    testing = app.config.get("TESTING")

                _app = _App()
                self.mail = flask_mail.Mail(app=_app)

                _ses_mailer = ses_mailer.Mail(template=self.config.get("MAIL_TEMPLATE"),
                                              template_context=self.config.get("MAIL_TEMPLATE_CONTEXT"))
                self._template = _ses_mailer.parse_template
            else:
                logging.warning("Mailer Error. Invalid scheme '%s'" % scheme)
项目:Mocha    作者:mardix    | 项目源码 | 文件源码
def send(self, to, subject=None, body=None, reply_to=None, template=None, **kwargs):
        """
        To send email
        :param to: the recipients, list or string
        :param subject: the subject
        :param body: the body
        :param reply_to: reply_to
        :param template: template, will use the templates instead
        :param kwargs: context args
        :return: bool - True if everything is ok
        """
        sender = self.config.get("MAIL_SENDER")
        recipients = [to] if not isinstance(to, list) else to
        kwargs.update({
            "subject": subject,
            "body": body,
            "reply_to": reply_to
        })

        if not self.validated:
            raise exceptions.MochaError("Mail configuration error")

        if self.provider == "SES":
            kwargs["to"] = recipients
            if template:
                self.mail.send_template(template=template, **kwargs)
            else:
               self.mail.send(**kwargs)

        elif self.provider == "SMTP":
            if template:
                data = self._template(template=template, **kwargs)
                kwargs["subject"] = data["subject"]
                kwargs["body"] = data["body"]
            kwargs["recipients"] = recipients
            kwargs["sender"] = sender

            # Remove invalid Messages keys
            _safe_keys = ["recipients", "subject", "body", "html", "alts",
                          "cc", "bcc", "attachments", "reply_to", "sender",
                           "date", "charset", "extra_headers", "mail_options",
                           "rcpt_options"]
            for k in kwargs.copy():
                if k not in _safe_keys:
                    del kwargs[k]

            message = flask_mail.Message(**kwargs)
            self.mail.send(message)
        else:
            raise exceptions.MochaError("Invalid mail provider. Must be 'SES' or 'SMTP'")
项目:search_within_videos    作者:iRapha    | 项目源码 | 文件源码
def init_app(app, extra_config_settings={}):
    # Read common settings from 'app/settings.py'
    app.config.from_object('app.settings')

    # Read environment-specific settings from 'app/local_settings.py'
    try:
        app.config.from_object('app.local_settings')
    except ImportError:
        print("The configuration file 'app/local_settings.py' does not exist.\n"+
              "Please copy app/local_settings_example.py to app/local_settings.py\n"+
              "and customize its settings before you continue.")
        exit()

    # Add/overwrite extra settings from parameter 'extra_config_settings'
    app.config.update(extra_config_settings)
    if app.testing:
        app.config['WTF_CSRF_ENABLED'] = False  # Disable CSRF checks while testing

    # Initialize Flask-SQLAlchemy and Flask-Script _after_ app.config has been read
    #db.init_app(app)

    # Setup Flask-Migrate
    #migrate = Migrate(app, db)
    #manager.add_command('db', MigrateCommand)

    # Setup Flask-Mail
    mail = Mail(app)

    # Setup WTForms CsrfProtect
    #CsrfProtect(app)

    # Define bootstrap_is_hidden_field for flask-bootstrap's bootstrap_wtf.html
    from wtforms.fields import HiddenField

    def is_hidden_field_filter(field):
        return isinstance(field, HiddenField)

    app.jinja_env.globals['bootstrap_is_hidden_field'] = is_hidden_field_filter

    # Setup an error-logger to send emails to app.config.ADMINS
    init_email_error_handler(app)

    # Setup Flask-User to handle user account related forms
    #from app.models import User, MyRegisterForm
    #from app.views import user_profile_page

    #db_adapter = SQLAlchemyAdapter(db, User)  # Setup the SQLAlchemy DB Adapter
    #user_manager = UserManager(db_adapter, app,  # Init Flask-User and bind to app
                               #register_form=MyRegisterForm,  # using a custom register form with UserProfile fields
                               #user_profile_view_function=user_profile_page,
    #)

    #import app.manage_commands