Получение Недопустимого Адреса с javax.mail, когда адреса прекрасны

Вы можете почти получить то, что вы хотите, используя strsplit, разделив y на x

df1 <- cbind(df[1], do.call("rbind", strsplit(df$y, df$x)))
df1

#    x       1        2
#1  1a     abc       39d
#2  2b     abc       32i
#3  3c   ad ab    32a 32
#4  9d  ab acb        2d
#5 N/A abc 329d abc 329d

Для случаев «N / A», поскольку он всегда будет состоять из двух частей, мы можем разделить его на пробел и заменить их в определенных индексах.

inds <- df$x == "N/A"
df1[inds, 2:3] <- do.call("rbind", strsplit(df$y[inds], "\\s+"))

df1
#    x    1    2
#1  1a  abc 329d
#2  2b 329d  abc
#3  3c  abc 329d
#4  9d 329d  abc
#5 N/A  abc 329d
5
задан Steven M. Cherry 27 October 2008 в 16:16
поделиться

4 ответа

- Обновление: проблема с аутентификацией.

Хорошо, вот то, что я обнаружил, продолжался. При получении электронного письма код выше правильно настраивает аутентификацию и Authenticator.getPasswordAuthentication (), обратный вызов на самом деле вызывается.

Не, итак, при посылании электронного письма. Необходимо сделать немного больше. Добавьте это:

// Setup mail server
props.put("mail.smtp.host", m_sending_host);
props.put("mail.smtp.auth", "true");

который вынудит javax.mail API сделать аутентификацию входа в систему. И затем используйте фактический Транспортный экземпляр вместо статического .send () метод:

Transport t = session.getTransport(m_sending_protocol);
t.connect(m_sending_user, m_sending_pass);

...

    // Send message
    try {
        t.sendMessage(message, message.getAllRecipients());
    } catch (Exception e){

Не вызывая аутентификацию, почтовый сервер рассматривал меня как несанкционированное реле и просто завершил работу меня. Различие между адресами, которые "работали" и адреса, которые не сделали, было то, что те, которые "работали", были все локальны для почтового сервера. Поэтому это просто приняло их. Но для любых нелокальных "релейных" адресов, это отклонило бы сообщение, потому что моя информация аутентификации не была представлена javax.mail API, когда я думал, что это будет иметь.

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

6
ответ дан 14 December 2019 в 01:20
поделиться

Я изменил бы вызов на InternetAddress, чтобы использовать "строгую" интерпретацию и видеть, получаете ли Вы дальнейшие ошибки на адресах, Вы испытываете затруднения из-за.

message.addRecipient(Message.RecipientType.TO, 
        new InternetAddress(vcea.get(i).emailaddr, true ));
//                                                 ^^^^ turns on strict interpretation

Javadoc для конструктора InternetAddress

Если это перестанет работать, то это бросит AddressException которому назвали метод getPos() который возвращает положение отказа (Javadoc)

2
ответ дан 14 December 2019 в 01:20
поделиться

Это кажется мне как проблема, которая произошла на моей работе. Если код, который Вы показываете, параллелен, то использование непосредственно System.getProperties мог быть проблемой, потому что значение хоста, Вы ставите их, может быть перезаписано следующим запросом, все еще сохраняя пользователя и пароль от перезаписанного хоста.

В нашем случае мы решили то использование клона System.getProperties () хеш-таблица.

Надежда, которая помогает (эту проблему было действительно трудно отследить).

0
ответ дан 14 December 2019 в 01:20
поделиться

Попробуйте это:

String to="stackoverflow@so.com";
String cc="one@mail.com,two@mail.com"; //The separator ',' works good

message.setRecipients(Message.RecipientType.TO,new InternetAddress[] { 
new InternetAddress(to) }); // This is only one mail

InternetAddress[] addr = parseAddressList(cc); //Here add all the rest of the mails
message.setRecipients(Message.RecipientType.CC,addr);

Извините за мой английский язык. Это не хорошо.

0
ответ дан 14 December 2019 в 01:20
поделиться
Другие вопросы по тегам:

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