2013-07-09 2 views
0

Итак, я довольно новичок в разработке webapp, и в настоящее время я создаю простой механизм блога для обучения с использованием python/flask.Фоновый процесс и колба

У меня пока нет проблем, кроме новой функции, которую я хотел бы реализовать: отправьте новую запись по электронной почте.

Чтобы реализовать это, полагаю, мне нужно иметь фоновый процесс, проверяющий несколько учетных записей электронной почты для новых сообщений. Когда будет найдено новое электронное письмо, процесс перейдет и создаст новое сообщение, которое будет отображаться с помощью fornt-end.

Надеюсь, это правильно, и если да, я могу это осуществить?

Может быть релевантным, но я использую sqlalchemy.

Благодаря

+0

Я думаю, что это можно сделать. Вы можете создать почтовый сервер на своем сервере или получить электронные письма из существующей учетной записи электронной почты, например gmail. В стандартной библиотеке уже есть некоторые модули. – zhangyangyu

ответ

1

Я хотел бы использовать один из входящих интерфейсов API почты для этого вместо того, чтобы пытаться взломать что-нибудь вместе. Например, API-интерфейс Sendgrid примет электронное письмо, а затем POST-приложение JSON для вашего приложения.

С помощью этого поддельного класса Поста:

class Post(db.Model): 
    text = TextProperty() 
    title = TextProperty() 

Вы могли бы иметь представление, как это:

@app.route('/hook/new-email/', methods=['POST']) 
def new_email(): 
    envelope = json.loads(request.form.get('envelope')) 
    to_address = envelope['to'][0] 
    from_address = envelope['from'] 
    text = request.form.get('text') 
    subject = request.form.get('subject') 

    if from_address == settings.ACCEPTED_AUTHOR: 
     post = Post(text=text, title=subject) 
     post.put() 

Помните, что если вы позволяете сообщений быть автором простой электронной почты, вы будете иметь делать какие-то проверки, чтобы убедиться, что вы не публикуете каждое электронное письмо со спамом, которое вы получаете.

+0

Это действительно так. Как способ узнать, как я могу продолжать заниматься этим самостоятельно? –