Java 메일을 사용하여 이메일을 보내려는 것은 아니지만 작동하지 않습니다.
문제
암호 및 로그인을 재설정하려면 사용자가 관리자에게 전자 메일을 보내야하는 내 응용 프로그램에서 JSF 페이지가 있습니다.코드를 작성하고 JAR을 BuildPath에 추가했지만 보내기 버튼을 클릭하면 페이지가 새로 고쳐지고 전자 메일이 대상으로 보내지 않고 예외가 없으면 잘못된 것을 알 수 없습니다. Ramiq 답변에 따라 업데이트 된 코드 이것은 ManagedBean 코드
입니다 @ManagedBean(name="sendMail")
@SessionScoped
public class SendMail implements java.io.Serializable{
private static final long serialVersionUID = 1L;
private String to = "toadress";
private String objet = "Compte inaccessible";
private String body = "Mon compte "
+ getNom()
+ " "
+ getPrenom()
+ " n'est plus accessible.Veuillez s'il vous plaît réinitialiser mes cordonnées et les envoyer à mon email "
+ getFrom();
private String from = "fromadress";
private String smtpServer = "smtp.orange.tn";
private String nom;
private String prenom;
public void send() {
Properties props =new Properties();
props.put("mail.smtp.host", smtpServer);
props.put("mail.debug", "true");
Session session = Session.getInstance(props);
try {
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = {new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(objet);
msg.setSentDate(new Date());
msg.setText("Mail Body ....");
Transport.send(msg);
System.out.println("Message Sent Ok");
FacesMessage msg2 = new FacesMessage("E-mail envoyé avec succés");
FacesContext.getCurrentInstance().addMessage(null, msg2);
} catch (MessagingException ex) {
ex.printStackTrace();
}
}
.
이는 페이지 코드입니다
<h:form id="f1">
<br></br>
<div class="centre">
<p:inputText placeholder="Nom" required="true" id="nom"
value="#{sendMail.nom}"
validator="#{AdministrateurBean.checkAdmin}"></p:inputText>
<h:messages style="color:red" for="nom"/>
</div>
<div class="centre">
<p:inputText placeholder="Prénom" required="true"
value="#{sendMail.prenom}" id="prenom" ></p:inputText>
<h:messages style="color:red" for="prenom"/>
</div>
<div class="centre">
<p:inputText placeholder="xyz@exemple.com" required="true" id="email"></p:inputText>
<h:messages style="color:red" for="email"/>
</div>
<div class="centre">
<p:button value="Envoyer" size="30" style="width:207px"
action="#{sendMail.send}" update="f1"></p:button>
</div>
</h:form>
</div>
. 해결책
... send (String smtpServer,String to,String rom, String objet,String body){
.
FromAddress 매개 변수의 이름은 " rom "이지만 "에서 "로 사용합니다.
일반적 으로이 방법을 수행해야합니다 :
String to = "sendToMailAddress";
String from = "sendFromMailAddress";
String host = "smtp.yourisp....";
Properties props = new Properties();
props.put("mail.smtp.host", host);
props.put("mail.debug", "true");
Session session = Session.getInstance(props);
try {
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = {new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject("Test Subject");
msg.setSentDate(new Date());
msg.setText("Mail Body ....");
Transport.send(msg);
}
catch (MessagingException mex) {
mex.printStackTrace();
}
.
업데이트 : 귀하의 행동 방법 dosendmail 은 해고되지 않습니다! actionEvent 매개 변수가 있으므로이 메소드가 동작이 아닌 ActionListener의 경우에만 필요한 경우에만이 매개 변수를 제거합니다
public void doSendMail(ActionEvent e)
.
~
public String doSendMail(){
....
return null;
}
.
동일한 페이지로 이동하려는 경우 탐색 결과를 반환 한 다음 null을 반환해야합니다.
사용하는 JSF 버전을 알지 못하지만 일반적으로 이렇게해서 관리해야합니다 :
@ManagedBean(name="sendMail")
@SessionScoped
public class SendMail implements java.io.Serializable{
. 제휴하지 않습니다 StackOverflow