2015-01-02 2 views
1

Сначала извиняюсь, если вы просто хотите указать мне на ответ на этот вопрос. Я искал, или я не получаю его, или моя проблема другая. Я пытаюсь создать форму для веб-пользователей на моем сайте, чтобы легко связаться со мной. Я не хочу, чтобы они вошли в систему или создали учетную запись для них на моем сайте. Я просто хочу иметь возможность заполнить форму; имя, адрес электронной почты, тему и сообщение, и нажмите отправить отправить его мне. Я супер админ домена Google Apps.Отправка электронной почты от имени пользователя Google Apps (репоста) с помощью GAE

main.py

# [START imports] 
import os 
import urllib 

from google.appengine.api import users 
from google.appengine.ext import ndb 
from google.appengine.api import mail 

import jinja2 
import webapp2 

JINJA_ENVIRONMENT = jinja2.Environment(
    loader=jinja2.FileSystemLoader(os.path.dirname(__file__)), 
    extensions=['jinja2.ext.autoescape'], 
    autoescape=True) 
# [END imports] 

# [START main_page] 
class MainPage(webapp2.RequestHandler): 

    def get(self): 
     template = JINJA_ENVIRONMENT.get_template('index.html') 
     self.response.write(template.render()) 

    def post(self): 
    name = self.request.get('name') 
    message = mail.EmailMessage(to = '[email protected]', 
         sender = self.request.get('email'), 
        subject = self.request.get('subject'), 
        body = "From: " + name + " Message: " + self.request.get('message')) 
    message.send() 

    template = JINJA_ENVIRONMENT.get_template('index.html') 
     self.response.write(template.render()) 
# [END main_page] 

# [START sitemap_page] 
class SiteMapPage(webapp2.RequestHandler): 

    def get(self): 
     template = JINJA_ENVIRONMENT.get_template('sitemap.xml') 
     self.response.write(template.render()) 
# [END sitemap_page] 

application = webapp2.WSGIApplication([('/', MainPage), ('/sitemap.xml', SiteMapPage)], debug=True) 

index.html фрагмент кода на форме

<form id="contact-form" method ="post"> 
       <div class="row"> 
        <div class="col-md-6"> 
        <div class="form-group"> 
         <label for="name">Name</label> 
         <input type="text" class="form-control" id="name" name="name" placeholder="Enter name" required aria-required="true" /> 
        </div> 
        <div class="form-group"> 
         <label for="email">Email Address</label> 
         <div class="input-group"> 
         <span class="input-group-addon"><span class="glyphicon glyphicon-envelope"></span> 
         </span> 
         <input type="email" class="form-control" id="email" name="email" placeholder="Enter email" required aria-required="true" /> 
         </div> 
        </div> 
        <div class="form-group"> 
         <label for="subject">Subject</label> 
         <select id="subject" name="subject" class="form-control" required aria-required="true"> 
         <option value="na" selected="">Choose One:</option> 
         <option value="service">General Customer Service</option> 
         <option value="suggestions">Suggestions</option> 
         <option value="product">Product Support</option> 
         </select> 
        </div> 
        </div> 
        <div class="col-md-6"> 
        <div class="form-group"> 
         <label for="name">Message</label> 
         <textarea name="message" id="message" class="form-control" rows="9" cols="25" required aria-required="true" placeholder="Message"></textarea> 
        </div> 
        </div> 
        <div class="col-md-12"> 
        <button type="submit" class="btn btn-skin pull-right" id="btnContactUs">Send Message</button> 
        </div> 
       </div> 
       </form> 

Я ценю вашу помощь, и если вам нужна любая другая информация, пожалуйста, дайте мне знать.

Я получаю ошибку сервера несанкционированного отправителя;

Internal Server Error 

The server has either erred or is incapable of performing the requested operation. 

Traceback (most recent call last): 
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1535, in __call__ 
    rv = self.handle_exception(request, response, e) 
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1529, in __call__ 
    rv = self.router.dispatch(request, response) 
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1278, in default_dispatcher 
    return route.handler_adapter(request, response) 
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1102, in __call__ 
    return handler.dispatch() 
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 572, in dispatch 
    return self.handle_exception(e, self.app.debug) 
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 570, in dispatch 
    return method(*args, **kwargs) 
    File "/base/data/home/apps/s~www-is/1.381224894290286420/main.py", line 31, in post 
    message.send() 
    File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/mail.py", line 1115, in send 
    raise ERROR_MAP[e.application_error](e.error_detail) 
InvalidSenderError: Unauthorized sender 

ответ

0

sender адрес электронной почты должен быть зарегистрирован в качестве администратора приложения для проекта GAE, или вы можете использовать что-то вроде [email protected]_ID.appspotmail.com. В вашем случае вы можете просто установить аргумент reply_to на адрес электронной почты пользователя и использовать электронную почту отправителя от одного из администраторов.

+0

Дмитрий, спасибо. мой почтовый отправитель зарегистрирован как владелец, но я все равно получаю ту же ошибку. Где вы устанавливаете, что электронное письмо является администратором, есть ли что-то там, которое мне не хватает? Инструменты для веб-мастеров ?, консоль разработчика Google? Консоль приложений? –

+0

Я зарегистрирован как супер администратор в консоли приложений. –

+0

Квота поднимается на почту api, поскольку я тестирую приложение, но я все еще получаю сообщение об ошибке «Несанкционированный отправитель». Итак, теперь возникает вопрос, как я могу проверить почту отправителя, правильно помеченную администратором в приложении? –