def test_use_ssl_mailer(self): try: from smtplib import SMTP_SSL ssl_enabled = True except ImportError: # pragma: no cover from smtplib import SMTP ssl_enabled = False from pyramid_mailer.mailer import Mailer mailer = Mailer(ssl=True) if ssl_enabled: self.assert_(mailer.direct_delivery.mailer.smtp == SMTP_SSL) from ssl import SSLError try: self.assert_(mailer.direct_delivery.mailer.smtp_factory()) except (IOError, SSLError): pass else: # pragma: no cover self.assert_(mailer.direct_delivery.mailer.smtp == SMTP) import socket try: self.assert_(mailer.direct_delivery.mailer.smtp_factory()) except socket.error, e: # smtp mailer might fail to resolve hostname self.assert_(e.args[0] == 61)
def send_invites_success(self, appstruct): settings = self.request.registry.settings mailer = Mailer( host=settings['mail.host'], port=settings['mail.port'], username=settings['bimt.referrals_mail_username'], password=settings['bimt.referrals_mail_password'], tls=True, default_sender=settings['bimt.referrals_mail_sender'], ) emails = appstruct['emails'].splitlines() for email in emails: mailer.send( Message( subject=u'Your friend, {}, gave you exclusive access to {}' .format( # noqa self.request.user.fullname, settings['bimt.app_title']), recipients=[ email, ], html=render('pyramid_bimt:templates/referral_email.pt', {'request': self.request}), ), ) self.request.registry.notify( ReferralEmailSent(self.request, self.request.user, 'Referral email sent to: {}'.format(email))) self.request.session.flash(u'Referral email sent to: {}'.format( ', '.join(appstruct['emails'].splitlines()))) return HTTPFound(location=self.request.route_path('referrals'))
def home_view(request): mailer = Mailer() message = Message(subject="測試信件", sender="*****@*****.**", recipients=['*****@*****.**'], body="這是測試信") mailer.send(message) return {}
def test_send_without_recipients(self): from pyramid_mailer.message import Message from pyramid_mailer.mailer import Mailer from pyramid_mailer.exceptions import InvalidMessage mailer = Mailer() msg = Message(subject="testing", recipients=[], body="testing") self.assertRaises(InvalidMessage, mailer.send, msg)
def test_send_to_queue_unconfigured(self): from pyramid_mailer.mailer import Mailer from pyramid_mailer.message import Message msg = Message(subject="testing", sender="*****@*****.**", recipients=["*****@*****.**"], body="test") mailer = Mailer() self.assertRaises(RuntimeError, mailer.send_to_queue, msg)
def test_send_immediately_and_fail_silently(self): from pyramid_mailer.mailer import Mailer from pyramid_mailer.message import Message mailer = Mailer() msg = Message(subject="testing", sender="*****@*****.**", recipients=["*****@*****.**"], body="test") mailer.send_immediately(msg, True)
def test_send(self): from pyramid_mailer.mailer import Mailer from pyramid_mailer.message import Message mailer = Mailer() msg = Message(subject="testing", sender="*****@*****.**", recipients=["*****@*****.**"], body="test") mailer.send(msg)
def test_bad_header_sender(self): from pyramid_mailer.message import Message from pyramid_mailer.mailer import Mailer from pyramid_mailer.exceptions import BadHeaders mailer = Mailer() msg = Message(subject="testing", sender="[email protected]\n\r", recipients=["*****@*****.**"], body="testing") self.assertRaises(BadHeaders, mailer.send, msg)
def test_send_immediately(self): import socket from pyramid_mailer.mailer import Mailer from pyramid_mailer.message import Message mailer = Mailer(host='localhost', port='28322') msg = Message(subject="testing", sender="*****@*****.**", recipients=["*****@*****.**"], body="test") self.assertRaises(socket.error, mailer.send_immediately, msg)
def test_cc_without_recipients(self): from pyramid_mailer.message import Message from pyramid_mailer.mailer import Mailer msg = Message(subject="testing", sender="*****@*****.**", body="testing", cc=["*****@*****.**"]) mailer = Mailer() msgid = mailer.send(msg) response = msg.to_message() self.assertTrue("Cc: [email protected]" in text_type(response)) self.assertTrue(msgid)
def test_send_without_body(self): from pyramid_mailer.message import Message from pyramid_mailer.mailer import Mailer from pyramid_mailer.exceptions import InvalidMessage msg = Message(subject="testing", sender="*****@*****.**", recipients=["*****@*****.**"]) mailer = Mailer() self.assertRaises(InvalidMessage, mailer.send, msg) msg.html = "<b>test</b>" mailer.send(msg)
def contato(request): """Contato""" # Import smtplib for the actual sending function import smtplib esquema = FormContato().bind(request=request) esquema.title = "Entre em contato com o Cuidando" form = deform.Form(esquema, buttons=('Enviar',)) if 'Enviar' in request.POST: # Validação do formulário try: form.validate(request.POST.items()) except deform.ValidationFailure as e: return {'form': e.render()} #sender = request.POST.get("email") #receivers = ['*****@*****.**'] #message = request.POST.get("assunto") try: #s = smtplib.SMTP( [host [, port [, local_hostname]]] ) #s = smtplib.SMTP('pop.mail.yahoo.com.br',587) #smtpObj.sendmail(sender, receivers, message) #s.quit() #mailer = get_mailer(request) mailer = Mailer() message = Message( subject=request.POST.get("assunto"), sender= request.POST.get("email"), #"*****@*****.**", recipients=['*****@*****.**'], body=request.POST.get("mensagem") ) mailer.send(message) transaction.commit() print "Successfully sent email" #except SMTPException: except: print "Error: unable to send email" return HTTPFound(location=request.route_url('inicial')) else: # Apresentação do formulário return {'form': form.render()}
def send_confirmation_email(email, link): email = email link = link mailer = Mailer(host=host, port=port, username=username, password=password, ssl=True) subject = "Welcome. Please verify your email." body = f'Please verify your email by clicking this link: {link} ' #Create html.jinja2 template for email body message = Message(subject=subject, sender=username, recipients=[email], body=body) mailer.send_immediately(message)
def send_mail(request): mailer = Mailer( host='smtp.gmail.com', port=587, #??? username='******', password='******', tls=True) if request.params.get('email') is not None: email = request.params['email'] else: email = "the email does not exist" send_topic = 'Welcome to join us for the seminar' send_er = '*****@*****.**' send_to = [email] send_this = "Thank you for signing up at our website..." message = Message( subject = send_topic, sender = send_er, recipients = send_to, body = send_this ) here = os.path.dirname(__file__) att1 = os.path.join(here, 'static','velur1.pdf') attachment = Attachment(att1, "image/jpg", open(att1, "rb")) message.attach(attachment) here = os.path.dirname(__file__) att2 = os.path.join(here, 'static','velur2.pdf') attachment = Attachment(att2, "image/jpg", open(att2, "rb")) message.attach(attachment) # mailer.send_immediately(message, fail_silently=False) mailer.send(message) return Response(email)
def test_send_to_queue(self): import os import tempfile from pyramid_mailer.mailer import Mailer from pyramid_mailer.message import Message test_queue = os.path.join(tempfile.gettempdir(), 'test_queue') for dir in ('cur', 'new', 'tmp'): try: os.makedirs(os.path.join(test_queue, dir)) except OSError: pass mailer = Mailer(queue_path=test_queue) msg = Message(subject="testing", sender="*****@*****.**", recipients=["*****@*****.**"], body="test") mailer.send_to_queue(msg)
def send_mail(request): mailer = Mailer( host='smtp.gmail.com', port=587, #??? username='******', password='******', tls=True) if request.params.get('email') is not None: email = request.params['email'] else: email = "the email does not exist" send_topic = 'Welcome to join us for the seminar' send_er = '*****@*****.**' send_to = [email] send_this = "Thank you for signing up at our website..." message = Message(subject=send_topic, sender=send_er, recipients=send_to, body=send_this) attachment = Attachment("velur1.pdf", "image/jpg", open("velur1.pdf", "rb")) message.attach(attachment) attachment = Attachment("velur2.pdf", "image/jpg", open("velur2.pdf", "rb")) message.attach(attachment) # mailer.send_immediately(message, fail_silently=False) mailer.send(message) return Response(email)
def main(global_config, **settings): authn_policy = AuthTktAuthenticationPolicy('sosecret', callback=groupfinder) authz_policy = ACLAuthorizationPolicy() """ This function returns a Pyramid WSGI application. """ engine = engine_from_config(settings, 'sqlalchemy.') DBSession.configure(bind=engine) my_session_factory = UnencryptedCookieSessionFactoryConfig('itsaseekreet') config = Configurator(settings=settings, root_factory='yapp.models.root_factory.RootFactory', session_factory=my_session_factory) config.set_authentication_policy(authn_policy) config.set_authorization_policy(authz_policy) mailer = Mailer() config.registry['mailer'] = Mailer.from_settings(settings) config.add_static_view('static', os.path.join(here, 'static')) config.add_route('login', '/') # config.add_route('index', '/index') config.add_route('readproyectos', '/readProyectos') config.add_route('createproyectos', '/createProyectos') config.add_route('updateproyectos', '/updateProyectos/{id}') config.add_route('deleteproyectos', '/deleteProyectos/{id}') config.add_route('obtenercrearfases', '/fases') config.add_route('actualizareliminarfases', '/fases/{id}') config.add_route('obtenercrearatributofase', '/atributofase') config.add_route('actualizareliminaratributofase', '/atributofase/{id}') config.add_route('obtenercreartipofase', '/tipofase') config.add_route('eliminartipofase', '/tipofase/{id}') config.add_route('obtenercrearrecursos', '/recursos') config.add_route('actualizareliminarrecursos', '/recursos/{id}') config.add_route('obtenercrearunidadtrabajo', '/unidadtrabajo') config.add_route('actualizareliminarunidadtrabajo', '/unidadtrabajo/{id}') config.add_route('obtenertrabajorecurso', '/unidadtrabajorecurso') config.add_route('asignarrecursos', '/asignarRecursos') config.add_route('tipos_recursos', '/tipo_recurso') config.add_route('logout', '/logout') config.add_route('crearProyecto', '/crearProyecto') config.add_route('roles', '/roles/{id_rol}') config.add_route('estados_roles', '/roles_estados') config.add_route('obtenerTipos', '/obtenerTipos') config.add_route('crearTipo', '/crearTipo') config.add_route('eliminarTipo', '/eliminarTipo/{id}') config.add_route('guardarTipo', '/guardarTipo/{id}') config.add_route('importarTipo', '/importarTipos') config.add_route('crearListarAtributos', '/atributoItem') config.add_route('editarEliminarAtributos', '/atributoItem/{id}') config.add_route('crearListarItems', '/item') config.add_route('editarEliminarItems', '/item/{id}') config.add_route('crearAtributo', '/crearAtributo') config.add_route('eliminarAtributo', '/eliminarAtributo') config.add_route('guardarAtributo', '/guardarAtributo') config.add_route('entidades_padre', '/entidades_padre/{id_entidad}') config.add_route('suscripciones', '/suscripciones/{id_suscripcion}') config.add_route('crearListarEsquemas', '/esquemas') config.add_route('editarEliminarEsquemas', '/esquemas/{id}') config.add_route('crearListarAtributosEsquemas', '/atributosEsquemas') config.add_route('editarEliminarAtributosEsquemas', '/atributosEsquemas/{id}') config.add_route('rolPrivilegios', '/rolPrivilegios/{id}') config.add_route('crearListarItemEsquemas', '/itemsEsquemas') config.add_route('editarEliminarItemEsquemas', '/itemsEsquemas/{id}') config.add_route('rolesfinales', '/rolesfinales/') config.add_route('notificaciones', '/notificaciones/') config.add_route('calculo_impacto', '/calculo_impacto') config.add_route('asignarUnidadItem', '/unidadItem') config.add_route('editarUnidadItem', '/unidadItem/{id}') config.add_route('asignarAtributoItem', '/itemAtributo') config.add_route('editarAtributoItem', '/itemAtributo/{id}') config.add_route('upload', '/upload') config.add_route('download', '/download') config.add_route('archivos', '/archivos') config.add_route('eliminarArchivo', '/archivos/{id}') #rutas volpe config.add_route('crearRol', '/crearRol') config.add_route('rol_privilegios', '/rol_privilegios/{id_privilegio}') config.add_route('privilegios', '/privilegios') #rutas Volpe 5 iteracion config.add_route('lineas_base', '/lineas_base') config.add_route('lineas_base_rest', '/lineas_base/{id}') #rutas Volpe 6 iteracion config.add_route('gantt', '/gantt') config.add_route('permisos', '/permisos') config.add_route('rol_permisos', '/rol_permisos') config.add_route('rol_permisos_rest', '/rol_permisos/{id}') config.add_route('login2', '/asd') config.scan() # config.scan("views") return config.make_wsgi_app()