2014-11-09 18 views
0

我有mailR(R語言包發送電子郵件)嘗試從我的Gmail帳戶發送一些電子郵件。 它完美地從Windows工作,但從Linux我得到下面的錯誤。 在下面的例子中,我已經取代了電子郵件,用戶名和密碼。mailR連接拒絕從Linux但不是從Windows

代碼:

library(mailR) 
emails <- c("[email protected]") 

send.emails <- function() { 
    for(x in emails){ 
    send.mail(from = from1, 
    to = x, 
    subject = subject1, 
    body = body1, 
    smtp = list(host.name = "smtp.gmail.com", port = 465, user.name = username, 
    passwd = password, ssl = TRUE), 
    authenticate = TRUE, 
    send = TRUE) 
    } 
} 

send.emails() 

錯誤:

> send.emails() 
org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.gmail.com:465 
    at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1410) 
    at org.apache.commons.mail.Email.send(Email.java:1437) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.NULL 
java:606) 
    at RJavaTools.invokeMethod(RJavaTools.java:386) 
Caused by: com.sun.mail.util.MailConnectException: Couldn't connect to host, port: smtp.gmail.com, 465; timeout 60000; 
    nested exception is: 
    java.net.ConnectException: Connection refused 
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1984) 
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:656) 
    at javax.mail.Service.connect(Service.java:367) 
    at javax.mail.Service.connect(Service.java:226) 
    at javax.mail.Service.connect(Service.java:175) 
    at javax.mail.Transport.send0(Transport.java:253) 
    at javax.mail.Transport.send(Transport.java:124) 
    at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1400) 
    ... 6 more 
Caused by: java.net.ConnectException: Connection refused 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) 
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 
    at java.net.Socket.connect(Socket.java:579) 
    at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:618) 
    at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:299) 
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:208) 
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1950) 
    ... 13 more 
Show Traceback 

Rerun with Debug 
Error: EmailException (Java): Sending the email to the following server failed : smtp.gmail.com:465 

同樣,我沒有得到任何錯誤都在Windows和電子郵件經歷,當我在linux上運行相同的腳本,我得到的所有那些錯誤。拒絕連接...

如果我可以從我的Linux機器上運行這個腳本,那會很棒。謝謝!

+0

錯誤是,它無法連接到端口465上的'smtp.gmail.com'。您是否驗證過Linux防火牆未阻止流量?您是否測試了是否可以從終端提示符處ping「smtp.gmail.com」,並通過'openssl s_client -connect smtp.gmail.com:465 -crlf'驗證端口連接性?這實際上不是R或apache問題。 – hrbrmstr 2014-11-09 11:31:30

+0

謝謝!我將編輯該問題。我只是習慣了R之間的平臺之間的可移植性問題,我沒有意識到同儕監護人可能會阻止smtp服務器,特別是因爲它不明顯地阻止任何其他谷歌服務器。 – variable 2014-11-09 16:21:45

回答

0

好的我有一個答案。令人驚訝的是,這不是一個R在Windows上工作的問題,而不是在Linux上(如download.file --internet2或許多其他示例)。

Peerguardian在Linux系統上運行,並以某種方式smtp.gmail.com黑名單上。

我列入了smtp.gmail.com白名單,現在一切正常!

我能夠通過IP或白名單端口465白名單,或者工作。