簡體   English   中英

為什么在JSP中使用javaMail API時發信人的電子郵件不顯示?

[英]Why senders email does not show up while using javaMail API in JSP?

我已經編寫了一個樣本JSP代碼,以使用JavaMail API將電子郵件發送給另一個用戶。 表單具有發件人電子郵件框,主題框和注釋部分。 將使用jsp文件中的request.getParameter()檢索所有三個html字段。 電子郵件是從主機(smtp.gmail.com)完美發送的,但是當我登錄gmail時,我看到它是作為我自己發送的(換句話說,是為我自己發送電子郵件)。 以下是我一直在努力的示例代碼:

'<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ page import="java.io.*,java.util.*,javax.mail.*"%>
<%@ page import="javax.mail.internet.*,javax.activation.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>

<%@ page isErrorPage="true"  %>

<%
   String result;
   // Recipient's email ID needs to be mentioned.
   String to = "toABC@gmail.com";
   final String username = "toABC@gmail.com";
   final String password = "somePassword";
   // Sender's email ID needs to be mentioned
   String from = request.getParameter("senderEmail");



   // Get system properties object
   Properties properties = new Properties();  

   // Setup mail server

    properties.put("mail.smtp.auth", "true");
    properties.put("mail.smtp.starttls.enable", "true");
    properties.put("mail.smtp.host", "smtp.gmail.com");
    properties.put("mail.smtp.port", "587");


   Session mailSession = Session.getInstance(properties,
              new javax.mail.Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication()         {
                return new PasswordAuthentication(username, password);
                }
              });

    try{
       // Create a default MimeMessage object.
      MimeMessage message = new MimeMessage(mailSession);
       // Set From: header field of the header.
       message.setFrom(new InternetAddress(from));
       // Set To: header field of the header.
       message.addRecipient(Message.RecipientType.TO,
                                new InternetAddress(to));
       // Set Subject: header field
       message.setSubject(request.getParameter("subject"));
       // Now set the actual message
       message.setText(request.getParameter("content"));
       // Send message
       Transport.send(message);
       result = "Sent message successfully....";
     }catch (MessagingException ex) {
       ex.printStackTrace();
       result = "Error: unable to send message....";
       out.println("<br>");
       out.println("<p>" + ex.getMessage() +" </p>");

     }
  %>


   <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" http://www.w3.org/TR/html4/loose.dtd">
 <html>
  <head>
   <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
  </head>


 <body>
   <center>
      <h1>Send Email using JSP</h1>
   </center>
   <p align="center">
 <% 
     out.println("Result: " + result + "\n");
  %>
 </p>
 </body>
 </html>`

以下是我的HTML頁面:

    <html>
<body>
 <form action="htmlEmail.jsp" method="post">
        <table border="0" width="35%" align="center">
           <caption><h2>Send New E-mail</h2></caption>
            <tr>
                <td width="50%">Sender email address </td>
                 <td><input type="text" name="senderEmail" size="50"/></td>
           </tr>
           <tr>
                <td>Subject </td>
                <td><input type="text" name="subject" size="50"/></td>
          </tr>
          <tr>
                <td>Content </td>
                <td><textarea rows="10" cols="39" name="content"></textarea>    </td>
           </tr>
           <tr>
                <td colspan="2" align="center"><input type="submit" value="Send"/></td>
           </tr>
          </table>

    </form>




</body>
 </html>

在HTML頁面中,我輸入了發件人電子郵件地址,我認為在服務器上運行上述代碼后打開我的Gmail帳戶后,該地址將顯示為發件人電子郵件地址。 相反,我收到的是來自“ toABC@gmail.com”的電子郵件。 我的查詢是,“為什么我沒有收到“ fromXYZ@gmail.com”發送的電子郵件(以html格式輸入)? 正如您在代碼中看到的那樣,我正在使用message.setFrom(from)作為發件人。 然后,這應該在我的電子郵件中顯示為發件人。 感謝幫助。

通常,郵件服務器不會讓您發送看似來自任意地址的郵件。 如果您要從其他特定地址發送郵件,請參閱此Gmail幫助頁面

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM