Возврат значения - способ общения между людьми
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
.
С точки зрения SMTP можно запустить строку с периода, но необходимо отправить два периода вместо этого. Если клиент SMTP, который Вы используете, не делает этого, можно встретиться с проблемой, которую Вы описываете.
Могло бы стоить судить сниффера IP для наблюдения, где проблема действительно. Там вероятны по крайней мере две отдельных транзакции SMTP, вовлеченные в отправку того электронного письма.
Удостоверьтесь, что все Ваше содержание является товарищеской встречей 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( );
}
Я имею подобную проблему, но использую ASP.NET 2.0. На журналы приложения ссылкой в электронном письме является корректный 'http://www.3rdmilclassrooms.com/' однако затем, электронное письмо получено клиентом, ссылка пропускает период 'http://www3rdmilclassrooms.com'
Я сделал все, что я могу, чтобы доказать, что электронное письмо посылается с корректной ссылкой. Мое подозрение - то, что это - почтовый клиент или программное обеспечение спам-фильтра, которое изменяет гиперссылку. Действительно ли возможно, что почтовое программное обеспечение фильтрации спама сделало бы это?
Вы устанавливаете тип Пантомимы на "текст/HTML"? У Вас должно быть что-то вроде этого:
BodyPart bp = new MimeBodyPart();
bp.setContent(message,"text/html");
Я не уверен, но выглядит немного, как будто Ваша электронная почта становится закодированной. 0x3D является шестнадцатеричным символом 61, который является, равняется символу (' = ').
Какой classes/libary Вы используете для отправки электронных писем? Проверьте настройки относительно кодирования.
У меня была подобная проблема при отправке электронного письма программно учетной записи 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....";
И это - все, что потребовалось для чистки вывода, как обрабатывался на их конце.
Как Greg указал, проблема с Вашим клиентом SMTP, который не делает наполнения точки (удвоение ведущей точки).
Кажется, что электронная почта кодируется в заключенном в кавычки - печатаемый. При переключении на base64 (я принимаю, можно сделать это с текущей реализацией пантомимы Java), решит проблему.