[R-br] Mandar email pelo R

Pedro Emmanuel Alvarenga Americano do Brasil emmanuel.brasil em gmail.com
Quarta Março 13 17:31:55 BRT 2013


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
>> 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
>>>> 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.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20130313/25acb36b/attachment-0001.html>


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