i did a slightly different fix in tools.py, starting on line 537: if attachments: result = mail.send_mail(sender=self.settings.sender, to=to, subject=subject, body=text, html=html, attachments=attachments) else: # fix starts here if html: result = mail.send_mail(sender=self.settings.sender, to=to, subject=subject, body=text, html=html) else: result = mail.send_mail(sender=self.settings.sender, to=to, subject=subject, body=text)
massimo, can something like this be put into trunk? i was able to fix all of my own emails in code, but the one causing the error for me is the standard verification email which seems to have ceased to work for gae. thanks, matt On Jul 11, 11:58 am, MikeEllis <michael.f.el...@gmail.com> wrote: > Solved, or at least hacked well enough for the time being :-) > > --enable_sendmail did the trick. It needs to be entered in the app > launch > settings in the GAE Launcher: > > * stop the app > * double-click app in listing > * enter --enable_sendmail in the Launcher settings "extra flags" field > * restart the app > > Here's the blog post that put me on the right track: > > http://blog.docuverse.com/2009/01/30/google-app-engine-launcher-options/ > > Cheers, > Mike > > On Jul 11, 12:20 pm, MikeEllis <michael.f.el...@gmail.com> wrote: > > > I just modified my tools.py as follows: > > > elif self.settings.server == 'gae': > > logging.warn("using gae mail server") > > from google.appengine.api import mail > > attachments = attachments and > > [(a.my_filename,a.my_payload) for a in attachments] > > > ## gae mailer chokes on empty attachments or html > > extra = dict(html=html, attachments=attachments) > > for k in extra.keys(): > > if not extra[k]: extra.pop(k) > > > result = mail.send_mail(sender=self.settings.sender, > > to=to, > > subject=subject, body=text, > > **extra) > > logging.warn("result of mail.send_mail() is > > %s"%repr(result)) > > > This fixed the exceptions associated with empty attachments and html, > > but no mail is being sent when testing under GAE Launcher, apparently > > because something else needs to be done to enable it. Here's what's > > showing up in the console log: > > > WARNING 2010-07-11 15:57:04,413 tools.py:535] using gae mail server > > INFO 2010-07-11 15:57:04,416 mail_stub.py:84] MailService.Send > > INFO 2010-07-11 15:57:04,416 mail_stub.py:85] From: > > myaddr...@gmail.com > > INFO 2010-07-11 15:57:04,416 mail_stub.py:88] To: > > myaddr...@gmail.com > > INFO 2010-07-11 15:57:04,416 mail_stub.py:97] Subject:Email > > verification > > INFO 2010-07-11 15:57:04,416 mail_stub.py:100] Body: > > INFO 2010-07-11 15:57:04,416 mail_stub.py:101] Content-type: > > text/plain > > INFO 2010-07-11 15:57:04,416 mail_stub.py:102] Data length: > > 132 > > INFO 2010-07-11 15:57:04,417 mail_stub.py:207] You are not > > currently sending out realemail. If you have sendmail installed you > > can use it by using the server with --enable_sendmail > > WARNING 2010-07-11 15:57:04,417 tools.py:545] result of > > mail.send_mail() is None > > > Since it's the gae server, I'm not sure if the bit about -- > > enable_sendmail is relevant, but clearly something is not set up > > correctly. Any ideas? > > > I'm running GAE SDK 1.3.5 and web2py 1.92 on OS X 10.6.4 > > > BTW, I'm wondering if the default registration page should be amended > > to allow retrying theemailnotification when attempting to register > > an unverified address that's already in the db. Having to use the > > admin interface to delete the address each time while debugging mail > > settings is time-consuming. > > > Thanks, > > Mike > > > On Jun 19, 11:12 am, Larry <ziz...@gmail.com> wrote: > > > > Peter, > > > > This code looks good to me. I will adopt the same for now. > > > > Larry > > > > On Jun 19, 12:37 am, pecos1046 <pecos1...@gmail.com> wrote: > > > > > Hi Larry: > > > > > Looking at your suggestion, I made a code change in tools.py and mail > > > > with gae works well. Here my patch - so far so good, I wonder when it > > > > will backfire. > > > > > elif self.settings.server == 'gae': > > > > from google.appengine.api import mail > > > > attachments = attachments and > > > > [(a.my_filename,a.my_payload) for a in attachments] > > > > > if attachments and html: > > > > result = > > > > mail.send_mail(sender=self.settings.sender, to=to, > > > > subject=subject, body=text, > > > > html=html, > > > > attachments=attachments) > > > > > elif html: > > > > result = > > > > mail.send_mail(sender=self.settings.sender, to=to, > > > > subject=subject, body=text, > > > > html=html) > > > > > elif attachments: > > > > result = > > > > mail.send_mail(sender=self.settings.sender, to=to, > > > > subject=subject, body=text, > > > > attachments=attachments) > > > > > else: > > > > result = > > > > mail.send_mail(sender=self.settings.sender, to=to, > > > > subject=subject, body=text) > > > > > Thanks again > > > > > Peter > > > > > On Jun 17, 5:16 am, Larry <ziz...@gmail.com> wrote: > > > > > > I was also getting thiserroron my first go at sending mail using > > > > > gae. > > > > > > I looked at the code in gluon/tools.py for sending gae mail : > > > > > > elif self.settings.server == 'gae': > > > > > from google.appengine.api import mail > > > > > attachments = attachments and [(a.my_filename,a.my_payload) for a > > > > > in attachments] > > > > > result = mail.send_mail(sender=self.settings.sender, to=to, > > > > > subject=subject, body=text, html=html, > > > > > attachments=attachments) > > > > > > and retried after removing the attachments=attachments from the > > > > > send_mail and it worked if Isendboth text and html versions of the > > > > > message. > > > > > > I assume gae does not like the attachments value being None. > > > > > > Larry > > > > > > On Jun 11, 9:25 pm, mdipierro <mdipie...@cs.depaul.edu> wrote: > > > > > > > if you use server='gae' you should use login=None > > > > > > Not sure if this is the problem anyway. Do you get anyerror? > > > > > > > On 11 Giu, 10:12, pecos1046 <pecos1...@gmail.com> wrote: > > > > > > > > I use theemailverification option for new user registration. It > > > > > > > works fine in test mode on the google-appengine sdk. However when > > > > > > > I > > > > > > > upload the application to Google and change the smtp server to > > > > > > > "gae" > > > > > > > it isunabletosendthe verificationemail. The GoogleGAElog show > > > > > > > the following warning message: > > > > > > > >Mail.sendfailure:May not set empty value for 'attachments' > > > > > > > > Here are my settings: > > > > > > > >mail=Mail( ) > > > > > > >mail.settings.server='gae' # your SMTP server > > > > > > >mail.settings.sender='....@gmail.com' > > > > > > >mail.settings.tls = True > > > > > > >mail.settings.login='....@gmail.com:password' > > > > > > > auth.settings.mailer=mail > > > > > > > > I appreciate any help and suggestions. > > > > > > > > Peter