Robson, já estou com um projeto desses em mente, semi-estruturado e
engatilhado inclusive, acho que dentro de alguns dias podemos começar
a valer. Já tem eu, você e o Edgard Costas dispostos.

Mais gente?

Davi

--- Em zope-pt@yahoogrupos.com.br, ROBSON VIRINO - GEINF <[EMAIL PROTECTED]>
escreveu
>
> Show de Bola, Davi, sua atitude.
> 
> Acho que essa idéia já passou até por aqui, mas reforçando, seria 
> interessante até depois catalogarmos as dúvidas solucionadas na
lista em 
> uma página,
> como uma espécie de apostila Zope-pt, ou até uma revista virtual
Zope-pt 
> com soluções em artigos.
> Com certeza, aqui na lista, varrendo as mensagens antigas, tem truques 
> que não se encontram por aí em outros sites sobre Plone, inclusive no 
> Tchezope ou Plone.org;
> 
> Isso seria ótimo pra quem é recém-chegado no Plone, visto que 
> catalogaríamos artigos em mutirão de forma coesa, um resumo de várias 
> threads em um só canto.
> Pois o que acontece quando as pessoas procuram na lista, mesmo 
> pesquisando dúvidas já respondidas, perguntam novamente, pois há o 
> cansaço de juntar as idéias externalizadas em várias threads em
torno de 
> uma solução...
> 
> Eu posso dedicar uma hora por dia para fazer varredura de soluções 
> encontradas na lista.
> Com a ajuda de todos, economizaríamos centenas de threads repetidas, 
> facilitando a difusão do desenvolvimento Plone.
> Enfim, como faríamos isso? Colhamos idéias!
> 
> [ ]s
> 
> Robson Virino.
> 
> Davi Medeiros escreveu:
> >
> > Compartilhando com a lista o sucesso obtido com a ajuda do Fabiano
> > Weimar do João Bueno na minha missão de enviar um anexo por email
> > junto a uma adaptação do /contact-info do Plone. Se alguém quiser
> > melhorar algo, sugerir melhores práticas, só temos a agradecer.
> >
> > Customizei o CPT contact-info adicionando via HTML um campo do
> > type="file" name="imagem", baseado nos campos já existentes. Como a
> > imagem não era obrigatória não precisei atualizar a validação dos
> > campos. Porém alterei a action de sucesso, customizando o
> > portal_skins/plone_form_scripts/send_feedback_site para
> > custom/send_seu_jeito que ficou assim:
> >
> > >>
> >
> > REQUEST=context.REQUEST
> >
> > from Products.CMFPlone.utils import transaction_note
> > from Products.CMFCore.utils import getToolByName
> > from Products.CMFPlone import PloneMessageFactory as _
> > from ZODB.POSException import ConflictError
> >
> > ##
> > ## This may change depending on the called (portal_feedback or author)
> > state_success = "success"
> > state_failure = "failure"
> >
> > plone_utils = getToolByName(context, 'plone_utils')
> > urltool = getToolByName(context, 'portal_url')
> > portal = urltool.getPortalObject()
> > url = urltool()
> >
> > ## make these arguments?
> > subject = REQUEST.get('subject', '')
> > message = REQUEST.get('message', '')
> > sender_from_address = REQUEST.get('sender_from_address', '')
> > sender_fullname = REQUEST.get('sender_fullname', '')
> > imagem = REQUEST.get('imagem', '').read()
> >
> > send_to_address = portal.getProperty('email_from_address')
> > envelope_from = portal.getProperty('email_from_address')
> >
> > state.set(status=state_success) ## until proven otherwise
> >
> > host = context.MailHost
> > encoding = plone_utils.getSiteEncoding()
> >
> > variables = {'sender_from_address' : sender_from_address,
> > 'sender_fullname' : sender_fullname,
> > 'url' : url,
> > 'subject' : subject,
> > 'message' : message
> > }
> >
> > try:
> > message = context.seu_jeito_feedback_template(context, **variables)
> > context.run_send_seu_jeito(sender_from_address, send_to_address,
> > subject, message, imagem)
> > except ConflictError:
> > raise
> > except: # TODO Too many things could possibly go wrong. So we
catch all.
> > exception = plone_utils.exceptionString()
> > message = _(u'Unable to send mail: ${exception}',
> > mapping={u'exception' : exception})
> > plone_utils.addPortalMessage(message)
> > return state.set(status=state_failure)
> >
> > ## clear request variables so form is cleared as well
> > REQUEST.set('message', None)
> > REQUEST.set('subject', None)
> > REQUEST.set('sender_from_address', None)
> > REQUEST.set('sender_fullname', None)
> > REQUEST.set('imagem', None)
> >
> > plone_utils.addPortalMessage(_(u'Mail sent.'))
> > return state
> >
> > <<
> >
> > E por fim criei um External Method chamado run_send_seu_jeito que lê o
> > seguinte arquivo mailer.py (module: mailer, function: send) guardado
> > dentro da pasta Extensions do meu Plone 2.5.3.
> >
> > >>
> >
> > import sys, smtplib, MimeWriter, base64, StringIO, os, string, time
> >
> > def send(self, sender_from_address, send_to_address, subject,
> > message_text, imagem):
> > context = self
> > REQUEST = context.REQUEST
> > message = StringIO.StringIO()
> > writer = MimeWriter.MimeWriter(message)
> > writer.addheader('MIME-Version', '1.0')
> > writer.addheader('Subject', subject)
> > writer.addheader('To', send_to_address )
> >
> > # get ready to send attachment
> > writer.startmultipartbody('mixed')
> >
> > # start off with a text/html part
> > part = writer.nextpart()
> > body = part.startbody('text/html')
> >
> > body.write(message_text)
> >
> > # ............................
> > # add Image attachment
> > # ............................
> > if imagem:
> > image_type = "JPG"
> > part = writer.nextpart()
> > part.addheader('Content-Transfer-Encoding', 'base64')
> > body = part.startbody('image/%s; name=%s' % (image_type,
> > "Imagem-Ilustrativa.jpg"))
> > # image file
> > body.write(base64.encodestring(imagem))
> > # finish off
> > writer.lastpart()
> >
> > # ..................................................
> > # send the mail
> > # . if user supplied userid/password then deal w/it
> > # ..................................................
> > smtp = smtplib.SMTP(context.MailHost.smtp_host)
> > if context.MailHost.smtp_userid:
> > smtp.ehlo()
> > smtp_userid64 = base64.encodestring(context.MailHost.smtp_userid)
> > smtp.docmd("auth", "login " + smtp_userid64[:-1])
> > if context.MailHost.smtp_pass:
> > smtp_pass64 = base64.encodestring(self.MailHost.smtp_pass)
> > smtp.docmd(smtp_pass64[:-1])
> > smtp.sendmail(sender_from_address, send_to_address,
> > message.getvalue())
> > smtp.quit()
> >
> > <<
> >
> > Muito obrigado! O aprendizado ficou!
> >
> > Até mais,
> > Davi Lima
> >
> > --- Em zope-pt@yahoogrupos.com.br 
> > <mailto:zope-pt%40yahoogrupos.com.br>, "Fabiano Weimar dos Santos"
> > <xirumacanudo@> escreveu
> > >
> > > Oi Davi,
> > >
> > > da uma olhada nesse link:
> > >
> > >
> >
http://www.redcor.ch/web/intranet_zope_plone/tutorial/faq/SendingMailWithAttachmentsViaPython

