This project has retired. For details please refer to its
Attic page.
MailerImpl xref
1 package org.apache.archiva.redback.integration.mail;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.UnsupportedEncodingException;
23 import java.util.ArrayList;
24 import java.util.Collection;
25 import java.util.List;
26
27 import javax.inject.Inject;
28 import javax.inject.Named;
29 import javax.mail.Address;
30 import javax.mail.Message;
31 import javax.mail.MessagingException;
32 import javax.mail.internet.AddressException;
33 import javax.mail.internet.InternetAddress;
34 import javax.mail.internet.MimeMessage;
35
36 import org.apache.archiva.redback.configuration.UserConfiguration;
37 import org.apache.archiva.redback.configuration.UserConfigurationKeys;
38 import org.apache.archiva.redback.keys.AuthenticationKey;
39 import org.apache.archiva.redback.policy.UserSecurityPolicy;
40 import org.apache.archiva.redback.policy.UserValidationSettings;
41 import org.apache.archiva.redback.system.SecuritySystem;
42 import org.apache.commons.lang.StringUtils;
43 import org.slf4j.Logger;
44 import org.slf4j.LoggerFactory;
45 import org.springframework.mail.javamail.JavaMailSender;
46 import org.springframework.stereotype.Service;
47
48
49
50
51
52
53 @Service( "mailer" )
54 public class MailerImpl
55 implements Mailer
56 {
57 protected Logger log = LoggerFactory.getLogger( getClass() );
58
59 @Inject
60 @Named( value = "mailGenerator#velocity" )
61 private MailGenerator generator;
62
63 @Inject
64 @Named( value = "mailSender" )
65 private JavaMailSender javaMailSender;
66
67 @Inject
68 private SecuritySystem securitySystem;
69
70 @Inject
71 @Named( value = "userConfiguration#default" )
72 private UserConfiguration config;
73
74 public void sendAccountValidationEmail( Collection<String> recipients, AuthenticationKey authkey, String baseUrl )
75 {
76 String content = generator.generateMail( "newAccountValidationEmail", authkey, baseUrl );
77
78 UserSecurityPolicy policy = securitySystem.getPolicy();
79 UserValidationSettings validation = policy.getUserValidationSettings();
80 sendMessage( recipients, validation.getEmailSubject(), content );
81 }
82
83 public void sendPasswordResetEmail( Collection<String> recipients, AuthenticationKey authkey, String baseUrl )
84 {
85 String content = generator.generateMail( "passwordResetEmail", authkey, baseUrl );
86
87 UserSecurityPolicy policy = securitySystem.getPolicy();
88 UserValidationSettings validation = policy.getUserValidationSettings();
89 sendMessage( recipients, validation.getEmailSubject(), content );
90 }
91
92 public void sendMessage( Collection<String> recipients, String subject, String content )
93 {
94 if ( recipients.isEmpty() )
95 {
96 log.warn( "Mail Not Sent - No mail recipients for email. subject [" + subject + "]" );
97 return;
98 }
99
100 String fromAddress = config.getString( UserConfigurationKeys.EMAIL_FROM_ADDRESS );
101 String fromName = config.getString( UserConfigurationKeys.EMAIL_FROM_NAME );
102
103 if ( StringUtils.isEmpty( fromAddress ) )
104 {
105 fromAddress = System.getProperty( "user.name" ) + "@localhost";
106 }
107
108
109
110 try
111 {
112
113 MimeMessage message = javaMailSender.createMimeMessage();
114
115 message.setSubject( subject );
116 message.setText( content );
117
118 InternetAddress from = new InternetAddress( fromAddress, fromName );
119
120 message.setFrom( from );
121
122 List<Address> tos = new ArrayList<Address>();
123
124 for ( String mailbox : recipients )
125 {
126 InternetAddress to = new InternetAddress( mailbox.trim() );
127
128 tos.add( to );
129 }
130
131 message.setRecipients( Message.RecipientType.TO, tos.toArray( new Address[tos.size()] ) );
132
133 log.debug( "mail content {}", content );
134
135 javaMailSender.send( message );
136 }
137 catch ( AddressException e )
138 {
139 log.error( "Unable to send message, subject [" + subject + "]", e );
140 }
141 catch ( MessagingException e )
142 {
143 log.error( "Unable to send message, subject [" + subject + "]", e );
144 }
145 catch ( UnsupportedEncodingException e )
146 {
147 log.error( "Unable to send message, subject [" + subject + "]", e );
148 }
149 }
150 }