Cari tutti,
Conosco questo problema, che è noto e piuttosto comune. Ho letto e provato molte test, ma mi sono già bloccato nella fase di “invio email”.
Ho seguito questa guida: discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub. Di seguito i miei passaggi:
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
Vai alla cartella /samples/, copia standalone.yml in /containers/app.yml.
Modifica le informazioni relative al tuo server.
Quindi:
sudo ./discourse-doctor
Prima esperienza
Quando il mio app.yml era impostato come:
DISCOURSE_HOSTNAME: 'localhost'
E ho compilato queste informazioni:
DISCOURSE_SMTP_ADDRESS: XXX
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: XXX
DISCOURSE_SMTP_PASSWORD: XXX
DISCOURSE_SMTP_ENABLE_START_TLS: true
Il server email è anche costruito sulla rete interna.
All’inizio funzionava. Discourse inviava correttamente le email di registrazione e potevo accedere all’amministrazione normalmente.
Tuttavia, quando impostavo localhost come HOSTNAME, non potevo accedere tramite browser utilizzando l’IP interno (ad esempio, 10.1.X.X).
Seconda esperienza
Quindi ho modificato solo DISCOURSE_HOSTNAME senza cambiare altre informazioni in app.yml.
DISCOURSE_HOSTNAME: '10.1.3.91'
PS: 10.1.3.91 è il mio IP interno (di rete locale).
Dopo aver cambiato l’hostname in questo modo, ho potuto accedere tramite browser. Tuttavia, il server email non funzionava più. Non riuscivo a ricevere email da Discourse.
Integrazione
Ho provato a inviare un’email tramite Python utilizzando il mio SMTP.
Lo script è simile al seguente:
from email.mime.multipart import MIMEMultipart
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib
content = MIMEMultipart()
content["subject"] = "Learn Code With Mike"
content["from"] = " (la mia email) "
content["to"] = " (email di test) "
content.attach(MIMEText("Demo python send email"))
with smtplib.SMTP(host=" (uguale a DISCOURSE_SMTP_ADDRESS) ", port="587") as smtp:
try:
smtp.ehlo()
smtp.starttls()
smtp.login(" (uguale a DISCOURSE_SMTP_USER_NAME) ", " (uguale a DISCOURSE_SMTP_PASSWORD) ")
smtp.send_message(content)
print("Completato!")
except Exception as e:
print("Messaggio di errore: ", e)
Funzionava correttamente. Questo dimostra che le informazioni SMTP per l’email sono corrette e utilizzabili?
Avete qualche idea su questo problema?
Per quanto riguarda il server email, ho anche provato Elastic Email e Mailjet, ma senza successo.
Conclusione:
Se DISCOURSE_HOSTNAME è impostato su localhost, il server email funziona.
Se DISCOURSE_HOSTNAME viene modificato con un IP interno (cioè IP di rete locale), il server email non funziona.
Grazie mille!!!
Cordiali saluti,
Chieh