Плагин Grails ('grails install-plugin mail') отлично работает даже по протоколу TLS - см. Требования к отправке на mac.com.
Однако для тех, кто использует Outlook или другие корпоративные почтовые системы, я нашел немного другое решение Grails с использованием resources.xml и вспомогательных классов Spring JavaMail:
1) Добавьте следующее в myapp / grails-app / conf / spring / resources.xml (см. Ниже)
2) Определите услугу в вашей бизнес-службе по мере необходимости.
3) Добавьте несколько импортов - готово!
импорт javax.mail.internet.MimeMessage
import org.springframework.core.io.FileSystemResource
import org.springframework.mail.javamail.MimeMessageHelper
def mailSender
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<!-- Mail service -->
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="mail.munger.somecorp.com"/>
<property name="port" value="25"/>
<property name="javaMailProperties">
<props>
<prop key="mail.debug">false</prop>
</props>
</property>
</bean>
<!-- more bean definitions go here... -->
</beans>
Java-код для добавления вложения:
MimeMessage message = mailSender.createMimeMessage()
MimeMessageHelper helper = new MimeMessageHelper( message, true )
for ( String recipients : [ customer1, customer2, customer3, customer4 ].findAll { it != null } )
{
helper.addTo( str );
}
helper.setFrom( "" )
helper.setSubject( aSubject )
helper.setText("...")
FileSystemResource fileResource =
new FileSystemResource( new File(tempFile) )
helper.addAttachment( tempFile.substring(tempFile.lastIndexOf( "/" ) + 1), fileResource, "application/pdf" )