def _send_balance_invitations(self): db = request.environ['sqlalchemy.session'] model = request.environ['sqlalchemy.model'] output = StringIO() invitations = db.query(model.BalanceInvitation).filter_by(sent=False).all() for invitation in invitations: try: c.invitation_link = h.site_url() + h.url_for(controller='balances', action='invitation', id=invitation.token) c.invitation = invitation body = render_jinja('messages/balance_invitation.jinja') message = MIMEText(body.encode('utf-8'), 'plain', 'utf-8') message['Subject'] = _("Invitation to work on a balance from %s") % h.site_name() message['To'] = invitation.to_address message['From'] = config['from_address'] ms = EmailSender(to_addresses = message['To']) ms.send_mime(message) invitation.sent = True db.commit() output.write(_("Sending balance invitation e-mail to %s\n") % message['To']) except: output.write(_("Can't send balance invitation e-mail: %s\n") % format_exc()) return output.getvalue()
def _send_invitations(self): model = request.environ["sqlalchemy.model"] db = request.environ["sqlalchemy.session"] output = StringIO() invitations = db.query(model.Invitation).filter_by(sent=False).all() for invitation in invitations: try: c.invitation_link = h.site_url() + h.url_for(controller='signup', action='create', id=invitation.token) c.invitation = invitation body = render_jinja('messages/invitation_mail.jinja') message = MIMEText(body.encode('utf-8'), 'plain', 'utf-8') message['Subject'] = _("You have been invited to %s") % h.site_name() message['To'] = invitation.to_address message['From'] = config['from_address'] ms = EmailSender(to_addresses = message['To']) ms.send_mime(message) invitation.sent = True db.commit() output.write(_("Sending invitation e-mail to %s\n") % message['To']) except: output.write(_("Can't send invitation e-mail: %s\n") % format_exc()) return output.getvalue()
def _send_password_resets(self): db = request.environ['sqlalchemy.session'] model = request.environ['sqlalchemy.model'] output = StringIO() resets = db.query(model.PasswordResetRequest).filter_by(sent_on=null()).all() for reset in resets: try: c.password_reset_link = h.site_url() + h.url_for(controller='password', action='reset', token=reset.token) c.password_reset_code = reset.token body = render_jinja('messages/password_reset.jinja') message = MIMEText(body.encode('utf-8'), 'plain', 'utf-8') message['Subject'] = _("Password reset instruction from %s") % h.site_name() message['To'] = reset.user.email message['From'] = config['from_address'] ms = EmailSender(to_addresses = message['To']) ms.send_mime(message) reset.sent_on = datetime.utcnow() db.commit() output.write(_("Sending password reset e-mail to %s\n") % message['To']) except: output.write(_("Can't send password reset e-mail: %s\n") % format_exc()) return output.getvalue()
def _send_invitations(self): """ Sends invitations to create an account. """ model = self.get_sa_model() db = self.get_sa_session() output = StringIO() invitations = db.query(model.Invitation).filter_by(sent=False).all() ms = EmailSender() for invitation in invitations: try: c.invitation_link = h.site_url() + h.url_for(controller='signup', action='create', id=invitation.token) c.invitation = invitation body = render_jinja2('messages/invitation_mail.jinja') message = MIMEText(body.encode('utf-8'), 'plain', 'utf-8') message['Subject'] = _("You have been invited to %s") % h.site_name() message['To'] = invitation.to_address message['From'] = config['from_address'] ms.send_mime(message['To'], message['From'], message) invitation.sent = True db.commit() if invitation.sender is not None: output.write(_("Sending invitation e-mail to %s (%s invitation)\n") % (message['To'], invitation.sender.username)) else: output.write(_("Sending invitation e-mail to %s\n") % message['To']) except: output.write(_("Can't send invitation e-mail: %s\n") % format_exc()) return output.getvalue()
def _send_emails(self): """ Sends emails. """ dbFacade = self.dbFacade() output = StringIO() emails = dbFacade.db.query(dbFacade.model.Email).all() if emails is None: return ms = EmailSender() for email in emails: try: ms.send_raw(email.to_address, email.from_address, email.body) dbFacade.db.delete(email) dbFacade.db.commit() output.write(_("Sent e-mail to %(to_address)s\n") % { 'to_address': email.to_address }) except: output.write(_("Can't send e-mail to %(to_address)s: %(exception)s\n") % { 'to_address': email.to_address, 'exception': format_exc() }) try: dbFacade.db.rollback() except: pass return output.getvalue()
def send_email(self): if not authorized(ValidAuthKitUser()): return { "failure" : Messages.invalidSession() } try: to_address = request.params['to_address'] subject = request.params['subject'] body = request.params['body'] except: return { "failure" : Messages.invalidArguments() } if to_address == "" or subject == "" or body == "": return { "failure" : Messages.invalidArguments() } from email.MIMEText import MIMEText message = MIMEText(body.encode('utf-8'), 'plain', 'utf-8') message['Subject'] = subject message['From'] = config['from_address'] message['To'] = to_address try: from fivecents.lib.mail import EmailSender ms = EmailSender(to_addresses = to_address) ms.send_mime(message) except Exception, e: return { "failure" : Messages.failedToSendEmail(exception=e) }
def _send_balance_invitations(self): db = request.environ['sqlalchemy.session'] model = request.environ['sqlalchemy.model'] invitations = db.query(model.BalanceInvitation).filter_by(sent=False).all() from email.MIMEText import MIMEText from fivecents.lib.mail import EmailSender for invitation in invitations: try: c.invitation_link = h.site_url() + h.url_for(controller='balances', action='invitation', id=invitation.token) c.invitation = invitation body = render_jinja('messages/balance_invitation.jinja') message = MIMEText(body.encode('utf-8'), 'plain', 'utf-8') message['Subject'] = _("Balance invitation from %s") % h.site_name() message['To'] = invitation.to_address message['From'] = config['from_address'] log.info(_("Sending balance invitation e-mail to %s") % message['To']) ms = EmailSender(to_addresses = message['To']) ms.send_mime(message) invitation.sent = True db.commit() except: log.error("Can't send balance invitation e-mail", exc_info=1)
def _send_password_resets(self): db = request.environ['sqlalchemy.session'] model = request.environ['sqlalchemy.model'] resets = db.query(model.PasswordResetRequest).filter_by(sent_on=null()).all() from email.MIMEText import MIMEText from fivecents.lib.mail import EmailSender for reset in resets: try: c.password_reset_link = h.site_url() + h.url_for(controller='password', action='reset', token=reset.token) c.password_reset_code = reset.token body = render_jinja('messages/password_reset.jinja') message = MIMEText(body.encode('utf-8'), 'plain', 'utf-8') message['Subject'] = _("Password reset instruction from %s") % h.site_name() message['To'] = reset.user.email message['From'] = config['from_address'] log.info(_("Sending password reset e-mail to %s") % message['To']) ms = EmailSender(to_addresses = message['To']) ms.send_mime(message) reset.sent_on = datetime.utcnow() db.commit() except: log.error("Can't send password reset e-mail", exc_info=1)
def send_feedback(self): from_address = request.params.get('from_address') subject = _("Feedback about %s ") % h.site_name() body = request.params.get('body') if not from_address or not subject or not body: return { "failure" : Messages.invalidArguments() } from email.MIMEText import MIMEText message = MIMEText(body.encode('utf-8'), 'plain', 'utf-8') message['Subject'] = subject message['From'] = from_address message['To'] = config['email_to'] try: from fivecents.lib.mail import EmailSender ms = EmailSender(to_addresses = message['To']) ms.send_mime(message) except Exception, e: return { "failure" : Messages.failedToSendEmail(exception=e) }
def send_invitation(self): model = request.environ["sqlalchemy.model"] db = request.environ["sqlalchemy.session"] if not authorized(ValidAuthKitUser()): return { "failure" : Messages.invalidSession() } try: to_address = request.params['to_address'] subject = _("You have been invited to %s " % h.site_name()) body = request.params['body'] except: return { "failure" : Messages.invalidArguments() } if to_address == "" or subject == "" or body == "": return { "failure" : Messages.invalidArguments() } invitation = model.Invitation( sender_uid = h.authenticated_user().uid, to_address = to_address, ) db.save(invitation) db.commit() c.invitation_link = h.site_url() + h.url_for(controller='signup', action='invitation', id=invitation.token) from email.MIMEText import MIMEText body = body + render_jinja('messages/invitation_footer.jinja') message = MIMEText(body.encode('utf-8'), 'plain', 'utf-8') message['Subject'] = subject message['From'] = config['from_address'] message['To'] = to_address try: from fivecents.lib.mail import EmailSender ms = EmailSender(to_addresses = to_address) ms.send_mime(message) except Exception, e: return { "failure" : Messages.failedToSendEmail(exception=e) }