как отправить электронное письмо от R по определенному условию? [Дубликат]

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
45
задан isomorphismes 12 May 2015 в 06:25
поделиться

5 ответов

Я просто попробовал это, и это сработало для меня.

Мое единственное отличие заключалось в том, что я использовал & lt;> для from и для:

from = "<email1@dal.ca>"
to = "<email2@gmail.com>"

и моей почты управление было другим, я использовал

control=list(smtpServer="ASPMX.L.GOOGLE.COM"))
16
ответ дан Sarah 19 August 2018 в 14:29
поделиться
  • 1
    Уважаемый @Sarah, знаете ли вы, что ваше решение работает над Windows и Outlook ??? – Duck 1 May 2014 в 21:59
  • 2
    Я использую Windows (8.1), но я не использую Outlook, поэтому я не уверен в этом. – Sarah 2 May 2014 в 02:13
  • 3
    Спасибо @Sarah, может быть, вы знаете, как получить smtpServer в Windows – Duck 2 May 2014 в 14:49
  • 4
    @Duck Что это значит, чтобы R мог отправлять почту в Outlook? – isomorphismes 12 May 2015 в 06:28
  • 5
    @Duck Почта может быть отправлена ​​через R xor Outlook; эти опции являются взаимоисключающими. – isomorphismes 13 May 2015 в 15:09

Если вам нужно использовать SMTP-сервер с аутентификацией, вы можете использовать пакет mailR.

Например, используя smtp-сервер gmail:

library(mailR)
sender <- "SENDER@gmail.com"
recipients <- c("RECIPIENT@gmail.com")
send.mail(from = sender,
          to = recipients,
          subject = "Subject of the email",
          body = "Body of the email",
          smtp = list(host.name = "smtp.gmail.com", port = 465, 
                      user.name = "YOURUSERNAME@gmail.com",            
                      passwd = "YOURPASSWORD", ssl = TRUE),
          authenticate = TRUE,
          send = TRUE)
34
ответ дан alko989 19 August 2018 в 14:29
поделиться
  • 1
    Я получаю такую ​​ошибку: Error in ls(envir = envir, all.names = private) : invalid 'envir' argument – Marcin Kosiński 15 March 2015 в 17:46
  • 2
    Я не могу воспроизвести вашу ошибку. Код работает для меня, как есть. Подумайте о новом вопросе, в котором описывается, как воспроизвести эту ошибку, и, возможно, кто-то сможет вам помочь. Возможно, это помогает. – alko989 16 March 2015 в 13:01
  • 3
    @MarcinKosinski Я тоже получил эту ошибку, но затем перезапустил R, и это сработало для меня. – isomorphismes 12 May 2015 в 06:31
  • 4
    Работала настолько хорошо для меня, используя корпоративную учетную запись Google Apps. Tks. + 1 – Murta 27 November 2015 в 17:14

Извините, что столкнулся с этой нитью. Если вы хотите отправить электронное письмо из R с помощью Microsoft Outlook, ниже приведен путь к использованию пакета RDCOMClient. Я сам потратил много времени, пытаясь найти ответ на это. Я подумал, что было бы полезно иметь это решение тоже в этом потоке для пользователей.

Полный кредит для @agstudy, который предоставил исходное решение по этой ссылке - Отправка электронной почты в R через outlook

library (RDCOMClient)

OutApp <- COMCreate("Outlook.Application")
outMail = OutApp$CreateItem(0)
outMail[["To"]] = "test@test.com"
outMail[["subject"]] = "Test Subject"
outMail[["body"]] = "Body of email"               
outMail$Send()
5
ответ дан Code_Sipra 19 August 2018 в 14:29
поделиться
library(mailR)
sender <- "abc@gmail.com"

recipients <- c("bcd@gmail.com","xyz@gmail.com")

send.mail(from = sender, to = recipients, subject="Cash_Collected_Bank_transfer",Sys.Date(),"{}", body = Summary1, encoding = "utf-8", 
    smtp = list(host.name = "smtp.gmail.com", port = 465, 
    user.name="abc@gmail.com", passwd="abc@1234", ssl=TRUE), authenticate = TRUE, send = TRUE ,attach.files = c(path2),html = TRUE , inline = TRUE )
2
ответ дан vincentmajor 19 August 2018 в 14:29
поделиться
  • 1
    Хотя ваш ответ может быть правильным, желательно добавить пояснительный текст, чтобы помочь читателям понять ваш код. – vincentmajor 11 April 2017 в 16:40
0
ответ дан Habib Karbasian 31 October 2018 в 01:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: