[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