[R-br] Mandar email pelo R

Daniel Ikenaga oladani em gmail.com
Sexta Março 15 17:33:16 BRT 2013


A ideia do thunderburd no linux me parece a melhor.. acabei não comentando
porque originalmente pensava
em windows.

Abraços

 Daniel Ikenaga
    *@dialetica* <http://twitter.com/dialetica>


2013/3/15 Daniel Ikenaga <oladani em gmail.com>

> Pedro,
>
> O que diferencia a porta 25 da 587. Antes (porta 25), seria possível
> enviar um email como sendo de outra
> pessoa, note, que na configuração do pacote não há a exigência da senha de
> email. Também era possível
> ler todos os emails que trafegam pelas conexões. Utilizando a outra porta
> e um protocolo diferente, passa
> a ter três etapas, na primeira a troca de informação sobre a encriptação e
> a segunda o envio do usuário e
> senha e após isso uma nova encriptação para o envio do email. Isso, a
> atual versão do pacote não faz.
>
> ///
> List of options:
>
> smtpServerSMTP server to contact. This can either be the mail server
> responsible for the destination addresses domain or
> a smarthost provided by your ISP or institution.* SMTP AUTH is currently
> unsupported.*
>
> smtpPortSMTP port to use. Usually 25 but some institutions require the use
> of the submission service (port 587).
>
> verboseShow detailed information about message submission. Useful for
> debugging.
> ///
>
>
> Não encontrei formas de modificar a porta, tanto no socketConnection como
> no sendmail control.
> Então, sem uma nova atualização, o pacote me parece inutilizável.
>
> Uma saída que talvez seja interessante é enviar para uma base de dados
> (mysql por exemplo) e no servidor desta base
> e, que também tenha sendmail 587, deixar um  schedule rodando, veja o Cron
> (http://en.wikipedia.org/wiki/Cron).
>
> Acho que é uma forma...
>
> Abraços
>
>  Daniel Ikenaga
>     *@dialetica* <http://twitter.com/dialetica>
>
>
> 2013/3/13 Cleber N.Borges <klebyn em yahoo.com.br>
>
>
>> no help do pacote diz ter uma função 'sendmail_options'
>>
>> com um parametro 'smtpPortSMTP' especificamente
>> para mudar a porta 25.
>>
>> -----------
>>   • smtpPortSMTP port to use. Usually 25 but some institutions
>>           require the use of the submission service (port 587).
>> ----------
>>
>> talvez vale a pena fazer um ultimo teste com esse detalhe...
>>
>> não vi a thread toda, se já tentou isso, me desculpe pela bola fora,
>> caso não, fica a dica
>>
>>
>> cleber
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> Em 13/03/2013 17:31, Pedro Emmanuel Alvarenga Americano do Brasil
>> escreveu:
>>
>>  Daniel,
>>
>>  Quando voce diz um sendmail externo seria do tipo ter um thunderbird
>> configurado e o bat executaria o thunderbird e mandaria a mensagem com o
>> arquivo anexado?
>>
>>  Bom... tem alguns bacanas na internet que ja colocaram umas coisas
>> assim, mas se for assim, eu preferiria fazer manualmente mesmo. Eu queria
>> simplificar e não complicar.
>>
>>  Quanto a função send.email na mensagem anterior, voce tem algum
>> comentário porque dá aquele erro de conexão?
>>
>>  Abraço,
>>
>> Dr. Pedro Emmanuel A. A. do Brasil
>> Curriculum Lattes:  http://lattes.cnpq.br/6597654894290806
>> Instituto de Pesquisa Clínica Evandro Chagas
>> Fundação Oswaldo Cruz
>> Rio de Janeiro - Brasil
>> Av. Brasil 4365,
>> CEP 21040-360,
>> Tel 55 21 3865-9648
>> email: pedro.brasil em ipec.fiocruz.br
>> email: emmanuel.brasil em gmail.com
>>
>> ---Apoio aos softwares livres
>> www.zotero.org - gerenciamento de referências bibliográficas.
>> www.broffice.org ou www.libreoffice.org - textos, planilhas ou
>> apresentações.
>> www.epidata.dk - entrada de dados.
>> www.r-project.org - análise de dados.
>> www.ubuntu.com - sistema operacional
>>
>>
>> Em 13 de março de 2013 17:34, Daniel Ikenaga <oladani em gmail.com>escreveu:
>>
>>> Fiz alguns testes, mas, é mesmo a limitação do package. Não é possível
>>> mudar a porta 25. Não
>>> consegui criar uma porta 25 em um servidor para testar.
>>>
>>>  Penso em duas saídas:
>>>
>>>  Instalar um servidor com porta 25, o que acho arriscado, pois
>>> facilmente cairia na black list e spam,
>>> ou fazer um bat num sendmail externo para ler a atualização de um
>>> arquivo que seria salvo do R.
>>>
>>>
>>> Abraços
>>>
>>>  Daniel Ikenaga
>>>     *@dialetica* <http://twitter.com/dialetica>
>>>
>>>
>>> 2013/3/13 Pedro Emmanuel Alvarenga Americano do Brasil <
>>> emmanuel.brasil em gmail.com>
>>>
>>>>  Daniel,
>>>>
>>>>  Mesmo mudando a porta, a messagem de erro continua. Acredito que
>>>> dentro da função deve ter um bug que mantem a porta 25 apesar de informar
>>>> outra porta como argumento da função.
>>>>
>>>>  > sendmail(from, to, subject,
>>>> body,control=list(smtpPortSMTP=587,verboseShow=TRUE,smtpServer="
>>>> ASPMX.L.GOOGLE.COM"))
>>>>  Erro em socketConnection(host = server, port = port, blocking = TRUE)
>>>> :
>>>>   não é possível abrir a conexão
>>>> Além disso: Mensagens de aviso perdidas:
>>>> In socketConnection(host = server, port = port, blocking = TRUE) :
>>>>   ASPMX.L.GOOGLE.COM:25 cannot be opened
>>>>
>>>>  Por enquanto vou fazendo manualmente mesmo.
>>>>
>>>>  Abraço forte,
>>>>
>>>>
>>>>
>>>>
>>>> Dr. Pedro Emmanuel A. A. do Brasil
>>>> Curriculum Lattes:  http://lattes.cnpq.br/6597654894290806
>>>> Instituto de Pesquisa Clínica Evandro Chagas
>>>> Fundação Oswaldo Cruz
>>>> Rio de Janeiro - Brasil
>>>> Av. Brasil 4365,
>>>> CEP 21040-360,
>>>> Tel 55 21 3865-9648 <55%2021%203865-9648>
>>>> email: pedro.brasil em ipec.fiocruz.br
>>>> email: emmanuel.brasil em gmail.com
>>>>
>>>> ---Apoio aos softwares livres
>>>> www.zotero.org - gerenciamento de referências bibliográficas.
>>>> www.broffice.org ou www.libreoffice.org - textos, planilhas ou
>>>> apresentações.
>>>> www.epidata.dk - entrada de dados.
>>>> www.r-project.org - análise de dados.
>>>> www.ubuntu.com - sistema operacional
>>>>
>>>>
>>>>  Em 12 de março de 2013 15:16, Daniel Ikenaga <oladani em gmail.com>escreveu:
>>>>
>>>>  Desconheço a utilização avançada de R, mas teu problema não seria na
>>>>> porta 25?
>>>>>
>>>>>  Faz mais de 2 mês que o Google não opera mais com a porta 25, só com
>>>>> a 587 em SSL, daí,
>>>>>  se não houver compatibilidade com smtp em ssl, fosse o caso de usar
>>>>> outro servidor.
>>>>>
>>>>>
>>>>> Abraços
>>>>>
>>>>>  Daniel Ikenaga
>>>>>     *@dialetica* <http://twitter.com/dialetica>
>>>>>
>>>>>
>>>>>  On Mon, Mar 11, 2013 at 10:23 AM, Pedro Emmanuel Alvarenga Americano
>>>>> do Brasil <emmanuel.brasil em gmail.com> wrote:
>>>>>
>>>>>>   Amigos de R,
>>>>>>
>>>>>>  Sei que essa questão volta algumas vezes na lista mas estou
>>>>>> empacado. Estou fazendo um data management de um projeto em que consiste em
>>>>>> repetidas vezes, tipo toda semana, verificar quantos voluntários entraram
>>>>>> no proejto, dados inconsistentes, dados ausentes e coisas assim. Então, eu
>>>>>> consegui fazer um script para esse fim em que gera um arquivo com algumas
>>>>>> tabelas e graficos.
>>>>>>
>>>>>>  Agora eu gostaria de incluir nesse script o envio de um email pra
>>>>>> mim mesmo com esse arquivo, para que eu possa verificar e depois encaminhar
>>>>>> para os outros participantes. Sei que existe o sendmailR, mas não estou
>>>>>> conseguindo fazer funcionar. Encontrei um catatau de gente referindo o
>>>>>> mesmo erro em diversos diferentes foruns:
>>>>>>
>>>>>>  > sendmail(from, to, subject, body,control=list(smtpServer="
>>>>>> ASPMX.L.GOOGLE.COM"))
>>>>>> Erro em socketConnection(host = server, port = port, blocking = TRUE)
>>>>>> :
>>>>>>   não é possível abrir a conexão
>>>>>> Além disso: Mensagens de aviso perdidas:
>>>>>> In socketConnection(host = server, port = port, blocking = TRUE) :
>>>>>>   ASPMX.L.GOOGLE.COM:25 cannot be opened
>>>>>>
>>>>>>
>>>>>>  Depois, consegui encontrar essa função em um dos foruns. O autor
>>>>>> fala que funciona, mas comigo tem dado um erro de conectividade e eu não
>>>>>> sabendo como dar a volta nesse erro. Será que tem alguma relação com o
>>>>>> proxy?
>>>>>>
>>>>>>  > send.email
>>>>>> function(to, from, subject,
>>>>>>   message, attachment=NULL,
>>>>>>   username, password,
>>>>>>   server="smtp.gmail.com:587",
>>>>>>   confirmBeforeSend=TRUE){
>>>>>>   # to: a list object of length 1.  Using list("Recipient" = "
>>>>>> recip em somewhere.net") will send the message to the address but
>>>>>>   #     the name will appear instead of the address.
>>>>>>   # from: a list object of length 1.  Same behavior as 'to'
>>>>>>   # subject: Character(1) giving the subject line.
>>>>>>   # message: Character(1) giving the body of the message
>>>>>>   # attachment: Character(1) giving the location of the attachment
>>>>>>   # username: character(1) giving the username.  If missing and you
>>>>>> are using Windows, R will prompt you for the username.
>>>>>>   # password: character(1) giving the password.  If missing and you
>>>>>> are using Windows, R will prompt you for the password.
>>>>>>    # server: character(1) giving the smtp server.
>>>>>>   # confirmBeforeSend: Logical.  If True, a dialog box appears
>>>>>> seeking confirmation before sending the e-mail.  This is to
>>>>>>   #                    prevent me to send multiple updates to a
>>>>>> collaborator while I am working interactively.
>>>>>>
>>>>>>   if (!is.list(to) | !is.list(from)) stop("'to' and 'from' must be
>>>>>> lists")
>>>>>>   if (length(from) > 1) stop("'from' must have length 1")
>>>>>>   if (length(to) > 1) stop("'send.email' currently only supports one
>>>>>> recipient e-mail address")
>>>>>>   if (length(attachment) > 1) stop("'send.email' can currently send
>>>>>> only one attachment")
>>>>>>    if (length(message) > 1){
>>>>>>     stop("'message' must be of length 1")
>>>>>>     message <- paste(message, collapse="\\n\\n")
>>>>>>   }
>>>>>>
>>>>>>   if (is.null(names(to))) names(to) <- to
>>>>>>   if (is.null(names(from))) names(from) <- from
>>>>>>   if (!is.null(attachment)) if (!file.exists(attachment))
>>>>>> stop(paste("'", attachment, "' does not exist!", sep=""))
>>>>>>
>>>>>>   if (missing(username)) username <- winDialogString("Please enter
>>>>>> your e-mail username", "")
>>>>>>   if (missing(password)) password <- winDialogString("Please enter
>>>>>> your e-mail password", "")
>>>>>>
>>>>>>   require(rJython)
>>>>>>   rJython <- rJython()
>>>>>>
>>>>>>    rJython$exec("import smtplib")
>>>>>>   rJython$exec("import os")
>>>>>>   rJython$exec("from email.MIMEMultipart import MIMEMultipart")
>>>>>>   rJython$exec("from email.MIMEBase import MIMEBase")
>>>>>>   rJython$exec("from email.MIMEText import MIMEText")
>>>>>>   rJython$exec("from email.Utils import COMMASPACE, formatdate")
>>>>>>   rJython$exec("from email import Encoders")
>>>>>>   rJython$exec("import email.utils")
>>>>>>
>>>>>>    mail<-c(
>>>>>>   #Email settings
>>>>>>   paste("fromaddr = '", from, "'", sep=""),
>>>>>>   paste("toaddrs  = '", to, "'", sep=""),
>>>>>>   "msg = MIMEMultipart()",
>>>>>>   paste("msg.attach(MIMEText('", message, "'))", sep=""),
>>>>>>   paste("msg['From'] = email.utils.formataddr(('", names(from), "',
>>>>>> fromaddr))", sep=""),
>>>>>>   paste("msg['To'] = email.utils.formataddr(('", names(to), "',
>>>>>> toaddrs))", sep=""),
>>>>>>   paste("msg['Subject'] = '", subject, "'", sep=""))
>>>>>>
>>>>>>   if (!is.null(attachment)){
>>>>>>     mail <- c(mail,
>>>>>>       paste("f = '", attachment, "'", sep=""),
>>>>>>      "part=MIMEBase('application', 'octet-stream')",
>>>>>>      "part.set_payload(open(f, 'rb').read())",
>>>>>>      "Encoders.encode_base64(part)",
>>>>>>      "part.add_header('Content-Disposition', 'attachment;
>>>>>> filename=\"%s\"' % os.path.basename(f))",
>>>>>>      "msg.attach(part)")
>>>>>>   }
>>>>>>
>>>>>>  #SMTP server credentials
>>>>>>    mail <- c(mail,
>>>>>>     paste("username = '", username, "'", sep=""),
>>>>>>     paste("password = '", password, "'", sep=""),
>>>>>>
>>>>>>  #Set SMTP server and send email, e.g., google mail SMTP server
>>>>>>     paste("server = smtplib.SMTP('", server, "')", sep=""),
>>>>>>     "server.ehlo()",
>>>>>>     "server.starttls()",
>>>>>>     "server.ehlo()",
>>>>>>     "server.login(username,password)",
>>>>>>     "server.sendmail(fromaddr, toaddrs, msg.as_string())",
>>>>>>     "server.quit()")
>>>>>>
>>>>>>    message.details <-
>>>>>>      paste("To:               ", names(to), " (", unlist(to), ")",
>>>>>> "\n",
>>>>>>           "From:             ", names(from), " (", unlist(from), ")",
>>>>>> "\n",
>>>>>>           "Using server:     ", server, "\n",
>>>>>>           "Subject:          ", subject, "\n",
>>>>>>           "With Attachments: ", attachment, "\n",
>>>>>>           "And the message:\n", message, "\n", sep="")
>>>>>>
>>>>>>    if (confirmBeforeSend)
>>>>>>     SEND <- winDialog("yesnocancel", paste("Are you sure you want to
>>>>>> send this e-mail to ", unlist(to), "?", sep=""))
>>>>>>    else SEND <- "YES"
>>>>>>
>>>>>>   if (SEND %in% "YES"){
>>>>>>     jython.exec(rJython,mail)
>>>>>>     cat(message.details)
>>>>>>   }
>>>>>>    else cat("E-mail Delivery was Canceled by the User")
>>>>>> }
>>>>>>
>>>>>>  from <- list("Recipient" = "emmanuel.brasil em gmail.com")
>>>>>> to <- list("Recipient" = "emmanuel.brasil em gmail.com")
>>>>>> subject <- paste0("Pendencias Nomograma de ",Sys.time())
>>>>>>  message <- "Mensagem automática com relatório de pendências do
>>>>>> projeto Nomograma."
>>>>>> attachment <- 'c:/banco/nomograma/Controle_recrutamento.doc'
>>>>>> > send.email(to,from,subject,message,attachment,'
>>>>>> emmanuel.brasil em gmail.com','...',confirmBeforeSend=FALSE)
>>>>>>    Erro em jython.exec(rJython, mail) : (62, 'Connection refused')
>>>>>>
>>>>>>  Qualquer luz é bem vinda.
>>>>>>
>>>>>>  Abraço forte,
>>>>>>
>>>>>>  Dr. Pedro Emmanuel A. A. do Brasil
>>>>>> Curriculum Lattes:  http://lattes.cnpq.br/6597654894290806
>>>>>> Instituto de Pesquisa Clínica Evandro Chagas
>>>>>> Fundação Oswaldo Cruz
>>>>>> Rio de Janeiro - Brasil
>>>>>> Av. Brasil 4365,
>>>>>> CEP 21040-360,
>>>>>> Tel 55 21 3865-9648 <55%2021%203865-9648>
>>>>>> email: pedro.brasil em ipec.fiocruz.br
>>>>>> email: emmanuel.brasil em gmail.com
>>>>>>
>>>>>> ---Apoio aos softwares livres
>>>>>> www.zotero.org - gerenciamento de referências bibliográficas.
>>>>>> www.broffice.org ou www.libreoffice.org - textos, planilhas ou
>>>>>> apresentações.
>>>>>> www.epidata.dk - entrada de dados.
>>>>>> www.r-project.org - análise de dados.
>>>>>> www.ubuntu.com - sistema operacional
>>>>>>
>>>>>>  _______________________________________________
>>>>>> R-br mailing list
>>>>>> R-br em listas.c3sl.ufpr.br
>>>>>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>>>>>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>>>>>> código mínimo reproduzível.
>>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> R-br mailing list
>>>>> R-br em listas.c3sl.ufpr.br
>>>>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>>>>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>>>>> código mínimo reproduzível.
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> R-br mailing list
>>>> R-br em listas.c3sl.ufpr.br
>>>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>>>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>>>> código mínimo reproduzível.
>>>>
>>>
>>>
>>> _______________________________________________
>>> R-br mailing list
>>> R-br em listas.c3sl.ufpr.br
>>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>>> código mínimo reproduzível.
>>>
>>
>>
>>
>> _______________________________________________
>> R-br mailing listR-br em listas.c3sl.ufpr.brhttps://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
>>
>>
>>
>> _______________________________________________
>> R-br mailing list
>> R-br em listas.c3sl.ufpr.br
>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>> código mínimo reproduzível.
>>
>
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20130315/0e28fb0e/attachment-0001.html>


Mais detalhes sobre a lista de discussão R-br