SMTP Entegrasyon Örnekleri

Önsöz

Bu kılavuz, çeşitli programlama dilleri, çerçeveler ve e-posta istemcileri kullanarak Forward Email'in SMTP hizmetiyle nasıl entegre olabileceğinize dair ayrıntılı örnekler sunmaktadır. SMTP hizmetimiz, güvenilir, güvenli ve mevcut uygulamalarınızla kolayca entegre edilebilecek şekilde tasarlanmıştır.

E-postanın SMTP İşlemesinin Nasıl Çalıştığı

Entegrasyon örneklerine dalmadan önce, SMTP hizmetimizin e-postaları nasıl işlediğini anlamak önemlidir:

E-posta Kuyruğu ve Yeniden Deneme Sistemi

Sunucularımıza SMTP yoluyla bir e-posta gönderdiğinizde:

  1. İlk İşleme: E-posta doğrulanır, kötü amaçlı yazılım taramasından geçirilir ve spam filtrelerine karşı kontrol edilir.
  2. Akıllı Sıralama: E-postalar, teslimat için gelişmiş bir sıra sistemine yerleştirilir.
  3. Akıllı Yeniden Deneme Mekanizması: Teslimat geçici olarak başarısız olursa, sistemimiz şunları yapar:
  • getBounceInfo fonksiyonumuzu kullanarak hata yanıtını analiz eder.
  • Sorunun geçici mi (örneğin, "daha sonra tekrar dene", "geçici olarak ertelendi") yoksa kalıcı mı (örneğin, "kullanıcı bilinmiyor") olduğunu belirler.
  • Geçici sorunlar için e-postayı yeniden deneme için işaretler.
  • Kalıcı sorunlar için geri dönme bildirimi oluşturur.
  1. 5 Günlük Yeniden Deneme Süresi: Teslimatı 5 güne kadar yeniden deneriz (Postfix gibi endüstri standartlarına benzer şekilde), bu da geçici sorunların çözülmesi için zaman tanır.
  2. Teslimat Durumu Bildirimleri: Göndericiler, e-postalarının durumu (teslim edildi, gecikti veya geri döndü) hakkında bildirimler alır.

Note

Başarılı teslimattan sonra, giden SMTP e-posta içeriği, güvenlik ve gizlilik nedeniyle yapılandırılabilir bir saklama süresinden (varsayılan 30 gün) sonra silinir. Geriye yalnızca başarılı teslimatı gösteren bir yer tutucu mesaj kalır.

Güvenilirlik için Sahteciliğe Karşı Korumalı

Sistemimiz çeşitli uç durumları ele alacak şekilde tasarlanmıştır:

  • Engelleme listesi tespit edilirse, e-posta otomatik olarak yeniden denenecektir.
  • Ağ sorunları oluşursa, teslimat yeniden denenecektir.
  • Alıcının posta kutusu doluysa, sistem daha sonra yeniden deneyecektir.
  • Alıcı sunucu geçici olarak kullanılamıyorsa, denemeye devam edeceğiz.

Bu yaklaşım, gizliliği ve güvenliği koruyarak teslimat oranlarını önemli ölçüde artırır.

Node.js Entegrasyonu

Nodemailer'ı Kullanıyor

Nodemailer, Node.js uygulamalarından e-posta göndermek için kullanılan popüler bir modüldür.

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();

Express.js'yi kullanarak

Forward Email SMTP'yi bir Express.js uygulamasıyla nasıl entegre edebileceğiniz aşağıda açıklanmıştır:

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 Entegrasyonu

smtplib {#using-smtplib} kullanılıyor

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}")

Django'yu Kullanarak

Django uygulamaları için settings.py'ınıza aşağıdakileri ekleyin:

# 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'

Daha sonra görünümlerinize göre e-postalar gönderin:

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 Entegrasyonu

PHPMailer'ı Kullanarak

<?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}";
}

Laravel {#using-laravel} Kullanımı

Laravel uygulamaları için .env dosyanızı güncelleyin:

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}"

Daha sonra Laravel'in Mail arayüzünü kullanarak e-posta gönderin:

<?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 Entegrasyonu

Ruby Mail Gem'ini Kullanma

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 Entegrasyonu

JavaMail API'sini Kullanarak

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);
        }
    }
}

