Action Mailer


#1

Hola, estoy intentando enviar correos y al parecer no entiendo la
documentacion del ActionMailer, ¿alguien tienen algo en español?sería
muy bueno.

Estoy haciendo que se envien correos a partir de un simple form:

<%= start_form_tag :controller => ‘personas’, :action => ‘enviar_mail’ ,
:correo => @correo%>
<%= hidden_field (‘correo’, ‘para’,:value=> @persona.mail)%>

Para: <%= @persona.mail%>
    </td>
</tr>
<tr>
    <td><strong>Asunto:</strong>
    </td>
    <td> <%= text_field ('correo','asunto') %>
    </td>
</tr>
<tr>
    <td> <%= text_area ('correo','mensaje') %>
    </td>
</tr>
<%= submit_tag "Enviar" %> <%= end_form_tag %>

En el método enviar_mail tengo:
def enviar_mail
Correo::deliver_enviar(params[:correo])
end

el error que obtengo es:
undefined method `mail’ for #HashWithIndifferentAccess:0x6625024

Alguna idea??? ya he realizado las configuraciones…


#2

On 17/01/07, Chika removed_email_address@domain.invalid wrote:

Hola, estoy intentando enviar correos y al parecer no entiendo la
documentacion del ActionMailer, ¿alguien tienen algo en español?sería
muy bueno.

el error que obtengo es:
undefined method `mail’ for #HashWithIndifferentAccess:0x6625024

¿El error te lo da al enviar o al ver el formulario? Yo diría que es
lo segundo y que el problema lo tienes con tu @persona. ¿Está bien
asignada esa variable? ¿Has verificado que tenga el atributo 'mail?


Manuel
http://linkja.com * un agregador de tendencias
http://simplelogica.net
http://simplelogica.net/logicola


#3

¿Puedes enviarnos el código de la clase Correo?

2007/1/17, Manuel González Noriega removed_email_address@domain.invalid:


#4

A deliver_enviar le estas pasando params[:correo], que es un Hash que
se compone en el formulario. Este hash será algo así (escribo de
memoria):

“correo”=>{“para”=>“correo”, “asunto”=>“cadena”, “mensaje”=>“cadena”}

Esto lo puedes ver en el development.log.

Por ello, el método enviar debería ser algo
así:
def enviar(correo)
@from = ‘’
@sent_on = Time.now
@recipients = correo[:para]
@subject = correo[:asunto]
@body = correo[:mensaje]
end

Salu2,

Javi


#5

Javier, te pasaste!!! me resultó… suelo tener ese tipo de
errores… gracias

Javier Vidal P. wrote:

A deliver_enviar le estas pasando params[:correo], que es un Hash que
se compone en el formulario. Este hash ser� algo as� (escribo de
memoria):

“correo”=>{“para”=>“correo”, “asunto”=>“cadena”, “mensaje”=>“cadena”}

Esto lo puedes ver en el development.log.

Por ello, el m�todo enviar deber�a ser algo
as�:
def enviar(correo)
@from = ‘’
@sent_on = Time.now
@recipients = correo[:para]
@subject = correo[:asunto]
@body = correo[:mensaje]
end

Salu2,

Javi


#6

el error me lo da luego de llenar el formulario y presionar “Enviar”,
que me lleva al metodo enviar_mail:
def enviar_mail
Correo::deliver_enviar(params[:correo])
end

---------------------------------------Clase
Correo--------------------------
class Correo < ActionMailer::Base

def enviar(correo)
@from = ‘’
@sent_on = Time.now
@recipients = correo.mail
@subject = correo.asunto
@body = correo.mensaje

end

def mailings ()
exceptions = {}
recipients.each_slice(SENDING_BATCH_SIZE) do |recipients_slice|
Net::SMTP.start(‘localhost’, 25) do |sender|
recipients_slice.each do |recipient|
tmail.to = recipient
begin
sender.sendmail tmail.encoded, tmail.from, recipient
rescue Exception => e
exceptions[recipient] = e
#needed as the next mail will send command MAIL FROM, which
would
#raise a 503 error: “Sender already given”
sender.finish
sender.start
end
end
end
end
end

end