2009-06-09 7 views
12

Je suis en train d'envoyer des courriels en utilisant this sample code et ces options de ligne de commande:Erreur d'envoi e-mail via le serveur SMTP sur le serveur App de développement du moteur

dev_appserver.py --smtp_host=smtp.gmail.com --smtp_port=25 [email protected]_password=k1tt3ns myapp 

Cependant, je reçois l'erreur suivante lorsque mon application tente de envoyer un courrier électronique (sur le serveur de développement):

Traceback (most recent call last): 
    File "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp\__init__.py", line 500, in __call__ 
    handler.post(*groups) 
    File "C:\Documents and Settings\desk\Desktop\apps\temp\main.py", line 139, in post 
    """) 
    File "C:\Program Files\Google\google_appengine\google\appengine\api\mail.py", line 205, in send_mail 
    message.send(make_sync_call) 
    File "C:\Program Files\Google\google_appengine\google\appengine\api\mail.py", line 474, in send 
    make_sync_call('mail', self._API_CALL, message, response) 
    File "C:\Program Files\Google\google_appengine\google\appengine\api\apiproxy_stub_map.py", line 68, in MakeSyncCall 
    apiproxy.MakeSyncCall(service, call, request, response) 
    File "C:\Program Files\Google\google_appengine\google\appengine\api\apiproxy_stub_map.py", line 240, in MakeSyncCall 
    stub.MakeSyncCall(service, call, request, response) 
    File "C:\Program Files\Google\google_appengine\google\appengine\api\apiproxy_stub.py", line 80, in MakeSyncCall 
    method(request, response) 
    File "C:\Program Files\Google\google_appengine\google\appengine\api\mail_stub.py", line 203, in _Send 
    self._SendSMTP(mime_message, smtp_lib) 
    File "C:\Program Files\Google\google_appengine\google\appengine\api\mail_stub.py", line 133, in _SendSMTP 
    smtp.login(self._smtp_user, self._smtp_password) 
    File "C:\Python26\lib\smtplib.py", line 552, in login 
    raise SMTPException("SMTP AUTH extension not supported by server.") 
SMTPException: SMTP AUTH extension not supported by server. 
+0

Assurez-vous d'abord que votre FAI vous permet d'utiliser un serveur SMTP tiers pour envoyer des emails. La plupart le font, mais certains fournisseurs bloquent l'accès aux serveurs SMTP pour s'assurer que leurs clients ne commenceront pas à spammer le monde. –

Répondre

18

dev_appserver.py ne supporte pas TLS qui est requis par Gmail. Vous pouvez l'activer en ajoutant quelques lignes dans api/mail_stub.py:

# After smtp.connect(self._smtp_host, self._smtp_port) 
smtp.ehlo() 
smtp.starttls() 
smtp.ehlo() 

Remarque! Voilà la solution rapide et sale. Vous devriez ajouter une sorte de drapeau pour indiquer si vous voulez utiliser TLS ou non, car ce n'est pas toujours souhaité.

+0

Salut Blixt, Merci pour la solution proposée de ma demande, avec les changements ci-dessus, il fonctionnait bien ... même que Gmail, mon entreprise est un domaine dans Google, avec les changements de détails de mon entreprise ne fonctionne pas .. signifie dans lieu de gmail j'ai donné le nom de mon entreprise ... est-ce correct? comme nous l'avons dit ci-dessus solution n'est pas préférée une solution qui pourrait être la bonne. – SKSK

+0

puis en déploiement, cela fonctionne toujours? Je ne pense pas que je peux modifier un fichier à partir du moteur de l'application google api sdk –

+0

Oui. L'API de messagerie en direct est configurée par Google elle-même. Vous n'avez donc pas à vous soucier de la manière dont la connexion aux serveurs de messagerie est établie. – Blixt

4

@Raymond

Exécutez la commande suivante dans le terminal:

find/-name "mail_stub.py" -type f 2>/dev/null 

Dans mon cas, il retourne:

/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/mail_stub.py 
0

Les autres méthodes ne sont plus nécessaires:

Réglage de ce qui suit dans /appengine/api/mail_stub.py

if self._allow_tls and smtp.has_extn ('STARTTLS'): 
    smtp.starttls() 

fonctionne pour moi sur AppEngine version 1.9.15 sdk

0

Le compte Google utilisés pour envoyer des e-mails à partir d'une application doit avoir des paramètres de sécurité désactivés dans https://security.google.com/settings.

  • Désactiver l'accès pour les applications moins sécurisées: accès pour les applications moins sécurisées: Activer

Si vous continuez à avoir des problèmes d'authentification que vous pourriez avoir à examiner les dispositifs & activité au https://security.google.com/settings/security/activity

Questions connexes