Вы можете использовать libmail: http://lwest.free.fr/doc/php/lib/index.php3?page=mail&lang=en
include "libmail.php";
$m = new Mail(); // create the mail
$m->From( $_POST['form'] );
$m->To( $_POST['to'] );
$m->Subject( $_POST['subject'] );
$m->Body( $_POST['body'] );
$m->Cc( $_POST['cc']);
$m->Priority(4);
// attach a file of type image/gif to be displayed in the message if possible
$m->Attach( "/home/leo/toto.gif", "image/gif", "inline" );
$m->Send(); // send the mail
echo "Mail was sent:"
echo $m->Get(); // show the mail source
Из docs :
urllib.quote(string[, safe])
Заменить специальные символы в строке, используя escape-последовательность% xx. Буквы, цифры и символы «_.-» никогда не цитируются. По умолчанию эта функция предназначена для цитирования раздела пути URL. Дополнительный безопасный параметр указывает дополнительные символы, которые не должны указываться - его значением по умолчанию является «/»
blockquote>. Это означает, что передача '' для безопасного решения вашей первой проблемы:
>>> urllib.quote('/test') '/test' >>> urllib.quote('/test', safe='') '%2Ftest'
О второй проблеме, есть отчет об ошибке здесь . По-видимому, он был исправлен в python 3. Вы можете обойти его, кодируя как utf8 следующим образом:
>>> query = urllib.quote(u"Müller".encode('utf8')) >>> print urllib.unquote(query).decode('utf8') Müller
Кстати, посмотрите на urlencode
Обратите внимание, что
urllib.quote
переместился наurllib.parse.quote
в Python3
Мой ответ похож на ответ Паоло.
Я думаю, что модуль requests
намного лучше. Он основан на urllib3
. Вы можете попробовать следующее:
>>> from requests.utils import quote
>>> quote('/test')
'/test'
>>> quote('/test', safe='')
'%2Ftest'
requests.utils.quote
является ссылкой на python quote
. Смотрите источники запросов .
– Cjkjvfnby
5 August 2015 в 14:11
requests.utils.quote
представляет собой тонкую оболочку совместимости для urllib.quote
для python 2 и urllib.parse.quote
для python 3
– Jeff Sheffield
23 September 2015 в 17:30
В Python 3 urllib.quote
был перенесен в urllib.parse.quote
, и он обрабатывает unicode по умолчанию.
>>> from urllib.parse import quote
>>> quote('/test')
'/test'
>>> quote('/test', safe='')
'%2Ftest'
>>> quote('/El Niño/')
'/El%20Ni%C3%B1o/'
Если вы используете django, вы можете использовать urlquote:
>>> from django.utils.http import urlquote
>>> urlquote(u"Müller")
u'M%C3%BCller'
reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | ","
. Это то, что имеет дело с urllib.quote. – Jeff Sheffield 23 September 2015 в 17:42urllib.quote
переместился наurlib.parse.quote
, так как Python3. – Hibou57 8 December 2015 в 07:28urllib.parse.quote
docs – Andreas Haferburg 16 December 2016 в 11:50