実現したいこと
画面にメールアドレスを入力し、「送信」ボタンを押下したら、入力したメールアドレスにメール送信をしたい。
詰まっているところ
メール送信メソッドで送信先を設定するところにgetterを使用したが(入力したメールアドレスを設定したいため)コンパイルエラーが起きている
参考にしたURL
https://www.techscore.com/tech/Java/JavaEE/JavaMail/1-2/
https://smtps.jp/docs/integrate/si/javamail/index.html
試したこと
JavaMailを使用したサンプルコードを検索して調べたのですが、宛先のメールアドレスは'xxxxxx@gmail.com'のように
指定されたものばかりで解決できませんでした。
該当のソースコード
javaBeans
1package model; 2 3import java.io.Serializable; 4 5public class OpinionDTO implements Serializable{ 6 private String mail; 7 private String name; 8 private String age; 9 private String main; 10 11 public OpinionDTO() {} 12 13 public OpinionDTO(String mail,String name,String age,String main) { 14 this.mail = mail; 15 this.name = name; 16 this.age = age; 17 this.main = main; 18 } 19 20 public String getMail() { 21 return mail; 22 } 23 24 public void setMail(String mail) { 25 this.mail = mail; 26 } 27 28 public String getName() { 29 return name; 30 } 31 32 public void setName(String name) { 33 this.name = name; 34 } 35 36 public String getAge() { 37 return age; 38 } 39 40 public void setAge(String age) { 41 this.age = age; 42 } 43 44 public String getMain() { 45 return main; 46 } 47 48 public void setMain(String main) { 49 this.main = main; 50 } 51 52 53}
jsp
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4<html> 5<head> 6<link rel="stylesheet" type="text/css" href="css/style.css"> 7<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 8<title>ご意見・ご要望</title> 9</head> 10<body> 11<h1>ご意見・ご要望について</h1> 12<p>本サイトについてのご意見やご要望等あれば、お気軽にお寄せください。いただいたご意見・ご要望は 13今後のサービス向上に活用させていただきます。</p> 14<p>※必須は記入必須項目です</p> 15<form action="/docoTsubu/Opinion" method="post"> 16お名前:<input type="text" name="name"><B class="Mandatory">※必須</B><br> 17<%--ここで入力したメールアドレスにメール送信をしたい--%> 18メールアドレス:<input type="text" name="mail"><B class="Mandatory">※必須</B><br> 19年齢:<input type="text" name="age"><br> 20ご意見・ご要望<B class="Mandatory">※必須</B><br><br> 21<textarea name="main" rows="4" cols="40"></textarea><br> 22<input type="submit" value="送信"> 23<input type="button" value="戻る" onClick="history.go(-1);"> 24</form> 25 26</body> 27</html>
java
1package model; 2 3import java.util.Properties; 4 5import javax.mail.Message; 6import javax.mail.MessagingException; 7import javax.mail.Session; 8import javax.mail.Transport; 9import javax.mail.internet.InternetAddress; 10import javax.mail.internet.MimeMessage; 11 12public class MailSend{ 13 //メール送信をするメソッド 14 public void send(){ 15 Properties properties = new Properties(); 16 properties.setProperty("mail.smtp.host","localhost"); 17 Session session = Session.getDefaultInstance(properties); 18 19 MimeMessage mimeMessage = new MimeMessage(session); 20 21 OpinionDTO DTO = new OpinionDTO(); 22 //InternetAddressの作成 画面に入力したメールアドレスを設定するためにgetterを使用 23 InternetAddress toAddress = new InternetAddress(DTO.getMail(),"送信者"); 24 25 try { 26 27 //宛先の設定(ここを指定のString型でなく、入力画面に入力したメールアドレスを設定したい) 28 mimeMessage.setRecipient(DTO.getMail(), toAddress); 29 //送信元の設定 30 mimeMessage.setFrom(new InternetAddress("xxxxxxxx@gmail.com")); 31 //サブジェクトの設定 32 mimeMessage.setSubject("ご回答ありがとうございました。"); 33 //本文の設定 34 mimeMessage.setText("貴重なご意見ありがとうございます。今後もユーザーが使いやすいサイトを目指すための参考にさせていただきます。","iso-2022-jp"); 35 //設定の保存 36 mimeMessage.saveChanges(); 37 //メールの送信 38 Transport.send(mimeMessage); 39 }catch(MessagingException e) { 40 e.printStackTrace(); 41 return; 42 } 43} 44 45 46}
servlet
1 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 2 request.setCharacterEncoding("UTF-8"); 3 String mail = request.getParameter("mail"); 4 String name = request.getParameter("name"); 5 String age = request.getParameter("age"); 6 String main = request.getParameter("main"); 7 8 OpinionDTO opinion = new OpinionDTO(); 9 10 opinion.setMail(mail); 11 opinion.setName(name); 12 opinion.setAge(age); 13 opinion.setMain(main); 14 //データベースに登録する 15 OpinionDAO dao = new OpinionDAO(); 16 OpinionDTO opinion1 = dao.Improvement(opinion); 17 18 //データベースに登録できたら 19 if(opinion1 != null) { 20 HttpSession session = request.getSession(); 21 session.setAttribute("Opinion", opinion); 22 23 //画面に入力したメールアドレスにメール送信をする 24 MailSend mailSend = new MailSend(); 25 mailSend.send(); 26 27 //ご意見承り画面にフォワード 28 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/Opinioncomplete.jsp"); 29 dispatcher.forward(request, response); 30 } 31 } 32 33}