У меня есть простая JSP-страница в моем веб-приложении, которая выглядит следующим образом:
Ниже есть кнопка, позволяющая пользователю нажать «Отправить» после ввода.электронная почта получателя, тема и содержание, конечно.
Я хочу реализовать функцию, которая позволяет пользователю отправлять электронную почту посторонним. Мне приходит в голову использовать Java Mail API с использованием SMTP.
Итак, в своем бэкэнд-коде я написал функцию, которая выглядит следующим образом:
public String sendEmail(ArrayList mediaList, String authRequired, String TLSEnabled, String SSLEnabled, String smtpHost, String senderAddress, String portNumber, String user, String password,
String msgSubject, String msgContent,
ArrayList toRecipientAdd, ArrayList ccRecipientAdd, ArrayList bccRecipientAdd) {
try {
final String SenderAddress = senderAddress;
final String Username = user;
final String Password = password;
System.out.println("Please Wait, sending email...");
if (toRecipientAdd.size() == 0) {
System.out.println("NO USER FOUND IN TORECIPIENT ADDRESS.");
return "NO USER FOUND IN TORECIPIENT ADDRESS.";
}
if (msgSubject.equals("")) {
System.out.println("MESSAGE SUBJECT NOT FOUND.");
return "MESSAGE SUBJECT NOT FOUND.";
}
if (msgContent.equals("")) {
System.out.println("MESSAGE CONTENT NOT FOUND.");
return "MESSAGE CONTENT NOT FOUND.";
}
/*Setup mail server */
Properties props = new Properties();
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.auth", authRequired);
props.put("mail.smtp.host", smtpHost);
props.put("mail.smtp.port", portNumber);
props.put("mail.smtp.starttls.enable", TLSEnabled);
props.put("mail.smtp.ssl.trust", SSLEnabled);
String auth_enable = authRequired;
final String username = user;
final String upassword = password;
System.out.println("mail.smtp.host : " + smtpHost + " mail.smtp.port : " + portNumber);
// Get session
Session session = Session.getDefaultInstance(props, null);
if(Boolean.parseBoolean(auth_enable)){
session = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, upassword);
}
});
}
session.setDebug(true);
// Define message
MimeMessage message = new MimeMessage(session);
InternetAddress senderInetAddress = null;
try {
senderInetAddress = new InternetAddress(senderAddress);
} catch (AddressException addressException) {
addressException.printStackTrace();
}
// Set From Sender Address
message.setFrom(senderInetAddress);
// TO Recipient
Iterator itr = toRecipientAdd.iterator();
while (itr.hasNext()) {
String receiverAddr = (String) itr.next();
System.out.println("receiverAddr : " + receiverAddr);
InternetAddress receiverInetAddress;
try {
receiverInetAddress = new InternetAddress(receiverAddr);
} catch (AddressException addressException) {
addressException.printStackTrace();
continue;
}
message.addRecipient(Message.RecipientType.TO, receiverInetAddress);
}
// CC Recipient
Iterator i = ccRecipientAdd.iterator();
while (i.hasNext()) {
String ccAddr = (String) i.next();
InternetAddress ccInetAddress = null;
try {
ccInetAddress = new InternetAddress(ccAddr);
} catch (AddressException addressException) {
addressException.printStackTrace();
continue;
}
message.addRecipient(Message.RecipientType.CC, ccInetAddress);
}
// BCC Recipient
Iterator j = bccRecipientAdd.iterator();
while (j.hasNext()) {
String bccAddr = (String) j.next();
InternetAddress bccInetAddress = null;
try {
bccInetAddress = new InternetAddress(bccAddr);
} catch (AddressException addressException) {
addressException.printStackTrace();
continue;
}
message.addRecipient(Message.RecipientType.BCC, bccInetAddress);
}
message.setSubject(msgSubject);
Multipart mp = new MimeMultipart();
MimeBodyPart htmlPart = new MimeBodyPart();
htmlPart.setHeader("Content-Transfer-Encoding", "base64");
htmlPart.setContent(msgContent, "text/html; charset=ISO-8859-1");
htmlPart.setDisposition(javax.mail.Part.INLINE);
mp.addBodyPart(htmlPart);
Iterator mediaIter = mediaList.iterator();
while(mediaIter.hasNext()){
Fmedia fmedia = (Fmedia) mediaIter.next();
DataSource fds = new FileDataSource(fmedia.getFfulpath() + "/" + fmedia.getFgname());
MimeBodyPart imagePart = new MimeBodyPart();
imagePart.setDataHandler(new DataHandler(fds));
// assign a cid to the image
imagePart.setHeader("Content-Transfer-Encoding", "base64");
imagePart.addHeader("Content-ID", "<img" + fmedia.getNodeid() + ">");
imagePart.setDisposition(javax.mail.Part.INLINE);
mp.addBodyPart(imagePart);
}
message.setContent(mp);
System.out.println("Sending.... ");
// Send the message
try{
Transport.send(message, message.getAllRecipients());
System.out.println("Message sent.");
}catch(Exception e){
e.printStackTrace();
System.out.println("Exception " + e.getMessage());
}
return "";
} catch (Exception e) {
System.out.println(e.getMessage());
return e.getMessage();
}
}
Однако я все еще незнаком с SMTP в Java и не знаю, какие значения должны бытьуказано в props
, а также, поскольку я не кодирую Mimemessage
, мне нужно получить значения со страницы JSP, как показано выше.
Возможно ли это?