E-posta İstemcisi Yapılandırması

Thunderbird

  1. Thunderbird'ü açın ve Hesap Ayarları'na gidin.
  2. "Hesap İşlemleri"ne tıklayın ve "Posta Hesabı Ekle"yi seçin.
  3. Adınızı, e-posta adresinizi ve parolanızı girin.
  4. "Manuel Yapılandırma"ya tıklayın ve aşağıdaki bilgileri girin:
  1. "Test"e ve ardından "Bitti"ye tıklayın.

Apple Mail

  1. Mail'i açın ve Mail > Tercihler > Hesaplar'a gidin.
  2. Yeni bir hesap eklemek için "+" düğmesine tıklayın.
  3. "Diğer Mail Hesabı"nı seçin ve "Devam"a tıklayın.
  4. Adınızı, e-posta adresinizi ve şifrenizi girip "Oturum Aç"a tıklayın.
  5. Otomatik kurulum başarısız olursa, aşağıdaki bilgileri girin:
  1. Kurulumu tamamlamak için "Oturum Aç"a tıklayın.

Gmail (Postaları Şu Şekilde Gönder)

  1. Gmail'i açın ve Ayarlar > Hesaplar ve İçe Aktarma'ya gidin.
  2. "Postaları şu adresten gönder" bölümünde "Başka bir e-posta adresi ekle"ye tıklayın.
  3. Adınızı ve e-posta adresinizi girin ve ardından "Sonraki Adım"a tıklayın.
  4. Aşağıdaki SMTP sunucusu bilgilerini girin:
  • SMTP Sunucusu: smtp.forwardemail.net
  • Bağlantı Noktası: 465
  • Kullanıcı Adı: tam e-posta adresiniz
  • Şifre: şifreniz
  • "SSL kullanarak güvenli bağlantı"yı seçin.
  1. "Hesap Ekle"ye tıklayın ve e-posta adresinizi doğrulayın.

Sorun Giderme

Yaygın Sorunlar ve Çözümleri

  1. Kimlik Doğrulama Başarısız
  • Kullanıcı adınızı (tam e-posta adresi) ve şifrenizi doğrulayın
  • Doğru bağlantı noktasını (SSL/TLS için 465) kullandığınızdan emin olun
  • Hesabınızda SMTP erişiminin etkin olup olmadığını kontrol edin
  1. Bağlantı Zaman Aşımı
  • İnternet bağlantınızı kontrol edin
  • Güvenlik duvarı ayarlarınızın SMTP trafiğini engellemediğini doğrulayın
  • Farklı bir port kullanmayı deneyin (STARTTLS ile 587)
  1. Mesaj Reddedildi
  • "Kimden" adresinizin kimliği doğrulanmış e-postanızla eşleştiğinden emin olun
  • IP adresinizin kara listede olup olmadığını kontrol edin
  • Mesaj içeriğinizin spam filtrelerini tetiklemediğini doğrulayın
  1. TLS/SSL Hataları
  • Uygulamanızı/kütüphanenizi modern TLS sürümlerini destekleyecek şekilde güncelleyin
  • Sisteminizin CA sertifikalarının güncel olduğundan emin olun
  • Örtük TLS yerine açık TLS'yi deneyin

Yardım Alma

Burada ele alınmayan sorunlarla karşılaşırsanız lütfen:

  1. Sık sorulan sorular için SSS sayfası sayfamızı kontrol edin
  2. Ayrıntılı bilgi için e-posta teslimatı hakkında blog yazısı sayfamızı inceleyin
  3. Destek ekibimizle support@forwardemail.net adresinden iletişime geçin

Ek Kaynaklar

Sonuç

Forward Email'in SMTP hizmeti, uygulamalarınızdan ve e-posta istemcilerinizden e-posta göndermenin güvenilir, güvenli ve gizliliğe odaklı bir yolunu sunar. Akıllı kuyruk sistemimiz, 5 günlük yeniden deneme mekanizmamız ve kapsamlı teslimat durumu bildirimlerimizle, e-postalarınızın hedeflerine ulaşacağından emin olabilirsiniz.

Daha gelişmiş kullanım durumları veya özel entegrasyonlar için lütfen destek ekibimizle iletişime geçin.