[R-br] Mandar email pelo R
Daniel Ikenaga
oladani em gmail.com
Quarta Março 13 16:34:14 BRT 2013
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.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20130313/cea6e7fc/attachment.html>
Mais detalhes sobre a lista de discussão R-br