2010-11-18 7 views
4

Dans la réponse à la question Error sending e-mail via SMTP server on App Engine development server il y a une nice solution by Blixt:Envoi email du serveur dev avec --smtp_host = smtp.gmail.com

"dev_appserver.py does not support TLS 
which is required by Gmail. You can 
enable it by adding a few lines in api/mail_stub.py:" 

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

Mais Windows Vista ne me laisseraient pas changer api/mail_stub.py

Existe-t-il un autre moyen d'envoyer du courrier à partir du serveur de développement. D'autres options (Sendmail et ISP ne sont pas bonnes pour moi). Merci!

EDIT

J'ai changé le api/mail_stub.py selon les instructions here et j'utiliser les options de ligne de commande suivantes:

dev_appserver.py 
--smtp_host=smtp.gmail.com 
--smtp_port=25 
[email protected] 
--smtp_password=gmail_pw 
C:\Users\A\Desktop\repeater # path to root directory 

Mais je reçois cette erreur de journal de la console:

*********************************************************** 
2010-11-18 10:24:37 Running command: "['C:\\Python26\\pythonw.exe', 
'C:\\Program Files(x86)\\Google\\google_appengine\\dev_appserver.py', 
'--admin_console_server=', 
'--port=8080', 
u'dev_appserver.py', 
u'--smtp_host=smtp.gmail.com', 
u'--smtp_port=25', 
u'[email protected]', 
u'--smtp_password=gmail_pw 
C:\\Users\\A\\Desktop\\repeater', 
'C:\\Users\\A\\Desktop\\repeater']" 

Runs a development application server for an application. 

dev_appserver.py [options] <application root> 

Application root must be the path to the application to run in this server. 
Must contain a valid app.yaml or app.yml file. 

**************************************************** 

Ceci est l'app.yaml:

application: re-peater 
version: 1 
runtime: python 
api_version: 1 

handlers: 

- url: /favicon.ico 
    static_files: static/images/favicon.ico 
    upload: static/images/favicon.ico 

- url: /stylesheets 
    static_dir: stylesheets 

- url: /.* 
    script: repeater.py 

Tout cela fonctionne sans ces options de ligne de commande. Des suggestions pour lesquelles cela ne fonctionne pas?

+0

Je vois deux problèmes. La première est l'utilisation du port 25. Gmail s'authentifie uniquement via une connexion cryptée. Essayez 587, car il semble fonctionner lorsque le port 465 ne fonctionnera pas. Cela peut avoir quelque chose à voir avec STARTTLS. Et TLS doit être activé via l'argument de ligne de commande à dev_appserver.py. Si c'est clair comme de la boue, alors cela reflète exactement l'état du SMTP. –

Répondre

2

Si vous avez vraiment besoin d'envoyer de vrais emails à partir du serveur dev_appserver, vous devez configurer votre propre relais de messagerie sur votre machine et pointer le SDK sur ce point. Je suis curieux de savoir pourquoi il est si important d'envoyer de vrais emails, c'est le serveur de développement, et vous ne devriez pas l'utiliser pour autre chose que le développement.

+0

Oui, merci, je suis d'accord. Mais je suis encore en train d'apprendre les bases et il faut du temps et des essais et des erreurs pour que même les tâches simples fonctionnent. Par exemple, j'ai ce script simple posté ici http://groups.google.com/group/google-appengine/browse_thread/thread/42e046e858c87aa3?hl=en# et même ce script simple ne fonctionne pas comme j'imagine que cela fonctionnerait . Donc, je déploie ce script et je vois s'il envoie l'email. Et maintenant le moteur de l'application est en panne et je reçois 500 erreurs. Mais vous avez raison, il n'est probablement pas utile d'envoyer des emails au serveur de développement. Je continuerai à télécharger vers le moteur de l'application jusqu'à ce que cela fonctionne. – Zeynel

+1

Attendez quel est le problème avec l'envoi d'un vrai e-mail à une adresse e-mail de test en cours de développement? – Triptych

+0

@Triptych Rien - c'est juste beaucoup de travail pour le faire fonctionner correctement, car vous avez besoin d'un relais qui acceptera le message. Il est généralement plus facile de regarder la sortie de la console. –

1

Modifiez les autorisations de fichier afin de pouvoir modifier le fichier api/mail_stub.py.

+0

J'ai essayé de changer les autorisations de fichiers, mais Vista ne le permettra pas. http://www.vistax64.com/vista-file-management/29148-vista-forces-read-only-file-setting.html – Zeynel

+0

J'ai changé le fichier mais j'ai un message d'erreur avec un problème dans le répertoire racine. Sans ces options de ligne de commande, le serveur dev fonctionne correctement; app.yaml est dans le répertoire. Des idées pour lesquelles cela ne fonctionne pas? J'ai ajouté un EDIT ci-dessus avec plus de code. Merci. – Zeynel

1

Ce n'est plus nécessaire

dans /appengine/api/mail_stub.py

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

J'utilise la version AppEngine sdk 1.9.15.