> >
<http://www.redcor.ch/web/intranet_zope_plone/tutorial/faq/SendingMailWithAttachmentsViaPython>
> > >
> > > É um pouco chato de fazer, mas se você mandar uma mensagem como quer
> > > para você, analisar o código fonte da mensagem e tentar gerar
> > > cabeçalhos parecidos, não deve ser tão difícil.
> > >
> > > Um abraço,
> > >
> > > Fabiano Weimar
> > >
> > >
> > > 2008/2/21 Davi Medeiros <davi@>:
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > Ricardo, adicionar o campo é fácil, preciso saber é como
enviar anexa
> > > > a imagem por email. Encontrei o script que faz o envio do mail via
> > > > MailHost: /portal_skins/plone_form_scripts/send_feedback_site
> > > >
> > > > Agora preciso saber como enviar a imagem anexa. Por exemplo,
lá tem:
> > > > message = REQUEST.get('message', '')
> > > >
> > > > Creio que eu precisaria de um:
> > > >
> > > > imagem = REQUEST.get('imagem', '')
> > > >
> > > > Mas e depois, como usar a sintaxe do /MailHost para incluir um
anexo?
> > > > É possível?
> > > >
> > > > Abraço!
> > > > Davi Lima
> > > >
> > > > --- Em zope-pt@yahoogrupos.com.br 
> > <mailto:zope-pt%40yahoogrupos.com.br>, "Ricardo Dani" <gauchoo@>
escreveu
> > > >
> > > > >
> > > > > Procure pelo contact-info.pt , é lá que você deve fazer isso.
> > > > >
> > > > > 2008/2/19 Davi Medeiros <davi@>:
> > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > O que eu preciso fazer para acrescentar um campo de imagem
(input
> > > > > > type=file) ao formulário de contact-info e ele ser enviado
> > anexo para
> > > > > > o email? Onde fica a classe que faz esse mailing? É o melhor
> > jeito de
> > > > > > obter esse resultado?
> > > > > >
> > > > > > Por favor, quem puder, me tire essa dúvida.
> > > > > >
> > > > > > Obrigado!
> > > > > > Davi Lima
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > > Ricardo Lapa Dani
> > > > > http://www.paradigma.com.br <http://www.paradigma.com.br>
> > > > >
> > > >
> > > >
> > >
> > >
> > >
> > > --
> > > Fabiano Weimar dos Santos (xiru)
> > > Weimar Consultoria
> > >
> > > Hospedagem Plone, Zope e Python
> > > http://www.pytown.com <http://www.pytown.com>
> > >
> >
> >
>


Responder a