Java构造函数未定义

时间:2017-01-24 19:04:38

标签: java javamail

尝试通过我的测试发送电子邮件,它将此课程作为主要课程。

public class SendMail{
public SendMail(String fromMail,String tomail, Exception e )
{
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
Session session = Session.getDefaultInstance(props,
        new javax.mail.Authenticator() {
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication("abc123@gmail.com","testpw");
    }
});
try {
    Message message = new MimeMessage(session);
    message.setFrom(new InternetAddress(fromMail));
    message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(tomail));
    message.setSubject("xxxxx");
    message.setText("xxxxx"+ ExceptionUtils.getStackTrace(e) );
    Transport.send(message);
    System.out.println("Done");
}
    catch (MessagingException ex) {
    throw new RuntimeException(ex);
}
}
public SendMail(String string, String line) {

所以我想在我的其他课程中调用它,以便能够从txt文件中提取电子邮件列表,以便它将通过电子邮件发送列表中的所有内容。该代码是:

String fileName = "/xxx/xxx/xxx/text.txt";

    try (BufferedReader br = new BufferedReader(new FileReader(fileName))) {
    String line;
while ((line = br.readLine()) !=null) {
    new SendMail("abcd@gmail.com", line);
}   

  }
catch (IOException e) {
    e.printStackTrace();
}

问题在于它告诉我构造函数SendMail(String,String)是未定义的。

我的原始代码有效,但这只允许我发送硬编码的电子邮件。

try{
}
catch(Exception e)
{
e.printStackTrace();
new SendMail("senderemail","reciveremail",e); } 
}

为什么不接受我的构造函数?

编辑:consturctor并没有错。我曾是!我找到了它不能工作并解决我的问题的原因。这是我现在使用的代码。

String fileName = "/Users/cdolan/Desktop/liness.txt";
String Email = "";

try(BufferedReader br = new BufferedReader(new FileReader(fileName)))      {

     while ((Email = br.readLine()) !=null)

     {

<Test code here goes here>

 }
}

catch(Exception e)
{
    e.printStackTrace();
    new SendMail("email123@gmail.com",Email,e); }
}

2 个答案:

答案 0 :(得分:2)

问题是您只定义方法SendMail(String fromMail,String tomail, Exception e),因此您无法调用未定义的方法。

您需要定义并实施方法SendMail(String fromMail,String tomail,),以便您可以调用它!

另一个问题应该是:为什么需要将异常作为输入参数传递?

答案 1 :(得分:0)

您指定的构造函数将Exception作为参数(出于什么原因?)。创建新对象时,缺少此异常参数。