Stirng [] не может быть преобразован в строку - PullRequest
0 голосов
/ 03 июля 2018

Я не могу исправить свою ошибку. Я хочу программу, которая отправляет электронные письма нескольким людям. Это мой код пока ...

public static void sendEmailWithAttachments(String host, String port,
            final String userName, final String password, String[] toAddress,
            String subject, String message, String[] attachFiles)
            throws AddressException, MessagingException {
        // sets SMTP server properties
        Properties properties = new Properties();
        properties.put("mail.smtp.host", host);
        properties.put("mail.smtp.port", port);
        properties.put("mail.smtp.auth", "true");
        properties.put("mail.smtp.starttls.enable", "true");
        properties.put("mail.user", userName);
        properties.put("mail.password", password);

        // creates a new session with an authenticator
        Authenticator auth = new Authenticator() {
            public PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(userName, password);
            }
        };
        Session session = Session.getInstance(properties, auth);

        // creates a new e-mail message
        Message msg = new MimeMessage(session);

        msg.setFrom(new InternetAddress(userName));
        InternetAddress[] toAddresses = { new InternetAddress(toAddress) };
        msg.setRecipients(Message.RecipientType.TO, toAddresses);
        msg.setSubject(subject);
        msg.setSentDate(new Date());

toAddress в {new Internet Address(toAddress)} - это часть, где говорится, что String [] не может быть преобразована в String.

InternetAddress[] toAddresses = { new InternetAddress(toAddress) };

Заранее спасибо за помощь:)

Ответы [ 4 ]

0 голосов
/ 03 июля 2018

Просто переберите адрес, оберните каждую строку в интернет-адресе и поместите в адрес

InternetAddress[] toAddresses = new InternetAddress[toAddress.length];

for(int i = 0; i < toAddresses; i++) {
   toAddresses[i] = new InternetAddress(toAddress[i]);
}
0 голосов
/ 03 июля 2018

Конструктор InternetAddress принимает в качестве параметра строку, а не массив строк. Поэтому вы должны попробовать это ниже:

  InternetAddress[] toAddresses = { new InternetAddress(toAddress[0]) };
0 голосов
/ 03 июля 2018

Сообщение об ошибке в значительной степени говорит обо всем. Вы попытались передать toAddress, массив String, конструктору InternetAddress, и единственный конструктор с одним аргументом InternetAddress принимает String, а не String[].

Вы знаете, что вам нужно превратить ваш массив String в массив InternetAddress, и, очевидно, вы надеялись, что new InternetAddress может как-то это сделать. Но, к сожалению, это не совсем так. Вам придется конвертировать String по одному в цикле, например:

InternetAddress[] toAddresses = new InternetAddress[toAddress.length];
for (int i = 0; i < toAddress.length; ++i)
{
    toAddresses[i] = new InternetAddress(toAddress[i]);
}
0 голосов
/ 03 июля 2018

Попробуйте сначала создать массив интернет-адресов, а затем присвоить значение:

InternetAddress[] toAddresses = new InternetAddress[1];
toAddresses[0] = new InternetAddress(toAddress);
msg.setRecipients(Message.RecipientType.TO, toAddresses);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...