Возможно, проблема в конфигурации почтового сервера, чтобы избежать подобных проблем или вам не нужно беспокоиться о проблеме с почтовым сервером, я рекомендую вам использовать PHPMailer , это плагин у которого есть все необходимое для отправки почты, единственное, что вы должны учесть, это иметь SMTP-порт (порт: 25 и 465), включен
require_once 'PHPMailer/PHPMailer.php';
require_once '/servicios/PHPMailer/SMTP.php';
require_once '/servicios/PHPMailer/Exception.php';
$mail = new \PHPMailer\PHPMailer\PHPMailer(true);
try {
//Server settings
$mail->SMTPDebug = 0;
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = 'correo@gmail.com';
$mail->Password = 'contrasenia';
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
//Recipients
$mail->setFrom('correo@gmail.com', 'my name');
$mail->addAddress('destination@correo.com');
//Attachments
$mail->addAttachment('optional file'); // Add files, is optional
//Content
$mail->isHTML(true);// Set email format to HTML
$mail->Subject = utf8_decode("subject");
$mail->Body = utf8_decode("mail content");
$mail->AltBody = '';
$mail->send();
}
catch (Exception $e){
$error = $mail->ErrorInfo;
}
Ваша проблема заключается в пространствах любой стороны трубы.
Ни один из
" ^.*"
".*$ "
не будет соответствовать чему-либо, потому что ничего не появляется перед запуском или после завершения.
У этого есть шанс:
^[\u0000-\uFFFF]+$|^[^_%]
Вот пример кода, чтобы исключить некоторые символы из диапазона с помощью Lookahead и Lookbehind Zero-Length Assertions , которые на самом деле не потребляют символы в строке, а только утверждают, возможно ли совпадение или нет.
Пример кода: (исключить m
и n
из диапазона a-z
)
String str = "abcdmnxyz";
Pattern p=Pattern.compile("(?![mn])[a-z]");
Matcher m=p.matcher(str);
while(m.find()){
System.out.println(m.group());
}
вывод:
a b c d x y z
В так же, как вы можете это сделать.
Объяснение Regex (?![mn])[a-z]
(?! look ahead to see if there is not:
[mn] any character of: 'm', 'n'
) end of look-ahead
[a-z] any character of: 'a' to 'z'
Вы можете разделить весь диапазон в поддиапазонах и решить эту проблему с помощью ([a-l]|[o-z])
или [a-lo-z]
.
([a-l]|[o-z])
– Braj
14 April 2016 в 09:50
Вы можете использовать пересечения / вычитания классов символов в Java regex, чтобы ограничить «общий» класс символов.
Класс символов
blockquote>[a-z&&[^aeiuo]]
соответствует одной букве, которая не является гласным. Другими словами: он соответствует одному согласному.Используйте
"^[\u0000-\uFFFF&&[^_%]]+$"
для соответствия всем символам Юникода, кроме
_
и%
.Подробнее о пересечениях / вычитаниях класса символов, доступных в Java regex, см. Учебные пособия Java ™: классы символов .
Тестирование в OCPSoft Visual Regex Tester , показывающий, что нет совпадений, когда к строке добавляется
%
:И демонстрация Java :
String input = "this"; Pattern p = Pattern.compile("[\u0000-\uFFFF&&[^_%]]+"); // No anchors because `matches()` is used Matcher m = p.matcher(input); boolean result = m.matches(); System.out.println(result); // => true