2015-07-17 9 views
6

Próbuję wysyłać wiadomości e-mail z Java z bazy danych. Po uruchomieniu mojej głównej metody z jakiegoś powodu otrzymuję ten błąd:Java Wyślij e-mail Nielegalny średnik?

Exception in thread "main" javax.mail.internet.AddressException: Illegal semicolon, not in group in string ``[email protected];[email protected];[email protected];[email protected];[email protected]'' at position 23 
    at javax.mail.internet.InternetAddress.parse(InternetAddress.java:929) 
    at javax.mail.internet.InternetAddress.parse(InternetAddress.java:638) 
    at javax.mail.internet.InternetAddress.parse(InternetAddress.java:615) 
    at EmailSender.sendEmail(TestSendEmails.java:120) 
    at EmailSender.sendEmail(TestSendEmails.java:128) 
    at Main.main(Main.java:8) 

Zakładam, że moja lista tablic jest źle zbudowana. Tu jest mój kodu:

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

import javax.mail.Message; 
import javax.mail.MessagingException; 
import javax.mail.PasswordAuthentication; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 

public class TestSendEmails { 
    private String emailTo; 
    private String emailSubject; 
    private String emailBody; 
    private String emailAttachments; 

    public TestSendEmails(){ 

    } 

    public TestSendEmails(String emailTo, String emailSubject, String emailBody, String emailAttachments){ 
     super(); 
     this.emailTo = emailTo; 
     this.emailSubject = emailSubject; 
     this.emailBody = emailBody; 
     this.emailAttachments = emailAttachments; 
    } 

    public String getEmailTo(){ 
     return emailTo; 
    } 

    public void setEmailTo(String emailTo){ 
     this.emailTo = emailTo; 
    } 

    public String getEmailSubject(){ 
     return emailSubject; 
    } 

    public void setEmailSubject(String emailSubject){ 
     this.emailSubject = emailSubject; 
    } 

    public String getEmailBody(){ 
     return emailBody; 
    } 

    public void setEmailBody(String emailBody){ 
     this.emailBody = emailBody; 
    } 

    public String getEmailAttachments(){ 
     return emailAttachments; 
    } 

    public void setEmailAttachments(String emailAttachments){ 
     this.emailAttachments = emailAttachments; 
    } 
} 

class TestSendEmailD{ 
    private Connection con; 

    private static final String GET_EMAILS = "Select * From Emails"; 

    private void connect() throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException{ 
     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance(); 
     con = DriverManager.getConnection("jdbc:sqlserver://100.000.000.00\\SQLEXPRESS:3333;databaseName=dEmails;user=sys;password=admin"); 
    } 

    public List<TestSendEmails> getTestSendEmails() throws Exception{ 
     connect(); 
     PreparedStatement ps = con.prepareStatement(GET_EMAILS); 
     ResultSet rs = ps.executeQuery(); 
     List<TestSendEmails> result = new ArrayList<TestSendEmails>(); 
     while(rs.next()){ 
      result.add(new TestSendEmails(rs.getString("emailTo"), rs.getString("emailSubject"),rs.getString("emailBody"),rs.getString("emailAttachments"))); 
     } 
     disconnect(); 
     return result; 
    } 

    private void disconnect() throws SQLException{ 
     if(con != null){ 
      con.close(); 
     } 
    } 
} 

class EmailSender{ 
    private Session session; 

    private void init(){ 
     Properties props = new Properties(); 
     props.put("mail.smtp.auth", "true"); 
     props.put("mail.smtp.starttls.enable", "true"); 
     props.put("mail.smtp.host", "100.000.000.00"); 
     props.put("mail.smtp.port", "123"); 

     session = Session.getInstance(props, 
        new javax.mail.Authenticator() { 
        protected PasswordAuthentication getPasswordAuthentication() { 
         return new PasswordAuthentication("[email protected]", "1234"); 
        } 
        }); 
    } 

    public void sendEmail(TestSendEmails s) throws MessagingException{ 
     init(); 
     Message message = new MimeMessage(session); 
     message.setFrom(new InternetAddress("[email protected]")); 
     message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(s.getEmailTo())); 
     message.setSubject(s.getEmailSubject()); 
     message.setText(s.getEmailBody()); 
     Transport.send(message); 
    } 

    public void sendEmail(List<TestSendEmails> emails) throws MessagingException{ 
     for(TestSendEmails TestSendEmails:emails){ 
      sendEmail(TestSendEmails); 
     } 
    } 
} 

tutaj jest moja main.java:

public class Main { 
    public static void main(String[] args) throws Exception { 
     TestSendEmailD dao=new TestSendEmailD(); 
     List<TestSendEmails> list=dao.getTestSendEmails(); 
     EmailSender sender=new EmailSender(); 
     sender.sendEmail(list); 
    } 
} 

Czy ktoś może pomóc? Z góry dziękuję.

+0

'SendEmails' i' TestSendEmails' ? gdzie to jest – Satya

+0

Proszę podać ciąg 'emailTo' .. Domyślam się, że jest jakiś problem w tym ciągu –

+0

Edytuję moje pytanie, możesz teraz zobaczyć kod. –

Odpowiedz