2016-07-12 4 views
0

Webアプリケーション(Spring MVC)でJavaMailSenderImplを使用しています。私はいくつかのaccからのメール、例えば "[email protected]"を送ります。私は別のaccにsetFromを必要とします、例えば "[email protected]"。私はそれをどのようにすることができますか?私はsetFrom("[email protected]")を試しますが、ユーザーはFrom: "[email protected]"でメールを受信します。私は間違って何をしていますか? 私の設定:メールのカスタムを設定できますか?JavaMailSenderImpl

public JavaMailSenderImpl mailSender() { 
    JavaMailSenderImpl javaMailSenderImpl = new JavaMailSenderImpl(); 
    try { 
     javaMailSenderImpl.setHost("smtp.gmail.com"); 
     javaMailSenderImpl.setPort(567); 
     javaMailSenderImpl.setUsername("[email protected]"); 
     javaMailSenderImpl.setPassword("*********"); 
     javaMailSenderImpl.getJavaMailProperties().put("mail.smtp.host", "smtp.gmail.com"); 
     javaMailSenderImpl.getJavaMailProperties().put("mail.smtp.port", "465"); 
     javaMailSenderImpl.getJavaMailProperties().put("mail.debug", "true"); 
     javaMailSenderImpl.getJavaMailProperties().put("mail.smtp.auth", "true"); 
     javaMailSenderImpl.getJavaMailProperties().put("mail.smtp.starttls.enable", "true"); 
     javaMailSenderImpl.getJavaMailProperties().setProperty("mail.smtp.socketFactory.port", "465"); 
     javaMailSenderImpl.getJavaMailProperties().setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
     javaMailSenderImpl.getJavaMailProperties().setProperty("mail.smtp.socketFactory.fallback", "false"); 
    } catch (Exception e) { 
     logger.error(e.getMessage()); 
    } 
    return javaMailSenderImpl; 
} 

そして、送信メールの私のコード:

MimeMessage message2 = javaMailSenderImpl.createMimeMessage(); 
     Address from = new InternetAddress("[email protected]"); 
     message2.setFrom(from); 
     MimeMessageHelper helper = new MimeMessageHelper(message2, true); 
     helper.setFrom("[email protected]il.com"); 
/*adding body,subject etc*/ 
javaMailSenderImpl.send(message2); 

答えて

0

あなたは認証を使用します。

私はいくつかのコードを編集すると思います。

サンプル。

(のpom.xml)

<!-- java mail api --> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-context-support</artifactId> 
    <version>${org.springframework-version}</version> 
</dependency> 

<!-- send mail --> 
<dependency> 
    <groupId>javax.mail</groupId> 
    <artifactId>mail</artifactId> 
    <version>1.4.7</version> 
</dependency> 

(テストミアンクラス)

public class MyAuthentication extends Authenticator { 

    PasswordAuthentication pa; 

    private final static String id = "[email protected]"; 
    private final static String pw = "1234"; 

    public MyAuthentication() { 
     pa = new PasswordAuthentication(id, pw); 
    } 

    // authentication 
    public PasswordAuthentication getPasswordAuthentication() { 
     return pa; 
    } 

    public static void main(String[] args) { 
     Properties p = System.getProperties(); 
     p.put("mail.smtp.starttls.enable", "true"); 
     p.put("mail.smtp.host", "smtp.gmail.com"); 
     p.put("mail.smtp.auth", "true"); 
     p.put("mail.smtp.port", "587"); 

     Authenticator auth = new MyAuthentication(); 
     Session session = Session.getDefaultInstance(p, auth); 
     MimeMessage msg = new MimeMessage(session); 

     try { 

      msg.setSentDate(new Date()); 
      InternetAddress from = new InternetAddress(); 
      from = new InternetAddress("test<" + id + ">"); 

      // sender 
      msg.setFrom(from); 

      // receiver 
      InternetAddress to = new InternetAddress("[email protected]"); 
      msg.setRecipient(Message.RecipientType.TO, to); 

      // title 
      msg.setSubject("test send email", "UTF-8"); 

      // context 
      msg.setText("context bla~bla~", "UTF-8"); 

      // header 
      msg.setHeader("content-Type", "text/html"); 

      // send msg 
      javax.mail.Transport.send(msg); 
      System.out.println("send email"); 

     } catch (AddressException addr_e) { 
      addr_e.printStackTrace(); 
     } catch (MessagingException msg_e) { 
      msg_e.printStackTrace(); 
     } 
    } 
} 
関連する問題