appengine отправляет почту, не получая ошибок для жестко закодированных писем, но ошибки при использовании данных, отправленных в форме - PullRequest
0 голосов
/ 12 марта 2012

РЕДАКТИРОВАТЬ: Если вы хотите проверить, я развернул код для этого GitHub репо

Основная функция, которую я хочу реализовать, - отправка писем из формы. Почти то, что делает любая другая форма «Свяжитесь с нами» на вашем сайте. URL-адрес демонстрации - takemailer.appspot.com

Форма, как видно из URL, отправляет запрос на публикацию на сервер. Представления, где я обрабатываю запрос, следующие:

def post_data(request):   
    logging.info(request.POST)
    frm_name = request.POST['name']    frm_mail = request.POST['email']
    frm = frm_name + " <" + frm_mail + ">"
    frm = '"%s"' % frm #above two lines # done to produce a format like "Name <name@mail.com>"
    sub = request.POST['subject']
    cmnt = request.POST['comment']
    extra = str(frm + sub +  cmnt)  
    logging.info(frm)
    a = mail.send_mail(sender=frm,
              to="Albert Johnson <du***@gmail.com>",
              subject=sub,
              body=cmnt) 
    logging.info(a)
    return http.HttpResponse("1")

вышеприведенная версия кода не работает и поднимает

<class 'django.core.exceptions.ImproperlyConfigured'>: You haven't set the DATABASE_ENGINE setting yet.

Stacktrace прикреплен внизу.

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

def post_data(request):   
        logging.info(request.POST)
        sub = request.POST['subject']
        cmnt = request.POST['comment']
        a = mail.send_mail(sender="Albert Johnson <du***@gmail.com>",
                  to="Albert Johnson <du***@gmail.com>",
                  subject=sub,
                  body=cmnt) 
        logging.info(a)
        return http.HttpResponse("1")

Есть идеи, почему вышеприведенное работает, а вышеприведенное не работает и вызывает такую ​​ошибку?

StackTrace:

Traceback (most recent call last):
  File "/base/data/home/apps/s~takemailer/1.357442066172211834/django_bootstrap.py", line 65, in <module>
    main()
  File "/base/data/home/apps/s~takemailer/1.357442066172211834/django_bootstrap.py", line 62, in main
    util.run_wsgi_app(application)
  File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/util.py", line 98, in run_wsgi_app
    run_bare_wsgi_app(add_wsgi_middleware(application))
  File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/util.py", line 116, in run_bare_wsgi_app
    result = application(env, _start_response)
  File "/base/python_runtime/python_lib/versions/third_party/django-0.96/django/core/handlers/wsgi.py", line 189, in __call__
    response = self.get_response(request)
  File "/base/python_runtime/python_lib/versions/third_party/django-0.96/django/core/handlers/base.py", line 115, in get_response
    receivers = dispatcher.send(signal=signals.got_request_exception)
  File "/base/python_runtime/python_lib/versions/third_party/django-0.96/django/dispatch/dispatcher.py", line 360, in send
    **named
  File "/base/python_runtime/python_lib/versions/third_party/django-0.96/django/dispatch/robustapply.py", line 47, in robustApply
    return receiver(*arguments, **named)
  File "/base/python_runtime/python_lib/versions/third_party/django-0.96/django/db/__init__.py", line 47, in _rollback_on_exception
    transaction.rollback_unless_managed()
  File "/base/python_runtime/python_lib/versions/third_party/django-0.96/django/db/transaction.py", line 145, in rollback_unless_managed
    connection._rollback()
  File "/base/python_runtime/python_lib/versions/third_party/django-0.96/django/db/backends/dummy/base.py", line 13, in complain
    raise ImproperlyConfigured, "You haven't set the DATABASE_ENGINE setting yet."

этот вопрос является последующим вопросом отсюда , поскольку на этот вопрос не было никакого ответа, я продолжал пытаться дальше, проблема сводилась к этой небольшой мере:

1 Ответ

3 голосов
/ 27 апреля 2012

Ну, ошибка не в коде, а в политике Google. :) Когда вы читаете его, через ваше приложение тот, кто может отправлять электронную почту, должен иметь:

  1. электронное письмо с тем же доменным именем.
  2. Администратор приложения.

Надеюсь, ты получишь свой ответ.

...