Как я открываю почтовую программу по умолчанию с Предметом и Телом межплатформенным способом?

sudo phpenmod mysqli
sudo service apache2 restart

  • phpenmod moduleName включает модуль для php7 (перезапуск apache после этого sudo service apache2 restart)
  • phpdismod moduleName отключает модуль для php7 (перезапустите apache после этого sudo service apache2 restart)
  • php -m перечисляет загруженные модули
11
задан Frank Krueger 26 August 2008 в 02:56
поделиться

8 ответов

В Java 1.6 у Вас есть stardard способ открыть почтовую программу по умолчанию платформы: Desktop.mail (URI) метод. URI может использоваться для установки всех полей почты (отправитель, получатели, тело, предмет). Можно проверить полный пример интеграции настольных систем в Java 1.6 на Использовании Рабочего стола API в Java SE 6

10
ответ дан 3 December 2019 в 02:53
поделиться

start хорошо работает в Windows (см. ниже). Я использовал бы Java, создал в UrlEscape, затем просто выполняет вторую замену для '+' символы.

start mailto:"?subject=My%20Subject&body=The%20Body"
4
ответ дан 3 December 2019 в 02:53
поделиться

Я должен был повторно реализовать URLencode, потому что Java будет использовать + для пространства, и Почта взяла их буквально.

Я не знаю, имеет ли Java некоторый встроенный метод для urlencoding строка, но эта ссылка, http://www.permadi.com/tutorial/urlEncoding/ показывает некоторые наиболее распространенные символы для кодирования:

;       %3B
?       %3F
/       %2F
:       %3A
#       %23
&       %24
=       %3D
+       %2B
$       %26
,       %2C
space   %20 or +
%       %25
<       %3C
>       %3E
~       %7E
%       %25
3
ответ дан 3 December 2019 в 02:53
поделиться

Я не знаю, имеет ли Java некоторый встроенный метод для urlencoding строка, но эта ссылка, http://www.permadi.com/tutorial/urlEncoding/ показывает некоторые наиболее распространенные символы для кодирования:

Для кодирования процента mailto URI hnames и hvalues, я использую правила по http://shadow2531.com/opera/testcases/mailto/modern_mailto_uri_scheme.html#encoding. В соответствии с http://shadow2531.com/opera/testcases/mailto/modern_mailto_uri_scheme.html#implementations, существует пример 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, Вы передаете командную строку, правильно оставляют и заключают в кавычки.

На окнах, который означает:

  1. Заключите аргумент в кавычки.
  2. Выйдите любой "в кавычках с \.
  3. Выйдите из любого \, которые предшествуют "или конец строки с \.

Кроме того, на окнах, если Вы имеете дело со строками UTF-16 как в Java, Вы могли бы хотеть использовать ShellExecuteW для "открытия" mailto URI. Если Вы не делаете и возвращаете s на исключении (где некоторый hvalue не полностью закодирован процентом, Вы могли закончить тем, что сузили некоторые широкие символы и потеряли информацию. Но, не все почтовые клиенты принимают unicode аргументы, так идеально, Вы хотите передать правильно спор percent-encoded-utf8 ascii с ShellExecute.

Как 'запуск', ShellExecute с "открытым" должен открыть mailto URI в клиенте по умолчанию.

Не уверенный в другой ОС.

3
ответ дан 3 December 2019 в 02:53
поделиться

1. Добавьте строку темы

Можно ли предварительно заполнить строку темы в электронном письме путем добавления предмета, которому предшествуют'? подвергните =' после адреса электронной почты.

Таким образом, ссылка теперь становится:

<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>

cc может просто быть заменен скрытой копией, если Вы хотите отправить слепые копии.

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

Можно, конечно, указать больше чем одного дополнительного получателя, просто разделить список получателей с запятой.

<a href="mailto:someone@yoursite.com?cc=someoneelse@theirsite.com, another@thatsite.com, me@mysite.com">Email Us</a> 

Полученный от Получения Больше От 'mailto', который теперь 404 с. Я получил содержание от waybackmachine.

3. Объединение кода

Можно объединить различные биты кода выше добавлением '&' между каждым.

Таким образом добавление

me@mysite.com?subject=Hello&cc=you@yoursite.com&bcc=her@hersite.com

послал бы электронное письмо с предметом 'Привет' мне, Вам и ей.

4. Напишите электронное письмо

Можно также предварительно заполнить тело электронной почты с запуском сообщения или записать целое сообщение, если Вам нравится! Для добавления некоторой вещи к телу электронной почты, это снова столь же просто как выше -'? тело =' после адреса электронной почты. Однако форматирование той электронной почты может быть немного хитрым. Для создавания пространств между словами, необходимо будет использовать шестнадцатеричный код - например, '%20' между каждым словом, и создать новые строки будет означать добавлять '%0D'. Так же символы, такие как знаки $ должны будут быть записаны в шестнадцатеричном коде.

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

Это отправит сообщение трем людям с предметом и заполненным сообщением, все, что необходимо сделать, добавляет имя.

Только посмотрите на код!

<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 первоисточника, где я нашел это, теперь 404ing, таким образом, я захватил к содержанию от waybackmachine и отправил его здесь, таким образом, он не теряется. Кроме того, OP указал, что это не было для веб-сайта, который является, каковы эти примеры, но некоторые из этих методов могут все еще быть полезными.

4
ответ дан 3 December 2019 в 02:53
поделиться

Mailto не является плохим маршрутом для движения. Но поскольку Вы упомянули, необходимо будет удостовериться, что это кодируется правильно.

Основная проблема с использованием mailto с повреждающимися строками. Используйте %0A для возвратов каретки, %20 для пробелов.

Кроме того, имейте в виду, что mailto считают тем же как своего рода URL и поэтому будет иметь те же ограничения для длины. См. http://support.microsoft.com/kb/208427, отметьте максимальную длину URL 2 083 символов. Это подтверждено для mailto также в этой статье: http://support.microsoft.com/kb/279460/en-us. Кроме того, у некоторых почтовых клиентов может также быть предел (я полагаю, что более старые версии Outlook Express имели предел чего-то намного меньшего как 483 символа или что-то. Если Вы будете ожидать иметь более длинную строку, чем тот затем, то необходимо будет посмотреть на альтернативы.

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

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

Никогда не используйте Runtime.exec(String) на Mac OS X или любой другой операционной системе. Если Вы делаете это, необходимо будет выяснить, как правильно заключить все строки аргумента в кавычки и так далее; это - боль и очень подверженный ошибкам.

Вместо этого используйте Runtime.exec(String[]) который берет массив уже разделенных аргументов. Это намного более подходит для фактически всего использования.

3
ответ дан 3 December 2019 в 02:53
поделиться

Я реализовал это, и это работает хорошо над OS X. (Упоминание Ryan о макс. длине 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.

0
ответ дан 3 December 2019 в 02:53
поделиться
Другие вопросы по тегам:

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