我一直在用mailR軟件包來從我的Gmail帳戶發送郵件,但到目前爲止我一直無法使它工作。其代碼如下(與隱私/安全「AAAA」取代電子郵件和密碼):R mailR包發送消息給STMP服務器(gmail)
library(mailR)
sender <- '[email protected]'
recipients <- c('[email protected]')
send.mail(from = sender,
to = recipients,
subject = 'My bot sent this',
body = 'Test Successful',
smtp = list(host.name = 'stmp.gmail.com', port= 587,
user.name = '[email protected]',
passwd = 'aaaa', tls= TRUE),
authenticate = TRUE,
send = TRUE)
從我的理解,這似乎是一個適當的設置爲這個包。此外,我已確保雙重登錄已關閉,並且已啓用「允許訪問不太安全的應用程序」。我也用tls和ssl(完成適當的端口)嘗試了這一點,這沒有什麼區別。
當我運行代碼,我得到了以下錯誤:
org.apache.commons.mail.EmailException: Sending the email to the following server failed : stmp.gmail.com:587
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(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at RJavaTools.invokeMethod(RJavaTools.java:386)
Caused by: com.sun.mail.util.MailConnectException: Couldn't connect to host, port: stmp.gmail.com, 587; timeout 60000;
nested exception is:
java.net.UnknownHostException: stmp.gmail.com
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2053)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:697)
at javax.mail.Service.connect(Service.java:386)
at javax.mail.Service.connect(Service.java:245)
at javax.mail.Service.connect(Service.java:194)
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.UnknownHostException: stmp.gmail.com
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:310)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:236)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2019)
... 13 more
NULL
Error: EmailException (Java): Sending the email to the following server failed : stmp.gmail.com:587
爲了記錄在案,這裏是回溯輸出,以及:
> traceback()
10: stop(list(message = "org.apache.commons.mail.EmailException: Sending the email to the following server failed : stmp.gmail.com:587",
call = .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod",
cl, .jcast(if (inherits(o, "jobjRef") || inherits(o,
"jarrayRef")) o else cl, "java/lang/Object"), .jnew("java/lang/String",
method), j_p, j_pc, use.true.class = TRUE, evalString = simplify,
evalArray = FALSE), jobj = <S4 object of class "jobjRef">))
9: .Call(RJavaCheckExceptions, silent)
8: .jcheck(silent = FALSE)
7: .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl,
.jcast(if (inherits(o, "jobjRef") || inherits(o, "jarrayRef")) o else cl,
"java/lang/Object"), .jnew("java/lang/String", method),
j_p, j_pc, use.true.class = TRUE, evalString = simplify,
evalArray = FALSE)
6: .jrcall(x, name, ...)
5: email$send() at MessageBot.R#15
4: eval(expr, envir, enclos)
3: eval(ei, envir)
2: withVisible(eval(ei, envir))
1: source("MessageBot.R")
任何想法是怎麼回事?
我會給一個鏡頭,但我對如何使這項工作在mailR答案仍然打開! –