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
перечисляет загруженные модули В Java 1.6 у Вас есть stardard способ открыть почтовую программу по умолчанию платформы: Desktop.mail (URI) метод. URI может использоваться для установки всех полей почты (отправитель, получатели, тело, предмет). Можно проверить полный пример интеграции настольных систем в Java 1.6 на Использовании Рабочего стола API в Java SE 6
start
хорошо работает в Windows (см. ниже). Я использовал бы Java, создал в UrlEscape, затем просто выполняет вторую замену для '+' символы.
start mailto:"?subject=My%20Subject&body=The%20Body"
Я должен был повторно реализовать 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
Я не знаю, имеет ли 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, Вы передаете командную строку, правильно оставляют и заключают в кавычки.
На окнах, который означает:
Кроме того, на окнах, если Вы имеете дело со строками UTF-16 как в Java, Вы могли бы хотеть использовать ShellExecuteW для "открытия" mailto URI. Если Вы не делаете и возвращаете s на исключении (где некоторый hvalue не полностью закодирован процентом, Вы могли закончить тем, что сузили некоторые широкие символы и потеряли информацию. Но, не все почтовые клиенты принимают unicode аргументы, так идеально, Вы хотите передать правильно спор percent-encoded-utf8 ascii с ShellExecute.
Как 'запуск', ShellExecute с "открытым" должен открыть mailto URI в клиенте по умолчанию.
Не уверенный в другой ОС.
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 указал, что это не было для веб-сайта, который является, каковы эти примеры, но некоторые из этих методов могут все еще быть полезными.
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).
Никогда не используйте Runtime.exec(String)
на Mac OS X или любой другой операционной системе. Если Вы делаете это, необходимо будет выяснить, как правильно заключить все строки аргумента в кавычки и так далее; это - боль и очень подверженный ошибкам.
Вместо этого используйте Runtime.exec(String[])
который берет массив уже разделенных аргументов. Это намного более подходит для фактически всего использования.
Я реализовал это, и это работает хорошо над 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.