2017-08-30 3 views
0

私はGmailのアカウントから電子メールを送信するためにmailRパッケージを使いこなしていましたが、これまでは動作させることができませんでした。R mailRパッケージはSTMP Server(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) 

私の理解から、これは、このパッケージのために設定された正しいように見える:(プライバシー/セキュリティのための「AAAA」で置き換えたメールとパスワードで)次のようなコードです。さらに、二重サインインがオフになっており、「安全性の低いアプリケーションへのアクセスが許可されています」が有効になっています。私はまた、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") 

間違って起こっているすべてのアイデア?

答えて

0

mailrパッケージを使用してトラブルシューティングのソリューションを依頼したが、別のパッケージを開こうとしている場合はgmailrを使用してください。

install.packages('gmailr') 
library(gmailr) 
setwd() #set to desired working directory 
gmail_auth() 

mail <- mime(
    To = "[email protected]", 
    From = "[email protected]", 
    Subject = "My bot sent this", 
    body = "Test successful") 
send_message(mail) 

あなたがgmail_auth機能を使用すると、あなたのGmailアカウントに接続したい場合は、それが対話的に要求されます。公開アプリケーション経由で接続しているgmailRパッケージを使用してください。

端末に「yes」と入力し、ブラウザで「accept」をクリックすると、現在の作業ディレクトリに.httr-authトークン(暗号化されたユーザ名とパスワード)が格納されます(最初に作業ディレクトリを設定する理由)。端末にlist.files(all = T)を実行すると、ファイルが表示されます。これにより、a。ユーザー名に物理コードのパスワードを格納し、b)対話的に接続を「再承諾」せずに、コードを再実行することができます。

+0

私は与えるだろうそのショット、私はmailRでこの作業を行う方法についての答えをまだ開いているのに! –

0

あなたは間違ったホスト名を挿入します。host.name = 'stmp.gmail.com' プロトコルSMTPがあるが、そうhost.name = 'smtp.gmail.com'

関連する問題