reenviar por pesados enviar electronico documento desde correo con como celular archivos archivo adjuntos adjuntar r email sendmailr

pesados - como enviar un documento por correo gmail



Cómo enviar un correo electrónico con archivo adjunto desde R en Windows (6)

Tengo un script R programado que se ejecuta desde una máquina de Windows.

Después de que termine, deseo que esta secuencia de comandos envíe automáticamente un correo electrónico con algún archivo de registro adjunto.

Usar shell() con algunos otros scripts puede ser posible, pero me preguntaba si hay una mejor solución dentro de R. Gracias.


¿ sendmailR paquete sendmailR ? Permite a SMTP enviar un mensaje y probablemente podría editar la función para permitir un archivo adjunto. Por otra parte, si es solo un archivo de registro, puede valer la pena usar shell() como mencionaste.


¿Te contentarías con un mensaje de Twitter? Puede usar Rcurl para publicar una actualización en Twitter, que luego se puede reenviar a su teléfono celular como un texto, o a su correo electrónico a través de la configuración de notificaciones.

Vea aquí: http://www.sakana.fr/blog/2007/03/18/scripting-twitter-with-curl/


Para Windows uno podría analizar juntos un VB-Script (ver, por ejemplo, http://www.paulsadowski.com/wsh/cdo.htm ) y luego llamarlo a través de shell.

Esto podría verse así:

SendMail <- function(from="[email protected]",to="[email protected]",text="Hallo",subject="Sag Hallo",smtp="smtp.my.server.de",user="me.myself.and.i",pw="123"){ require(stringr) part1 <- "Const cdoSendUsingPickup = 1 ''Send message using the local SMTP service pickup directory. Const cdoSendUsingPort = 2 ''Send the message using the network (SMTP over the network). Const cdoAnonymous = 0 ''Do not authenticate Const cdoBasic = 1 ''basic (clear-text) authentication Const cdoNTLM = 2 ''NTLM " part2 <- paste(paste("Set objMessage = CreateObject(",''"'',"CDO.Message",''"'',")" ,sep=""), paste("objMessage.Subject = ",''"'',subject,''"'',sep=""), paste("objMessage.From = ",''"'',from,''"'',sep=""), paste("objMessage.To = ",''"'',to,''"'',sep=""), paste("objMessage.TextBody = ",''"'',text,''"'',sep=""), sep="/n") part3 <- paste( "''==This section provides the configuration information for the remote SMTP server. objMessage.Configuration.Fields.Item _ (/"http://schemas.microsoft.com/cdo/configuration/sendusing/") = 2 ''Name or IP of Remote SMTP Server objMessage.Configuration.Fields.Item _ (/"http://schemas.microsoft.com/cdo/configuration/smtpserver/") = ",''"'',smtp,''"''," ''Type of authentication, NONE, Basic (Base64 encoded), NTLM objMessage.Configuration.Fields.Item _ (/"http://schemas.microsoft.com/cdo/configuration/smtpauthenticate/") = cdoBasic ''Your UserID on the SMTP server objMessage.Configuration.Fields.Item _ (/"http://schemas.microsoft.com/cdo/configuration/sendusername/") = ",''"'',user,''"''," ''Your password on the SMTP server objMessage.Configuration.Fields.Item _ (/"http://schemas.microsoft.com/cdo/configuration/sendpassword/") = ",''"'',pw,''"'', " ''Server port (typically 25) objMessage.Configuration.Fields.Item _ (/"http://schemas.microsoft.com/cdo/configuration/smtpserverport/") = 25 ''Use SSL for the connection (False or True) objMessage.Configuration.Fields.Item _ (/"http://schemas.microsoft.com/cdo/configuration/smtpusessl/") = False ''Connection Timeout in seconds (the maximum time CDO will try to establish a connection to the SMTP server) objMessage.Configuration.Fields.Item _ (/"http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout/") = 60 objMessage.Configuration.Fields.Update ''==End remote SMTP server configuration section== objMessage.Send ",sep="") vbsscript <- paste(part1,part2,part3,sep="/n/n/n") str_split(vbsscript,"/n") writeLines(vbsscript, "sendmail.vbs") shell("sendmail.vbs") unlink("sendmail.vbs") }


Solo quiero recordarle a la gente que quiere la función de auto-notificación de un servicio llamado twilio, ellos brindan servicio gratuito para enviar sms a su propio teléfono celular. Se puede acceder a través de R aquí https://dreamtolearn.com/ryan/data_analytics_viz/78

Se adjunta un código de ejemplo, simplemente reemplace las credenciales por las suyas propias.

library(jsonlite) library(XML) library(httr) library(rjson) library(RCurl) options(RCurlOptions = list(cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl"))) authenticate_twilio <- "https://[ACCOUNT SID]:[AUTH TOKEN]@api.twilio.com/2010-04-01/Accounts" authenticate_response <- getURL(authenticate_twilio) print(authenticate_response) postForm("https://[ACCOUNT SID]:[AUTH TOKEN]@api.twilio.com/2010-04-01/Accounts/[ACCOUNT SID]/Messages.XML",.params = c(From = "+1[twilio phone#]", To = "+1[self phone#]",Body = "Hello from twilio"))


Utilice mailR : funciona con autenticación, archivos adjuntos, envía automáticamente mensajes de texto junto con html y más.

mailR requiere rJava, lo que a veces puede ser un poco molesto. En Windows no he tenido ningún problema. En ubuntu esto resolvió el único problema que tuve:

sudo apt-get install openjdk-jdk

en R

install.packages("devtools", dep = T) library(devtools) install_github("rpremraj/mailR")

(Si tiene problemas con rJava, intente con sudo R CMD javareconf en el terminal)

mailR es fácil de trabajar y está bien documentado en la página de github.

Ejemplo de la documentacion

library(mailR) send.mail(from = "[email protected]", to = c("[email protected]", "[email protected]"), subject = "Subject of the email", body = "Body of the email", smtp = list(host.name = "smtp.gmail.com", port = 465, user.name = "gmail_username", passwd = "password", ssl = TRUE), authenticate = TRUE, send = TRUE, attach.files = c("./download.log", "upload.log", "https://dl.dropboxusercontent.com/u/5031586/How%20to%20use%20the%20Public%20folder.rtf"), file.names = c("Download log.log", "Upload log.log", "DropBox File.rtf"), # optional parameter file.descriptions = c("Description for download log", "Description for upload log", "DropBox File"), # optional parameter debug = TRUE)

Nota: su servidor smtp puede considerar que el uso excesivo es sospechoso. Este es el caso con, por ejemplo, gmail. Entonces, después de enviar algunos correos, es probable que deba iniciar sesión en la cuenta de Gmail y ver si la cuenta se ha desactivado temporalmente. También tenga en cuenta que si utiliza una cuenta de Gmail con autenticación de dos factores, debe utilizar una contraseña específica de la aplicación .


sendmailR funciona para mí en Windows 7. Me referí a http://cran.es.r-project.org/web/packages/sendmailR/sendmailR.pdf

smtpServer = información para Outlook 2010 está en Archivo -> Configuración de cuenta -> Configuración de cuenta -> haga doble clic en su cuenta -> texto en el cuadro "Servidor"

library(sendmailR) #set working directory setwd("C:/workingdirectorypath") #####send plain email from <- "[email protected]" to <- "[email protected]" subject <- "Email Subject" body <- "Email body." mailControl=list(smtpServer="serverinfo") sendmail(from=from,to=to,subject=subject,msg=body,control=mailControl) #####send same email with attachment #needs full path if not in working directory attachmentPath <- "subfolder/log.txt" #same as attachmentPath if using working directory attachmentName <- "log.txt" #key part for attachments, put the body and the mime_part in a list for msg attachmentObject <- mime_part(x=attachmentPath,name=attachmentName) bodyWithAttachment <- list(body,attachmentObject) sendmail(from=from,to=to,subject=subject,msg=bodyWithAttachment,control=mailControl)

Además, se pueden enviar varios archivos agregando otro mime_part a la lista de mensajes de la siguiente manera (también lo condensé):

attachmentObject <- mime_part(x="subfolder/log.txt",name="log.txt") attachmentObject2 <- mime_part(x="subfolder/log2.txt",name="log2.txt") bodyWithAttachment <- list(body,attachmentObject,attachmentObject2)