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