2016-07-20 18 views
-3

私はデータベースから電子メールアドレスを取得し、それらに電子メールを送信する必要があるプロジェクトに取り組んでいます。私はarraylistでそれらの電子メールアドレスを取得しました。このように:データベースから取得したarraylistにメールを送信

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import java.util.ArrayList; 
import java.util.List; 

import javaapplication1.Person; 

public class ABC { 
    public static void main(String[] args) throws SQLException { 
     ArrayList<Person> personlist = new ArrayList<Person>(); 
     //List<Person> personlist = new List<Person>(); 
     try { 


      Class.forName("oracle.jdbc.driver.OracleDriver"); 
      Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","gsjsc","gsjschanna"); 
      Statement st=con.createStatement(); 

      ResultSet srs = st.executeQuery("SELECT * FROM person2"); 
      while (srs.next()) { 
       Person person = new Person(); 
       person.setName(srs.getString("name")); 
       person.setJobtitle(srs.getString("jobtitle")); 
       // person.setFrequentflyer(srs.getInt("frequentflyer")); 
       personlist.add(person); 
      } 

      System.out.println(personlist.size()); 
      for (int a=0;a<personlist.size();a++) 
      { 
      System.out.println(personlist.get(a).getName()); 
      System.out.println(personlist.get(a).getJobtitle()); 
      // System.out.println(personlist.get(2).getName()); 
      // System.out.println(personlist.get(3).getName()); 
      } 
      //System.out.println(personlist.get(4)); 

     //System.out.println(namelist.); 
     } catch (Exception e) { 
      System.err.println("Got an exception! "); 
      System.err.println(e.getMessage()); 
     } 
    } 
} 

Person.java:すべてのセッターとゲッターが含まれています。

EDIT

今、私は対象者のArrayListの中で取得し、それらの電子メールアドレスに電子メールを送信する必要があります。 私はこのようなArrayListの中に複数の受信者に電子メールを送信するためのコードを持っている:

package javaapplication1; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.Properties; 
import java.util.Scanner; 
import javax.mail.Address; 
import javax.mail.Authenticator; 
import javax.mail.Message; 
import javax.mail.MessagingException; 
import javax.mail.PasswordAuthentication; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.AddressException; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 

public class SendEmailToGroupDemo { 

public static void main(String[] args) { 

    // Create a SendEmail object and call start 
    // method to send a mail in Java. 
    SendEmailToGroupDemo sendEmailToGroup = new SendEmailToGroupDemo(); 
    sendEmailToGroup.start(); 

} 

private void start() { 

    // For establishment of email client with 
    // Google's gmail use below properties. 
    // For TLS Connection use below properties 
    // Create a Properties object 
    Properties props = new Properties(); 

    // these properties are required 
    // providing smtp auth property to true 
    props.put("mail.smtp.auth", "true"); 
    // providing tls enability 
    props.put("mail.smtp.starttls.enable", "true"); 
    // providing the smtp host i.e gmail.com 
    props.put("mail.smtp.host", "smtp.gmail.com"); 
    // providing smtp port as 587 
    props.put("mail.smtp.port", "587"); 

    // For SSL Connection use below 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");*/ 

    // Create Scanner object to take necessary 
    // values from the user. 
    Scanner scanner = new Scanner(System.in); 

    System.out.println("Please provide your Username for Authentication ..."); 
    final String Username = scanner.next(); 

    System.out.println("Please provide your Password for Authentication ..."); 
    final String Password = scanner.next(); 

    System.out.println("Please provide Email Address from which you want to send Email ..."); 
    final String fromEmailAddress = scanner.next(); 

    System.out.println("Please provide Email Addresses to which you want to send Email ..."); 
    System.out.println("If you are done type : Done or done"); 

    // ArrayLists to store email addresses entered by user 
    ArrayList< String> emails = (ArrayList<String>) getEmails(); 

    System.out.println("Please provide Subject for your Email ... "); 
    final String subject = scanner.next(); 

    System.out.println("Please provide Text Message for your Email ... "); 
    final String textMessage = scanner.next(); 

    // Create a Session object based on the properties and 
    // Authenticator object 
    Session session = Session.getDefaultInstance(props, 
    new LoginAuthenticator(Username,Password)); 

    try { 

    // Create a Message object using the session created above 
    Message message = new MimeMessage(session); 

    // setting email address to Message from where message is being sent 
    message.setFrom(new InternetAddress(fromEmailAddress)); 

    // setting the email addressess to which user wants to send message 
    message.setRecipients(Message.RecipientType.BCC, getEmailsList(emails)); 

    // setting the subject for the email 
    message.setSubject(subject); 

    // setting the text message which user wants to send to recipients 
    message.setText(textMessage); 

    // Using the Transport class send() method to send message 
    Transport.send(message); 

    System.out.println("\nYour Message delivered successfully ...."); 

    } catch (MessagingException e) { 

    throw new RuntimeException(e); 

    } 
} 

// This method takes a list of email addresses and 
// returns back an array of Address by looping the 
// list one by one and storing it into Address[] 
private Address[] getEmailsList(ArrayList<String> emails) { 

    Address[] emaiAddresses = new Address[emails.size()]; 

    for (int i =0;i < emails.size();i++) { 
    try { 
    emaiAddresses[i] = new InternetAddress(emails.get(i)); 
    } 
    catch (AddressException e) { 

    e.printStackTrace(); 
    } 
    } 
    return emaiAddresses; 
} 

// This method prompts user for email group to which he 
// wants to send message 
public List<String> getEmails() { 
    ArrayList<String> emails = new ArrayList<String>(); 

    int counter = 1; 
    String address = ""; 
    Scanner scanner = new Scanner(System.in); 

    // looping inifinitely times as long as user enters 
    // emails one by one 
    // the while loop breaks when user types done and 
    // press enter. 
    while(true) { 

    System.out.println("Enter E-Mail : " + counter); 
    address = scanner.next(); 

    if(address.equalsIgnoreCase("Done")){ 
    break; 
    } 
    else { 
    emails.add(address); 
    counter++; 
    } 
    } 

    return emails; 
} 
} 

