Как зайти в Даркнет?!
25th January, 01:11
5
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
893
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
912
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4395
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Как открыть почтовую программу по умолчанию с темой и телом кросс-платформенным способом?
Как открыть почтовую программу по умолчанию с темой и телом кросс-платформенным способом?
К сожалению, это для клиентского приложения, написанного в Java, а не для веб-сайта.
Я бы хотел, чтобы это работало кросс-платформенным способом (что означает Windows и Mac, извините Linux). Я рад выполнить VBScript в Windows или AppleScript в OS X. Но я понятия не имею, что эти скрипты должны содержать. Я хотел бы выполнить программу пользователя по умолчанию, а не просто искать Outlook или что-то еще.
В OS X я попытался выполнить эту команду:
open mailto:?subject=MySubject&body=TheBody
URL экранирование необходимо для замены пробелов на %20 .
Обновлено на Windows, вы должны играть во все виды игр, чтобы заставить start работать правильно. Вот правильное заклинание Java:
class Win32 extends OS {
public void email(String subject, String body) throws Exception {
String cmd = "cmd.exe /c start \"\" \"" + formatMailto(subject, body) + "\"";
Runtime.getRuntime().exec(cmd);
}
}
В Java 1.6 у вас есть способ stardard открыть почтовую программу по умолчанию платформы: метод Desktop.mail(URI) .The URI можно использовать для установки всех полей почты (отправитель, получатели, тело, тема). Вы можете проверить полный пример интеграции рабочего стола в Java 1.6 при использовании Desktop API в Java SE 6
1. Добавить строку темы
Вы можете предварительно заполнить строку темы в email, добавив тему, предшествующую ' ?subject= ' после адреса email.
Так что связь теперь становится:
<a href="mailto:someone@yoursite.com?subject=Mail from Our Site">Email Us</a>
2. Отправить нескольким получателям
Почта может быть отправлена дополнительных получателей, либо как углерод копий (CC) или скрытую копию (СК).
Это делается аналогичным образом, помещая ' ?cc=someoneelse@theirsite.com ' после начального адреса.
Так что ссылка выглядит следующим образом:
<a href="mailto:someone@yoursite.com?cc=someoneelse@theirsite.com">Email Us</a>
КС можно легко заменить на КБК если вы хотите отправить скрытую копию.
Это может быть очень полезно, если у вас есть ссылки на страницы с различной тематикой. Вы можете иметь email на каждой странице, чтобы перейти к соответствующему лицу в компании, но с копией всех писем, отправленных на Центральный Адрес также.
Вы, конечно, можете указать более одного дополнительного получателя, просто отделите свой список получателей запятой.
<a href="mailto:someone@yoursite.com?cc=someoneelse@theirsite.com, another@thatsite.com, me@mysite.com">Email Us</a>
Исходил из получения большего от 'mailto' , который теперь 404s. I извлек содержимое из waybackmachine.
3. Комбинирование Кода
Вы можете объединить различные биты кода выше, добавив '&' между каждым из них.
Таким образом добавляя
me@mysite.com?subject=Hello&cc=you@yoursite.com&bcc=her@hersite.com
послал бы мне email с предметом 'Hello', тебе и ей.
4. Напишите Email
Вы также можете предварительно заполнить тело email с началом сообщения, или написать все сообщение, если хотите! Чтобы добавить что - то к телу email, это опять же так же просто, как и выше...?body= ' после адреса email. Однако форматирование этого email может быть немного сложным. Для создания пробелов между словами вам придется использовать код hex - например, " %20 "между каждым словом, а для создания новых строк потребуется добавить "%0D". Аналогично символы, такие как знаки $ , должны быть записаны в коде hex.
Если вы также хотите добавить строку темы и отправить копии нескольким получателям, это может сделать очень длинный и трудный для написания бит кода.
Он отправит сообщение трем людям, при этом тема и сообщение будут заполнены, все, что вам нужно сделать, это добавить свое имя.
Просто взгляните на код!
<a href="mailto:abbeyvet@outfront.net?CC=spooky@outfront.net
&BCC=thomasbrunt@outfront.net&Subject=Please%2C%20I%20insist
%21&Body=Hi%0DI%20would%20like%20to%20send%20you%20
%241000000%20to%20divide%20as%20you%20see%20fit%20among
%20yourselves%20and%20all%20the%20moderators.%0DPlease%
20let%20me%20know%20to%20whom%20I%20should%20send
%20the%20check.">this link</a>
Примечание: исходный код URL, где я нашел это, теперь 404, поэтому я схватил контент из waybackmachine и разместил его здесь, чтобы он не потерялся. Кроме того, OP заявил, что это не для веб-сайта, что и является этими примерами, но некоторые из этих методов все еще могут быть полезны.
Мне пришлось заново внедрять URLencode
потому что Java-е будут использовать + для пространства
и Мейл воспринял это буквально.
Мне пришлось заново внедрять URLencode потому что Java-е будут использовать + для пространства и Мейл воспринял это буквально.
Я не знаю, есть ли у Java какой-то встроенный метод для URL-кодирования строки, но эта ссылка http://www.permadi.com/tutorial/urlEncoding / показывает некоторые из наиболее распространенных символов для кодирования:
; %3B
? %3F
/ %2F
: %3A
# %23
& %24
= %3D
+ %2B
$ %26
, %2C
space %20 or +
% %25
< %3C
> %3E
~ %7E
% %25
Я не знаю, есть ли у Java какой-то встроенный метод для urlencoding строки, но эта ссылка http://www.permadi.com/tutorial/urlEncoding / показывает некоторые из наиболее распространенных символов для кодирования:
Я не знаю, есть ли у Java какой-то встроенный метод для urlencoding строки, но эта ссылка http://www.permadi.com/tutorial/urlEncoding / показывает некоторые из наиболее распространенных символов для кодирования:
Для процентного кодирования mailto URI hnames и hvalues я использую правила в кодировке http://shadow2531.com/opera/testcases/mailto/modern_mailto_uri_scheme.html#. В разделе реализации http://shadow2531.com/opera/testcases/mailto/modern_mailto_uri_scheme.html#есть пример Java, который может помочь.
В основном, я использую:
private String encodex(final String s) {
try {
return java.net.URLEncoder.encode(s, "utf-8").replaceAll("\\+", "%20").replaceAll("\\%0A", "%0D%0A");
} catch (Throwable x) {
return s;
}
}
Строка, которая передается в должна быть строка с \r\n, \r и бродячих уже нормализуется к \n.
Также обратите внимание, что просто возвращать исходную строку в исключении, как описано выше, безопасно только в том случае, если аргумент mailto URI, который вы передаете в командной строке, правильно экранирован и заключен в кавычки.
На windows это означает:
- Процитируйте этот аргумент.
- Экранируйте любые " внутренние кавычки с \.
- Избежать какой-либо \ перед собой " или конец строки \.
Кроме того, на windows, если вы имеете дело со строками UTF-16, как в Java, вы можете использовать ShellExecuteW для "open" mailto URI. Если вы этого не сделаете и вернете s в исключении (где некоторое значение hvalue не полностью закодировано в процентах), вы можете в конечном итоге сузить некоторые широкие символы и потерять информацию. Но не все почтовые клиенты принимают аргументы Юникода, поэтому в идеале вы хотите передать правильный аргумент percent-encoded-utf8 ascii с ShellExecute.
Как и 'start', ShellExecute с "open" должны открыть mailto URI в клиенте по умолчанию.
Не уверен насчет других OS-х.
Никогда не используйте Runtime.exec(String) на Mac OS X или любой другой операционной системе. Если вы сделаете это, вам придется выяснить, как правильно цитировать все строки аргументов и так далее; это очень болезненно и очень подвержено ошибкам.
Вместо этого используйте Runtime.exec(String[]) , который принимает массив уже разделенных аргументов. Это гораздо более подходит практически для всех применений.
Mailto-неплохой маршрут для путешествия. Но, как вы уже упомянули, вам нужно будет убедиться, что он правильно закодирован.
Основная проблема с использованием mailto - это разрыв линий. Используйте %0A для возврата каретки, %20 для пробелов.
Кроме того, имейте в виду, что mailto считается таким же, как и URL, и поэтому будет иметь те же ограничения по длине. Видеть http://support.microsoft.com/kb/208427, обратите внимание на максимальную длину URL из 2083 символов. Это подтверждается и для mailto в этой статье: http://support.microsoft.com/kb/279460/en-us . Кроме того, некоторые почтовые клиенты также могут иметь ограничение (я думаю, что более старые версии Outlook Express имели ограничение на что-то гораздо меньшее, например, 483 символа или что-то еще. Если вы ожидаете иметь более длинную строку, чем эта, то вам нужно будет посмотреть на альтернативные варианты.
BTW, вам не нужно прибегать к выбиванию скрипта, чтобы сделать это, пока вы можете shell выполнить команду из Java (я не знаю, сможете ли вы, так как я не делаю Java).
Вы можете использовать это...
main(string[] args){
String forUri = String.format("mailto:?subject=%s&body=%s", urlEncode(sub), urlEncode(mailBody));
Desktop.getDesktop().mail(new URI(forUri));
}
private static final String urlEncode(String str) {
try {
return URLEncoder.encode(str, "UTF-8").replace("+", "%20");
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
}
Также для форматирования читайте простой способ отправки писем в Java: mail-to links
Я реализовал это, и это хорошо работает на OS X. (упоминание Райана О максимальной длине URL не было кодифицировано.)
public void email(String subject, String body) throws Exception {
String cmd = "open mailto:";
cmd += "?subject=" + urlEncode(subject);
cmd += "&body=" + urlEncode(body);
Runtime.getRuntime().exec(cmd);
}
private static String urlEncode(String s) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (Character.isLetterOrDigit(ch)) {
sb.append(ch);
}
else {
sb.append(String.format("%%%02X", (int)ch));
}
}
return sb.toString();
}
Мне пришлось заново реализовать URLencode, потому что Java-е будут использовать + для пространства, а Почта воспринимала их буквально. Я еще не тестировал на Windows.