Forum: Italian Ruby user group Problema con ActionMailer

Posted by Emanuele Bastianelli (mckracken)
on 2010-01-19 19:49
Salve a tutti,
ho un problema ad inviare email con ruby (da locale, per il momento). Vi
anticipo che lavoro su sistema operativo Mac OS X 10.6, e ho l'ultima
versione di ruby installata. Ho creato con rails un modello "user" e un
modello "user_mailer" (più la view per il messaggio da inviare, e tutto
il necessario per creare un utente, ma questo per ora non serve). Ho
anche installato la gem smpt-lts.
Posto il codice dei vari file:

environment.rb
codice:
...
Rails::Initializer.run do |config|
...
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.raise_delivery_errors = true
...
end

ActionMailer::Base.smtp_settings = {
:address  => "smtp.gmail.com",
:port  => 587,
:tls => true,
:domain => "http://memorialmatteucci.heroku.com/",
:user_name  => "miagmailmail",
:password  => "[mygmailpassword]",
:authentication  => :plain
}


user_mailer.rb
codice:
class UserMailer < ActionMailer::Base

  def signup_notification(user)
    recipients "#{user.email}"
    from       "miagmailmail@gmail.com"
    subject    "Please activate your new account"
    sent_on    Time.now
    body[:user] = user
    body[:email] = user.email
  end

end


Ovviamente ho creato user mediante scaffold (e tutto il resto), e
possiede il campo email. Per testare, via console inizializzo un oggetto
di tipo user, poi chiamo il metodo
UserMailer.deliver_signup_notification(userInizializzato), carica per un
po' e poi ottengo la seguente risposta:

=> #<TMail::Mail port=#<TMail::StringPort:id=0x80f22c9c>
bodyport=#<TMail::StringPort:id=0x80f2030c>>

Ovviamente so che sto spedendo da un account allo stesso account, sta di
fatto che non arriva niente sulla mia cartella di gmail.
Cosa c'è che non va?
Posted by Pietro Giorgianni (giorgian)
on 2010-01-20 09:20
(Received via mailing list)
Il 19 gennaio 2010 19.49, Emanuele Bastianelli <manu.reeko@gmail.com>
ha scritto:
> Ovviamente so che sto spedendo da un account allo stesso account, sta di
> fatto che non arriva niente sulla mia cartella di gmail.

ciao,

occhio che gmail spesso non mostra i messaggi mandati a sé stessi da
fuori, io una volta ci sono impazzito tentando di configurare postfix
(provavo a spedire a me stesso per vedere se arrivava e non arrivava
mai...).

Ti consiglio di provare con un indirizzo non gmail.


pietro
Posted by Emanuele Bastianelli (mckracken)
on 2010-01-20 10:16
Mmm, ho provato a spedire ad un mio account hotmail, ma purtroppo non 
funziona lo stesso. Mi chiedo se ci sia qualche problema con le 
impostazioni, o addirittura con il sistema. Non so proprio dove andare a 
parare...
Posted by Emanuele Bastianelli (mckracken)
on 2010-01-20 10:25
Mmmm....installare la mail gem o la tmail gem potrebbe cambiare 
qualcosa?
Posted by Pietro Giorgianni (giorgian)
on 2010-01-20 10:40
(Received via mailing list)
Il 20 gennaio 2010 10.16, Emanuele Bastianelli <manu.reeko@gmail.com>
ha scritto:
> Mmm, ho provato a spedire ad un mio account hotmail, ma purtroppo non
> funziona lo stesso. Mi chiedo se ci sia qualche problema con le
> impostazioni, o addirittura con il sistema. Non so proprio dove andare a
> parare...

Cercando velocemente su un forum trovo che (forse) bisogna configurare:
:enable_starttls_auto => true

poi, qui:
http://teapoci.blogspot.com/2008/04/action-mailer-with-gmail-or-another.html
vedo che :domain è impostato a "gmail.com".

Ma piuttosto che fare mille tentativi a caso, proverei a farmi
stampare in qualche modo l'output che ricevi da gmail, probabilmente
c'è un messaggio d'errore che ti può guidare verso la soluzione.


pietro
Posted by Emanuele Bastianelli (mckracken)
on 2010-01-20 11:08
Si sicuramente...adesso mi devo informare su come stampare l'output 
ricevuto da gmail, non sono molto ferrato su queste cose. Nel link che 
mi hai dato vedo che richiede smtp_tls, ma purtroppo quando cerco di 
installare la gem smtp_tls mi viene detto che bisogna avere la versione 
precedente di Ruby (la 1.8.6, io ho la 1.8.7)...
Posted by Flavio Castelli (Guest)
on 2010-01-20 11:32
(Received via mailing list)
On Wednesday 20 January 2010 11:08:35 Emanuele Bastianelli wrote:
> Si sicuramente...adesso mi devo informare su come stampare l'output
> ricevuto da gmail, non sono molto ferrato su queste cose. Nel link che
> mi hai dato vedo che richiede smtp_tls, ma purtroppo quando cerco di
> installare la gem smtp_tls mi viene detto che bisogna avere la versione
> precedente di Ruby (la 1.8.6, io ho la 1.8.7)...

Hai provato a dare un'occhiata nei log di sistema?
Penso che osx tenga i log di sendmail in: /var/log/mail.log

Ciao
Flavio
Posted by Emanuele Bastianelli (mckracken)
on 2010-01-22 21:49
Sono riuscito a risolvere.
Ho messo nella libreria locale il file smtp_tls.rb e l'ho importato in 
environment.rb.
Il problema era che hotmail in automatico respinge le mail da ip 
dinamici, quindi quelle inviate dal mio computer con sendmail non le 
accettava. Dopo aver importato smtp_tls gmail inviava anche a se stesso! 
:D
Posted by Alex Sapienza (firedragon)
on 2010-01-25 11:50
Emanuele Bastianelli wrote:
> Sono riuscito a risolvere.
> Ho messo nella libreria locale il file smtp_tls.rb e l'ho importato in 
> environment.rb.
> Il problema era che hotmail in automatico respinge le mail da ip 
> dinamici, quindi quelle inviate dal mio computer con sendmail non le 
> accettava. Dopo aver importato smtp_tls gmail inviava anche a se stesso! 
> :D

Scusa mi diresti esattamente come hai fatto a risolvere il problema? 
Credo di avere lo stesso problema anch'io :-)
In particolare:
-dove lo trovo il file "smtp_tls.rb"?
-una volta trovato in quale cartella lo metto?

Grazie anticipatamente!

Alex
Posted by Emanuele Bastianelli (mckracken)
on 2010-01-25 11:55
> Scusa mi diresti esattamente come hai fatto a risolvere il problema? 
> Credo di avere lo stesso problema anch'io :-)
> In particolare:
> -dove lo trovo il file "smtp_tls.rb"?

ad esempio qui. Basta copiare e incollare il codice in un file chiamato 
smtp_tls.rb.

http://www.koders.com/ruby/fid0BDA90145299691DD1B308E7252B492780BE1B55.aspx?s=socket

> -una volta trovato in quale cartella lo metto?

nella cartella della tu applicazione, sotto la directori lib/.

That's all.
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.