// Creating a class for Username and Password authentication 
// provided by the user. 
class LoginAuthenticator extends Authenticator { 
PasswordAuthentication authentication = null; 

public LoginAuthenticator(String username, String password) { 
    authentication = new PasswordAuthentication(username,password); 
} 

@Override 
protected PasswordAuthentication getPasswordAuthentication() { 
    return authentication; 
} 
}  

この1つは全体の異なるコードです。しかし、人々のグループに電子メールを送信するために動作します。しかし問題は、電子メールアドレスを手動で入力する必要があることです。私はクラスABCから検索されたアドレスにメールを送信したいのですが。誰かが(両方のクラスのための)統合されたコードを与えることができます、それは素晴らしいでしょう。

+3

*注:締め切りは近くにあり、完全に動作するコードで答えてください* - 。あなたの質問とあなたのコードが一致していない – Idos

+1

あなたの質問と一致しません。 Personオブジェクトに電子メールが設定されている場所はどこですか?あなたの他のコードは、コンソールからの電子メールのリストを取得し、Personリスト取得コードとの接続はないようです。 –

+0

'完全な作業コードで回答してください、期限は近いです.' - 私はこの種のごみを通常編集しますが、あなたのケースでは誰もが見ることができるように残します。それの素顔の頬... [これを読む](http://meta.stackoverflow.com/q/326569/472495)。 – halfer

答えて

0

ListPersonArrayListStringに変換する必要があります。

public ArrayList<String> getEmailsFromPersons(List<Person> persons) { 
    ArrayList<String> emails = new ArrayList<String>(); 
    for(Person person : persons) { 
     String email = person.getEmail(); 
     if(email != null && !email.trim().isEmpty()) { 
      emails.add(email); 
     } 
    } 
    return emails; 
} 
0

私は、ArrayListの中で、これらの電子メールアドレスを取得しています。このように:

Personオブジェクトに電子メールが設定されていません。しかし、あなたの編集後に私が理解していることからあなたの質問に答えようとしています。コードの下には(私はチェックを行わずに、その場でそれを書いていてすべてのエラーを気にしないでください)あなたのニーズに合う必要があります。

public class ABC { 
public static void main(String[] args) throws SQLException { 
    ArrayList<Person> personlist = new ArrayList<Person>(); 
    // Creating a separate list of emails for Persons 
    List<String> personEmails = new ArrayList<String>(); 

    //List<Person> personlist = new List<Person>(); 
    try { 


     Class.forName("oracle.jdbc.driver.OracleDriver"); 
     Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","gsjsc","gsjschanna"); 
     Statement st=con.createStatement(); 

     ResultSet srs = st.executeQuery("SELECT * FROM person2"); 
     String email = ""; 
     while (srs.next()) { 
      Person person = new Person(); 
      person.setName(srs.getString("name")); 
      person.setJobtitle(srs.getString("jobtitle")); 
      // person.setFrequentflyer(srs.getInt("frequentflyer")); 
      // I am assuming you would be setting email in person like this 
      email = srs.getString("email"); 
      person.setEmail(email); 
      // Add the email simultaneously to the separate list 
      personEmails.add(email); 
      personlist.add(person); 
     } 

     System.out.println(personlist.size()); 
     for (int a=0;a<personlist.size();a++) 
     { 
     System.out.println(personlist.get(a).getName()); 
     System.out.println(personlist.get(a).getJobtitle()); 
     // System.out.println(personlist.get(2).getName()); 
     // System.out.println(personlist.get(3).getName()); 
     } 
     //System.out.println(personlist.get(4)); 

    //System.out.println(namelist.); 
    } catch (Exception e) { 
     System.err.println("Got an exception! "); 
     System.err.println(e.getMessage()); 
    } 


    // call the email sender method of yours with the newly created list 
    SendEmailToGroupDemo sendEmailToGroup = new SendEmailToGroupDemo(); 
    // Obviously, make that start() method public having parameter of type List<String> instead of calling getEmails() within it 
    sendEmailToGroup.start(personEmails); 
    // Very little remains to be done, I hope you can figure it out easily 
} 
} 
+0

ありがとうbhai。すべてあなたが言及しましたが、 'message.setRecipients(Message.RecipientType.BCC、getEmailsList(emails)); 'でエラーが発生しました。電子メールは解決できません。完全な作業コードを投稿することができれば大きな助けになるでしょう –

+0

更新されたコードを投稿してください。 –

関連する問題