Envio de e-mail com o Seam

Membros,

to tendo que implentar o envio de e-mail usando o Seam e to com um probleminha. To usando o seguinte método para o envio:

@In
private Renderer renderer;

public void sendEmailCadastroOcorrencia()
	{
		try
		{
			
			if(this.getRenderer() == null)
			{
				Renderer renderer = Renderer.instance();
				
				this.setRenderer(renderer);
			}
			
			 this.getRenderer().render("/emailCadastroOcorrencia.xhtml");
			
		} catch (Exception e) {
			
			MessageUtil.infoMessage("E-mail não enviado para o suporte. A notificação será manual.");
			
		} 

	}

get() e set();

No compenente.xml tá assim:

Alguma outra configuração é necessária ?

:frowning:

Consegui resolver.

Seguinte, criei uma classe Mail que servirá de componete. Injeto em um atributo Renderer com @In. Na classe ( Usuario ) que eu vou usar eu injeto o um atributo da primeira classe que criei com @In(create=true) ( Mail ). Pronto… a partir daí eu conseguí fazer o envio com sucesso.

Não sei se fui bem claro, mais qualquer coisa, fala aí…

:wink:

O renderer sempre virá null se não for incluida a biblioteca jboss-seam-ui.jar no WEB-INF/lib da aplicação. Quem instancia o renderer é o org.jboss.seam.ui.facelet.FaceletsRenderer

Amigo, jairo.

Antes de mais nada, me desculpe por ressuscitar esse tópico, mas há uns três dias, quebro a cabeça com isso.

Tem jeito de postar um exemplo de como resolveste? Estou tentando aqui e, por mais que eu esperneie, fico sempre tomando o erro "Could not connect to SMTP host: localhost, port: 25". Não sei onde, diabos, está configurada a tal porta 25, já que a estou alterando, no mail-service.xml, para a 465. Estou usando JBoss 4.2.3 e este é meu mail-service.xml:


<?xml version="1.0" encoding="UTF-8"?>

<server>

	<mbean code="org.jboss.mail.MailService" name="jboss:service=Mail">

		<attribute name="JNDIName">java:/Mail</attribute>
		<attribute name="User">meuemail@gmail.com</attribute>
		<attribute name="Password">minhasenha</attribute>

		<attribute name="Configuration">
			<configuration>
			
				<property name="mail.smtp.auth" value="true" />
				<property name="mail.smtp.starttls.enable" value="true" />
				<property name="mail.smtp.socketFactory.class" value="javax.net.ssl.SSLSocketFactory" />

				<!-- Change to your mail server prototocol -->
				<property name="mail.store.protocol" value="pop3" />
				<property name="mail.transport.protocol" value="smtp" />

				<!-- Change to the user who will receive mail -->
				<property name="mail.user" value="nobody" />

				<!-- Change to the SMTP gateway server -->
				<property name="mail.smtp.host" value="smtp.gmail.com" />

				<!-- The mail server port -->
				<property name="mail.smtp.port" value="465" />

				<!-- Change to the address mail will be from -->
				<property name="mail.from" value="meuemailDeRemetente" />

				<!-- Enable debugging output from the javamail classes -->
				<property name="mail.debug" value="false" />

				<property name="mail.smtp.user" value="meuUsuarioGmail" />
				<property name="mail.smtp.password" value="minhaSenhaGmail" />
				<property name="mail.smtp.ssl.enable" value="true" />
				
			</configuration>

		</attribute>
		<depends>jboss:service=Naming</depends>
	</mbean>

</server>

Este é meu código java que dispara o e1/2 :


public boolean enviarEmail() throws InfraEstruturaException {

		try {

			System.out.println(mailSession);

			renderer.render("/emailModelo_lembreteDeSenha.xhtml");

			facesMessages.add(FacesMessage.SEVERITY_INFO, "NÃO É QUE DEU CERTO?");

			return true;

		} catch (Exception e) {

			System.out.println("Email falhou: " + e.getMessage());

			facesMessages.add(FacesMessage.SEVERITY_INFO, "Email falhou: " + e.getMessage());

			return false;

		}

	}

Estou esquecendo de configurar alguma coisa?

Agradeço antecipadamente qualquer ajuda.

Abraço a todos
Giovanni