используете ли вы конфигурацию SMTP для отправки своей электронной почты? попробуйте вместо этого использовать phpmailer. вы можете загрузить библиотеку из https://github.com/PHPMailer/PHPMailer . Я создал электронную почту, отправив этот путь:
function send_mail($email, $recipient_name, $message='')
{
require("phpmailer/class.phpmailer.php");
$mail = new PHPMailer();
$mail->CharSet="utf-8";
$mail->IsSMTP(); // set mailer to use SMTP
$mail->Host = "mail.example.com"; // specify main and backup server
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = "myusername"; // SMTP username
$mail->Password = "p@ssw0rd"; // SMTP password
$mail->From = "me@walalang.com";
$mail->FromName = "System-Ad";
$mail->AddAddress($email, $recipient_name);
$mail->WordWrap = 50; // set word wrap to 50 characters
$mail->IsHTML(true); // set email format to HTML (true) or plain text (false)
$mail->Subject = "This is a Sampleenter code here Email";
$mail->Body = $message;
$mail->AltBody = "This is the body in plain text for non-HTML mail clients";
$mail->AddEmbeddedImage('images/logo.png', 'logo', 'logo.png');
$mail->addAttachment('files/file.xlsx');
if(!$mail->Send())
{
echo "Message could not be sent. ";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
echo "Message has been sent";
}
Прежде всего, <welcome-file>
не представляет путь к «домашней странице по умолчанию». Он представляет собой имя файла физического файла, содержащегося в папке, которую вы хотите использовать в качестве файла по умолчанию, когда запрашивается папка типа /
, /foo/
, /foo/bar/
и т. Д.
Таким образом, в JSF 2.x-аромате это будет в основном:
<welcome-file-list>
<welcome-file>index.xhtml</welcome-file>
</welcome-file-list>
Таким образом, если конечный пользователь запрашивает /
, и у вас есть /index.xhtml
, он будет обслуживаться. Или, если enduser запрашивает /foo
, и у вас есть /foo/index.xhtml
, тогда он будет обслуживаться и т. Д. Если такого файла нет, тогда будет возвращена ошибка 404.
Теперь вы появляетесь чтобы отобразить ваш FacesServlet
на префиксе <url-pattern>
в /faces/*
. Это осталось от JSF 1.0 / 1.1 возрастов и на самом деле не рекомендуется в наши дни. Возможно, вы читали устаревший учебник, ориентированный на JSF 1.x, или плохо поддерживаемый учебник, который был первоначально написан для JSF 1.x, а затем незаметно обновлен для JSF 2.x вместо перезаписывания с нуля.
Этот учебник также, похоже, не объяснил вам некоторые основы сервлетов . А именно, чтобы заставить JSF-компоненты на странице XHTML запускать и генерировать некоторый вывод HTML, FacesServlet
необходимо вызвать, когда запрашивается страница XHTML. Когда вы запрашиваете страницу XHTML так /index.xhtml
, а FacesServlet
отображается на /faces/*
, тогда она не будет вызываться. Затем браузер будет извлекать необработанный исходный код JSF без генерируемого вывода HTML. Вы можете увидеть его правой кнопкой мыши, Просмотреть источник в веб-браузере. Вы должны были запросить такую страницу как /faces/index.xhtml
, чтобы FacesServlet
мог запускать и выводить HTML-вывод, который браузер может понять и представить.
Это не очень хорошо сочетается с файлами приветствия. Это полностью объясняет, почему вы получаете «чистую белую» (пустую) страницу при использовании index.xhtml
в качестве приветственного файла (некоторые уступающие веб-браузеры, такие как IE, путают запрашивают диалоговое окно загрузки из-за отсутствия / неправильного типа содержимого на ответ, содержащий исходный исходный код XHTML). FacesServlet
просто не вызывался. Просто избавитесь от старомодного шаблона URL /faces/*
и используйте шаблон URL-адреса JSF 2.x *.xhtml
.
<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
Таким образом, файлы приветствия должны работать, и вы можете просто открыть JSF страниц, напрямую запрашивая его физический URL-адрес без сбоев с виртуальными URL-адресами. Это невозможно в JSF 1.x, потому что это позволяло FacesServlet
работать в бесконечном цикле, вызывающем себя и вызывающем переполнение стека.
Что касается этих предупреждений, они не связаны друг с другом, но вполне доступны для поиска.
Вы можете установить страницу по умолчанию в файле web.xml, чтобы вызвать faceServlet в JSF двумя способами:
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>facesServlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.xhtml</welcome-file>
</welcome-file-list>
</web-app>
или вызвать facesServlet непосредственно из файла приветствия следующим образом:
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<welcome-file-list>
<welcome-file>faces/index.xhtml</welcome-file>
</welcome-file-list>
</web-app>
Надеюсь, это поможет кому-то!
/faces/*
на*.html
. Однако моя индексная страница ведет себя непредвиденно. Я попробовал<welcome-file>index.html</welcome-file>
, но он отображает только мой заголовок в верхнем левом углу (я использую шаблон с<ui:composition>
. Когда я проверяю исходный код, он показывает исходный код самого файла индекса.x
html back, как для файла приветствия, так и для отображения, он работает снова. Поэтому кажется, что они должны быть синхронизированы. Есть ли способ решить это? – developer10 28 October 2016 в 20:11