SMTP-integraatioesimerkkejä
Esipuhe
Tämä opas tarjoaa yksityiskohtaisia esimerkkejä siitä, miten Forward Emailin SMTP-palvelu integroidaan käyttämällä erilaisia ohjelmointikieliä, kehyksiä ja sähköpostiohjelmia. SMTP-palvelumme on suunniteltu luotettavaksi, turvalliseksi ja helposti integroitavaksi olemassa oleviin sovelluksiisi.
Sähköpostin edelleenlähetyksen SMTP-käsittelyn toimintaperiaate
Ennen integraatioesimerkkien syventämistä on tärkeää ymmärtää, miten SMTP-palvelumme käsittelee sähköposteja:
Sähköpostijono ja uudelleenyritysjärjestelmä
Kun lähetät sähköpostin palvelimillemme SMTP:n kautta:
- Alkukäsittely: Sähköposti validoidaan, skannataan haittaohjelmien varalta ja tarkistetaan roskapostisuodattimia vasten.
- Älykäs jonotus: Sähköpostit asetetaan kehittyneeseen jonotusjärjestelmään toimitusta varten.
- Älykäs uudelleenyritysmekanismi: Jos toimitus epäonnistuu tilapäisesti, järjestelmämme:
- Analysoi virhevastauksen
getBounceInfo
-funktiolla. - Määrittää, onko ongelma tilapäinen (esim. "yritä myöhemmin uudelleen", "tilapäisesti lykätty") vai pysyvä (esim. "käyttäjä tuntematon").
- Tilapäisten ongelmien tapauksessa merkitsee sähköpostin uudelleenyritystä varten.
- Pysyvien ongelmien tapauksessa luo palautusilmoituksen.
- 5 päivän uudelleenyritysjakso: Yritämme toimitusta uudelleen jopa 5 päivän ajan (samanlainen kuin alan standardit, kuten Postfix), jolloin tilapäisille ongelmille annetaan aikaa ratkaista.
- Toimituksen tilailmoitukset: Lähettäjät saavat ilmoituksia sähköpostiensa tilasta (toimitettu, viivästynyt tai palautettu).
Note
Onnistuneen toimituksen jälkeen lähtevän SMTP-sähköpostin sisältö sensuroidaan määritettävän säilytysajan (oletusarvo 30 päivää) jälkeen turvallisuus- ja yksityisyyssyistä. Jäljelle jää vain paikkamerkkiviesti, joka osoittaa toimituksen onnistumisen.
Luotettavuuden varmistamiseksi tehty testitestaus
Järjestelmämme on suunniteltu käsittelemään erilaisia reunatapauksia:
- Jos estolista havaitaan, sähköpostia yritetään automaattisesti uudelleen.
- Jos verkko-ongelmia ilmenee, toimitusta yritetään uudelleen.
- Jos vastaanottajan postilaatikko on täynnä, järjestelmä yrittää uudelleen myöhemmin.
- Jos vastaanottava palvelin on tilapäisesti poissa käytöstä, jatkamme yrittämistä.
Tämä lähestymistapa parantaa merkittävästi toimitusnopeuksia säilyttäen samalla yksityisyyden ja turvallisuuden.
Node.js-integraatio
Käytetään Nodemaileria
Nodemailer on suosittu moduuli sähköpostien lähettämiseen Node.js-sovelluksista.
const nodemailer = require('nodemailer');
// Create a transporter object
const transporter = nodemailer.createTransport({
host: 'smtp.forwardemail.net',
port: 465,
secure: true, // Use TLS
auth: {
user: 'your-username@your-domain.com',
pass: 'your-password'
}
});
// Send mail with defined transport object
async function sendEmail() {
try {
const info = await transporter.sendMail({
from: '"Your Name" <your-username@your-domain.com>',
to: 'recipient@example.com',
subject: 'Hello from Forward Email',
text: 'Hello world! This is a test email sent using Nodemailer and Forward Email SMTP.',
html: '<b>Hello world!</b> This is a test email sent using Nodemailer and Forward Email SMTP.'
});
console.log('Message sent: %s', info.messageId);
} catch (error) {
console.error('Error sending email:', error);
}
}
sendEmail();
Käytetään Express.js:ää
Näin integroit Forward Email SMTP:n Express.js-sovellukseen:
const express = require('express');
const nodemailer = require('nodemailer');
const app = express();
const port = 3000;
app.use(express.json());
// Configure email transporter
const transporter = nodemailer.createTransport({
host: 'smtp.forwardemail.net',
port: 465,
secure: true,
auth: {
user: 'your-username@your-domain.com',
pass: 'your-password'
}
});
// API endpoint for sending emails
app.post('/send-email', async (req, res) => {
const { to, subject, text, html } = req.body;
try {
const info = await transporter.sendMail({
from: '"Your App" <your-username@your-domain.com>',
to,
subject,
text,
html
});
res.status(200).json({
success: true,
messageId: info.messageId
});
} catch (error) {
console.error('Error sending email:', error);
res.status(500).json({
success: false,
error: error.message
});
}
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});
Python-integraatio
Käytetään smtplib-tiedostoa
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
# Email configuration
sender_email = "your-username@your-domain.com"
receiver_email = "recipient@example.com"
password = "your-password"
# Create message
message = MIMEMultipart("alternative")
message["Subject"] = "Hello from Forward Email"
message["From"] = sender_email
message["To"] = receiver_email
# Create the plain-text and HTML version of your message
text = "Hello world! This is a test email sent using Python and Forward Email SMTP."
html = "<html><body><b>Hello world!</b> This is a test email sent using Python and Forward Email SMTP.</body></html>"
# Turn these into plain/html MIMEText objects
part1 = MIMEText(text, "plain")
part2 = MIMEText(html, "html")
# Add HTML/plain-text parts to MIMEMultipart message
message.attach(part1)
message.attach(part2)
# Send email
try:
server = smtplib.SMTP_SSL("smtp.forwardemail.net", 465)
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, message.as_string())
server.quit()
print("Email sent successfully!")
except Exception as e:
print(f"Error sending email: {e}")
Käytetään Djangoa
Django-sovelluksissa lisää seuraava settings.py
-kohtaan:
# Email settings
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.forwardemail.net'
EMAIL_PORT = 465
EMAIL_USE_SSL = True
EMAIL_HOST_USER = 'your-username@your-domain.com'
EMAIL_HOST_PASSWORD = 'your-password'
DEFAULT_FROM_EMAIL = 'your-username@your-domain.com'
Lähetä sitten sähköposteja näkymissäsi:
from django.core.mail import send_mail
def send_email_view(request):
send_mail(
'Subject here',
'Here is the message.',
'from@your-domain.com',
['to@example.com'],
fail_silently=False,
html_message='<b>Here is the HTML message.</b>'
)
return HttpResponse('Email sent!')
PHP-integraatio
Käytetään PHPMaileria
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
$mail = new PHPMailer(true);
try {
// Server settings
$mail->isSMTP();
$mail->Host = 'smtp.forwardemail.net';
$mail->SMTPAuth = true;
$mail->Username = 'your-username@your-domain.com';
$mail->Password = 'your-password';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->Port = 465;
// Recipients
$mail->setFrom('your-username@your-domain.com', 'Your Name');
$mail->addAddress('recipient@example.com', 'Recipient Name');
$mail->addReplyTo('your-username@your-domain.com', 'Your Name');
// Content
$mail->isHTML(true);
$mail->Subject = 'Hello from Forward Email';
$mail->Body = '<b>Hello world!</b> This is a test email sent using PHPMailer and Forward Email SMTP.';
$mail->AltBody = 'Hello world! This is a test email sent using PHPMailer and Forward Email SMTP.';
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
Laravelin käyttö
Laravel-sovellusten osalta päivitä .env
-tiedostosi:
MAIL_MAILER=smtp
MAIL_HOST=smtp.forwardemail.net
MAIL_PORT=465
MAIL_USERNAME=your-username@your-domain.com
MAIL_PASSWORD=your-password
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=your-username@your-domain.com
MAIL_FROM_NAME="${APP_NAME}"
Lähetä sitten sähköposteja Laravelin Mail-fasadilla:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
use App\Mail\WelcomeEmail;
class EmailController extends Controller
{
public function sendEmail()
{
Mail::to('recipient@example.com')->send(new WelcomeEmail());
return 'Email sent successfully!';
}
}
Ruby-integraatio
Käytetään Ruby Mail Gemiä
require 'mail'
Mail.defaults do
delivery_method :smtp, {
address: 'smtp.forwardemail.net',
port: 465,
domain: 'your-domain.com',
user_name: 'your-username@your-domain.com',
password: 'your-password',
authentication: 'plain',
enable_starttls_auto: true,
ssl: true
}
end
mail = Mail.new do
from 'your-username@your-domain.com'
to 'recipient@example.com'
subject 'Hello from Forward Email'
text_part do
body 'Hello world! This is a test email sent using Ruby Mail and Forward Email SMTP.'
end
html_part do
content_type 'text/html; charset=UTF-8'
body '<b>Hello world!</b> This is a test email sent using Ruby Mail and Forward Email SMTP.'
end
end
mail.deliver!
puts "Email sent successfully!"
Java-integraatio
Käytetään JavaMail-rajapintaa
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
public class SendEmail {
public static void main(String[] args) {
// Sender's email and password
final String username = "your-username@your-domain.com";
final String password = "your-password";
// SMTP server properties
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "smtp.forwardemail.net");
props.put("mail.smtp.port", "465");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
// Create session with authenticator
Session session = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
// Create message
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(username));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient@example.com"));
message.setSubject("Hello from Forward Email");
// Create multipart message
Multipart multipart = new MimeMultipart("alternative");
// Text part
BodyPart textPart = new MimeBodyPart();
textPart.setText("Hello world! This is a test email sent using JavaMail and Forward Email SMTP.");
// HTML part
BodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent("<b>Hello world!</b> This is a test email sent using JavaMail and Forward Email SMTP.", "text/html");
// Add parts to multipart
multipart.addBodyPart(textPart);
multipart.addBodyPart(htmlPart);
// Set content
message.setContent(multipart);
// Send message
Transport.send(message);
System.out.println("Email sent successfully!");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
}
Sähköpostiohjelman määritys
VÄLIAIKAINEN_PAIKKAPIDÄN_0 Thunderbird {VÄLIAIKAINEN_PAIKKAPIDÄN_1
- Avaa Thunderbird ja siirry kohtaan Tilin asetukset.
- Napsauta "Tilin toiminnot" ja valitse "Lisää sähköpostitili".
- Anna nimesi, sähköpostiosoitteesi ja salasanasi.
- Napsauta "Manuaalinen määritys" ja anna seuraavat tiedot:
- Saapuvan postin palvelin:
- IMAP: imap.forwardemail.net, portti: 993, SSL/TLS
- POP3: pop3.forwardemail.net, portti: 995, SSL/TLS
- Lähtevän postin palvelin (SMTP): smtp.forwardemail.net, portti: 465, SSL/TLS
- Todennus: Normaali salasana
- Käyttäjänimi: koko sähköpostiosoitteesi.
- Napsauta "Testi" ja sitten "Valmis".
Apple Mail
- Avaa Mail ja siirry kohtaan Mail > Asetukset > Tilit.
- Lisää uusi tili napsauttamalla +-painiketta.
- Valitse "Muu sähköpostitili" ja napsauta "Jatka".
- Anna nimesi, sähköpostiosoitteesi ja salasanasi ja napsauta sitten "Kirjaudu sisään".
- Jos automaattinen asennus epäonnistuu, anna seuraavat tiedot:
- Saapuvan postin palvelin: imap.forwardemail.net (tai pop3.forwardemail.net POP3:lle)
- Lähtevän postin palvelin: smtp.forwardemail.net
- Käyttäjätunnus: koko sähköpostiosoitteesi
- Salasana: salasanasi
- Viimeistele asennus napsauttamalla "Kirjaudu sisään".
Gmail (Lähetä viesti osoitteena)
- Avaa Gmail ja siirry kohtaan Asetukset > Tilit ja tuonti.
- Napsauta Lähetä sähköpostia osoitteena -kohdassa Lisää toinen sähköpostiosoite.
- Anna nimesi ja sähköpostiosoitteesi ja napsauta sitten Seuraava vaihe.
- Anna seuraavat SMTP-palvelimen tiedot:
- SMTP-palvelin: smtp.forwardemail.net
- Portti: 465
- Käyttäjänimi: koko sähköpostiosoitteesi
- Salasana: salasanasi
- Valitse SSL-suojattu yhteys.
- Napsauta Lisää tili ja vahvista sähköpostiosoitteesi.
Vianmääritys
Yleisiä ongelmia ja ratkaisuja
- Todennus epäonnistui
- Vahvista käyttäjätunnuksesi (koko sähköpostiosoitteesi) ja salasanasi
- Varmista, että käytät oikeaa porttia (465 SSL/TLS:lle)
- Tarkista, onko tililläsi SMTP-käyttö käytössä
- Yhteyden aikakatkaisu
- Tarkista internetyhteytesi
- Varmista, että palomuuriasetukset eivät estä SMTP-liikennettä
- Kokeile käyttää toista porttia (587 ja STARTTLS)
- Viesti hylätty
- Varmista, että "Lähettäjä"-osoite vastaa todennettua sähköpostiosoitettasi
- Tarkista, onko IP-osoitteesi mustalla listalla
- Varmista, ettei viestisi sisältö laukaise roskapostisuodattimia
- TLS/SSL-virheet
- Päivitä sovelluksesi/kirjastosi tukemaan nykyaikaisia TLS-versioita
- Varmista, että järjestelmäsi CA-varmenteet ovat ajan tasalla
- Kokeile eksplisiittistä TLS:ää implisiittisen TLS:n sijaan
Avun saaminen
Jos kohtaat ongelmia, joita ei ole käsitelty tässä:
- Katso yleisiä kysymyksiä Usein kysytyt kysymykset -sivu-sivultamme.
- Katso lisätietoja blogikirjoitus sähköpostin toimituksesta-sivultamme.
- Ota yhteyttä tukitiimiimme osoitteessa support@forwardemail.net.
Lisäresurssit
- Sähköpostin välitysdokumentaatio
- SMTP-palvelimen rajoitukset ja konfigurointi
- Sähköpostin parhaiden käytäntöjen opas
- Turvallisuuskäytännöt
Johtopäätös
Forward Emailin SMTP-palvelu tarjoaa luotettavan, turvallisen ja yksityisyyttä kunnioittavan tavan lähettää sähköposteja sovelluksistasi ja sähköpostiohjelmistasi. Älykkään jonotusjärjestelmämme, viiden päivän uudelleenyritysmekanismimme ja kattavien toimitustilailmoitusten ansiosta voit olla varma, että sähköpostisi saapuvat perille.
Edistyneempien käyttötapausten tai mukautettujen integraatioiden osalta ota yhteyttä tukitiimiimme.