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:
[email protected]
INFO 2010-07-11 15:57:04,416 mail_stub.py:88] To:
[email protected]
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 real email. 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 the email notification 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 <[email protected]> wrote:
> Peter,
>
> This code looks good to me. I will adopt the same for now.
>
> Larry
>
> On Jun 19, 12:37 am, pecos1046 <[email protected]> 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 <[email protected]> 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 I send both 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 <[email protected]> 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 <[email protected]> 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 is unable to send the verificationemail. The GoogleGAElog show
> > > > > the following warning message:
>
> > > > >Mail.send failure:May not set empty value for 'attachments'
>
> > > > > Here are my settings:
>
> > > > >mail=Mail( )
> > > > >mail.settings.server='gae' # your SMTP server
> > > > >mail.settings.sender='[email protected]'
> > > > >mail.settings.tls = True
> > > > >mail.settings.login='[email protected]:password'
> > > > > auth.settings.mailer=mail
>
> > > > > I appreciate any help and suggestions.
>
> > > > > Peter