[英]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.