2013-03-14 18 views
18

Tôi đang cố gắng để chạy sendmailR trên Windows với đoạn mã sau:Sử dụng sendmailR với Windows

## Not run: 
from <- "<[email protected]>" # sprintf("<[email protected]\\%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.")) 

Và nhận được lỗi sau:

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 

The answer here đưa ra một giải pháp cho Linux, và tôi sẽ biết ơn lời khuyên dành cho người dùng Windows.

Cảm ơn.

+5

Điều này không trả lời câu hỏi của bạn, nhưng thay vào đó bạn có thể sử dụng GitHub [gmailR] của tôi (https://github.com/trinker/gmailR) mà tôi biết làm việc với các cửa sổ và dành cho gmail. Đó là thứ tôi đóng gói như một gói để sử dụng cá nhân nhưng không phải là công việc của tôi. –

+2

Nice Tyler - cảm ơn bạn. :) p.s: Tôi vẫn muốn quan tâm đến việc tìm ra vấn đề sendmailR này ... –

Trả lời

5

Bạn có thể cung cấp cho các gói mailR mới một shot: http://cran.r-project.org/web/packages/mailR/index.html

Sau đây cuộc gọi sau đó sẽ hoạt động:

send.mail(from = "[email protected]", 
      to = "[email protected]", 
      subject = "Subject of the email", 
      body = "Body of the email", 
      smtp = list(host.name = "smtp.gmail.com", port = 465, user.name = "tal.galili", passwd = "PASSWORD", ssl = TRUE), 
      authenticate = TRUE, 
      send = TRUE) 
+0

Tôi vẫn gặp lỗi. Tôi đã nhận được lỗi tương tự như OP và bây giờ khi tôi đã cố gắng này tôi nhận được 'Kiểm tra tài liệu để bao gồm tất cả các tham số bắt buộc để kết nối SMTP establisg.' ... Có. Nó nói establisg không thành lập ... – NealC

4

Tôi đã từng gửi email qua R bằng các dòng này.

Giả email của bạn được [email protected] sử dụng hệ điều hành window (hệ thống hoạt động của tôi)

library(sendmailR) 

# 1 case 
from <- sprintf("<[email protected]%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")) 
+0

Hi Hianni. Trong cả hai trường hợp tôi nhận được: Lỗi trong wait_for (250): Lỗi SMTP: 5.7.1 [37.142.250.150] IP bạn đang sử dụng để gửi thư không được phép –

+1

Hey @TalGalili là lạ tôi đã thử nghiệm và tôi đã không làm như vậy t nhận được bất kỳ thông báo lỗi, xin lỗi. –

+1

o.k., cảm ơn Gianni. –

0

Là một thay thế cho việc sử dụng sendmailR bạn có thể thử này:

Phân tích cùng một VB-Script (xem ví dụ http://www.paulsadowski.com/wsh/cdo.htm) và sau đó gọi nó qua trình bao.

này có thể trông như thế này:

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") 
} 

... và sử dụng nó như thế này:

SendMail(
    from="[email protected]", 
    to="[email protected]", 
    text="Hallo", 
    subject="readThis", 
    smtp="smtp.andI.com", 
    user="[email protected]", 
    pw="123456" 
    ) 
Các vấn đề liên quan