Я теряю периоды в электронном письме, посланном с помощью Почты Java

Возврат значения - способ общения между людьми

public void method1() {
    int value = 5 + method2(5);
    System.out.println(value);
}

public int method2(int param) {
    return param + 5;
}

. Это будет печатать 15 (5 отправляется на method2, что добавляет 5 к нему и возвращает результат в method1, который добавляет к нему 5 и печатает результат).

Java возвращает копии значений - в этом случае он копирует значение 10 и возвращает его в method1. Если method2 возвращают Object, он возвращает копию ссылки объекта. Различные языки имеют разную семантику для возврата методов, поэтому будьте осторожны при переключении между языками. Java также копирует значения параметров, переданных методам - ​​в этом случае method1 копирует значение 5 и передает его на method2.

public void method1() {
    int value = 5;
    method2(value);
}

public void method2(int param) {
    param = param + 5;
}

На value в method1 не влияет method2 (value по-прежнему равен 5 после выполнения method2), поскольку в качестве параметра была отправлена ​​только копия value.

7
задан Ewan Makepeace 9 February 2009 в 15:31
поделиться

7 ответов

С точки зрения SMTP можно запустить строку с периода, но необходимо отправить два периода вместо этого. Если клиент SMTP, который Вы используете, не делает этого, можно встретиться с проблемой, которую Вы описываете.

Могло бы стоить судить сниффера IP для наблюдения, где проблема действительно. Там вероятны по крайней мере две отдельных транзакции SMTP, вовлеченные в отправку того электронного письма.

5
ответ дан 6 December 2019 в 23:16
поделиться

Удостоверьтесь, что все Ваше содержание является товарищеской встречей RFC2045 на основании заключенного в кавычки - печатаемый. Используйте класс MimeUtility в методе как это.


    private String mimeEncode (String input)
    {
    ByteArrayOutputStream bOut = new ByteArrayOutputStream();
    OutputStream out;
    try
    {
        out = MimeUtility.encode( bOut, "quoted-printable" );
        out.write( input.getBytes( ) );
        out.flush( );
        out.close( );
        bOut.close( );
    } catch (MessagingException e)
    {
        log.error( "Encoding error occured:",e );
        return input;
    } catch (IOException e)
    {
        log.error( "Encoding error occured:",e );
        return input;
    }

    return bOut.toString( );
    }


1
ответ дан 6 December 2019 в 23:16
поделиться

Я имею подобную проблему, но использую ASP.NET 2.0. На журналы приложения ссылкой в электронном письме является корректный 'http://www.3rdmilclassrooms.com/' однако затем, электронное письмо получено клиентом, ссылка пропускает период 'http://www3rdmilclassrooms.com'

Я сделал все, что я могу, чтобы доказать, что электронное письмо посылается с корректной ссылкой. Мое подозрение - то, что это - почтовый клиент или программное обеспечение спам-фильтра, которое изменяет гиперссылку. Действительно ли возможно, что почтовое программное обеспечение фильтрации спама сделало бы это?

1
ответ дан 6 December 2019 в 23:16
поделиться

Вы устанавливаете тип Пантомимы на "текст/HTML"? У Вас должно быть что-то вроде этого:

BodyPart bp = new MimeBodyPart();
bp.setContent(message,"text/html");
0
ответ дан 6 December 2019 в 23:16
поделиться

Я не уверен, но выглядит немного, как будто Ваша электронная почта становится закодированной. 0x3D является шестнадцатеричным символом 61, который является, равняется символу (' = ').

Какой classes/libary Вы используете для отправки электронных писем? Проверьте настройки относительно кодирования.

0
ответ дан 6 December 2019 в 23:16
поделиться

У меня была подобная проблема при отправке электронного письма программно учетной записи Yahoo. Они получили бы одну очень длинную строку текста и добавили бы их собственные разрывы строки в электронном письме HTML, думая, что это не вызовет проблему, но конечно это было бы.

прием не должен был пытаться отправить такую длинную линию. Поскольку электронные письма HTML не заботятся о разрывах строки, необходимо добавить собственное каждые несколько блоков, или незадолго до незаконной строки, чтобы гарантировать, что URL не становится разделенным в период как этот.

Я должен был изменить свой VB ASP от

var html;
html = "Blah Blah Blah Blah ";
html = html & " More Text Here....";

кому:

var html;
html = "Blah Blah Blah Blah " & VbCrLf;
html = html & " More Text Here....";

И это - все, что потребовалось для чистки вывода, как обрабатывался на их конце.

0
ответ дан 6 December 2019 в 23:16
поделиться

Как Greg указал, проблема с Вашим клиентом SMTP, который не делает наполнения точки (удвоение ведущей точки).

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

0
ответ дан 6 December 2019 в 23:16
поделиться
Другие вопросы по тегам:

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