Кто-то знает почту (SMTP) библиотека доставки для Java?

Обычно цель InlineData - использовать ту же логику тестирования, но изолировать различия в ожидаемых входах и выходах.

[Theory]
[InlineData(1, 10.00m)]
[InlineData(2, 14.50m)]
public void Test1(int movieId, decimal expectedPrice)
{
    var result = db.movieTable.Single(p => p.Id == movieId);
    Assert.True(result.Price == expectedPrice);
}
10
задан Ferruccio 7 November 2008 в 16:56
поделиться

3 ответа

Это - полностью неправильный способ обработать это.

У любого подключенного к Интернету будет некоторый "законный" сервер SMTP доступным им для взятия представления электронной почты - ISP, офис, и т.д.

Вы ХОТИТЕ усилить, потому что они делают несколько вещей для Вас.

1) они берут Ваше сообщение и обязанность обработать то сообщение. После высаживания его это больше не проблема.

2) Любые почтовые технологии de-спама обрабатываются сервером. Еще лучше, когда/если те технологии изменяются (Доменные ключи кто-либо?), сервер обрабатывает его, не Ваш код.

3) Вы, как клиент той передающей почтовой системы, уже имеют любые учетные данные, необходимо говорить с тем сервером. Основные серверы SMTP заблокированы вниз через аутентификацию, диапазон IP, и т.д.

4) Вы не изобретаете велосипед. Усильте инфраструктуру, которую Вы имеете. Вы пишете приложение или почтовый сервер? Установка почтового сервера является каждой дневной задачей, которая обычно проста сделать. Всем тем случайным "немым" пользователям в Интернете удалось разбудить почтовый набор.

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

Не делать.

Отправка электронного письма намного более сложна, чем это кажется. Excel почтовых серверов в (или должен выделиться в), надежная доставка.

Настройте отдельный почтовый сервер, если Вам нужно к - который будет по существу тем же как реализацией той в Java (я сомневаюсь, что Вы найдете библиотеки для этой задачи - они были бы чрезвычайно полными почтовыми серверами), но намного более более простой.

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

Одно возможное решение: получите запись MX самостоятельно и используйте JavaMail API.

Можно получить запись MX использование dnsjava проекта:

Зависимость Maven2:

<dependency>
    <groupId>dnsjava</groupId>
    <artifactId>dnsjava</artifactId>
    <version>2.0.1</version>
</dependency>

Метод для MX записывает извлечение:

public static String getMXRecordsForEmailAddress(String eMailAddress) {
    String returnValue = null;

    try {
        String hostName = getHostNameFromEmailAddress(eMailAddress);
        Record[] records = new Lookup(hostName, Type.MX).run();
        if (records == null) { throw new RuntimeException("No MX records found for domain " + hostName + "."); }

        if (log.isTraceEnabled()) {
            // log found entries for debugging purposes
            for (int i = 0; i < records.length; i++) {
                MXRecord mx = (MXRecord) records[i];
                String targetString = mx.getTarget().toString();
                log.trace("MX-Record for '" + hostName + "':" + targetString);
            }
        }

        // return first entry (not the best solution)
        if (records.length > 0) {
            MXRecord mx = (MXRecord) records[0];
            returnValue = mx.getTarget().toString();
        }
    } catch (TextParseException e) {
        throw new RuntimeException(e);
    }

    if (log.isTraceEnabled()) {
        log.trace("Using: " + returnValue);
    }
    return returnValue;
}

private static String getHostNameFromEmailAddress(String mailAddress) throws TextParseException {
    String parts[] = mailAddress.split("@");
    if (parts.length != 2) throw new TextParseException("Cannot parse E-Mail-Address: '" + mailAddress + "'");
    return parts[1];
}

Отправка почты с помощью кода JavaMail:

public static void sendMail(String toAddress, String fromAddress, String subject, String body) throws AddressException, MessagingException {
    String smtpServer = getMXRecordsForEmailAddress(toAddress);

    // create session
    Properties props = new Properties();
    props.put("mail.smtp.host", smtpServer);
    Session session = Session.getDefaultInstance(props);

    // create message
    Message msg = new MimeMessage(session);
    msg.setFrom(new InternetAddress(fromAddress));
    msg.setRecipient(Message.RecipientType.TO, new InternetAddress(toAddress));
    msg.setSubject(subject);
    msg.setText(body);

    // send message
    Transport.send(msg);
}
15
ответ дан 3 December 2019 в 20:07
поделиться
Другие вопросы по тегам:

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