r email smtp gmail sendmailr

Utilice sendmailR con Windows



email smtp (4)

Cada vez que sendmailR no se autentica, uno recibe el mensaje no tan útil que

Error in if (code == lcode) { : argument is of length zero

Esto puede ser por muchas razones, incluyendo razones del lado del servidor. En mi caso, necesitaba poner mi IP en la lista blanca del servidor. @ alko989 declara en el asunto usando sendemailR que la authentication ... is not supported by sendmailR , y a partir de la publicación 2015-Feb-20 de sendmailR https://cran.r-project.org/web/packages/sendmailR/sendmailR.pdf , los únicos parámetros de control son smtpServer , smtpPort y verbose , así que nada para el usuario, contraseña, ssl, tls, etc. Los servidores de correo de hoy en día tienden a ser mucho más seguros que los servidores de correo del pasado, por lo que es una seria limitación de sendmailR .

Estoy intentando ejecutar sendmailR en Windows con el siguiente código:

## Not run: from <- "<[email protected]>" # sprintf("<sendmailR@//%s>", Sys.info()[4]) to <- "<[email protected]>" subject <- "Hello from R" body <- list("It works!", mime_part(iris)) sendmail(from, to, subject, body, control=list(smtpServer="ASPMX.L.GOOGLE.COM."))

Y recibe el siguiente error:

Error in socketConnection(host = server, port = port, blocking = TRUE) : cannot open the connection In addition: Warning message: In socketConnection(host = server, port = port, blocking = TRUE) : smtp.gmail.com [email protected]:statisfun:25 cannot be opened

La respuesta aquí ofrece una solución para Linux, y agradecería los consejos para los usuarios de Windows.

Gracias.


Como alternativa al uso de sendmailR, puede intentar esto:

Analice juntos un VB-Script (consulte, por ejemplo, http://www.paulsadowski.com/wsh/cdo.htm ) y luego llámelo 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") }

... y utilízalo así:

SendMail( from="[email protected]", to="[email protected]", text="Hallo", subject="readThis", smtp="smtp.andI.com", user="[email protected]", pw="123456" )



Solía ​​enviar correos electrónicos a través de R usando estas líneas.

Supongamos que su correo electrónico es [email protected] utilizando Windows OS (mi sistema operativo)

library(sendmailR) # 1 case from <- sprintf("<sendmailR@%s>", Sys.info()[4]) to <- "<[email protected]>" subject <- "Hello from R" msg <- "my first email" sendmail(from, to, subject, msg,control=list(smtpServer="ASPMX.L.GOOGLE.COM")) # 2 case from <- sprintf("<[email protected]>", Sys.info()[4]) to <- "<[email protected]>" subject <- "Hello from R" msg <- "my first email" sendmail(from, to, subject, msg,control=list(smtpServer="ASPMX.L.GOOGLE.COM"))