דוגמאות לשילוב SMTP

הקדמה

מדריך זה מספק דוגמאות מפורטות כיצד לשלב עם שירות ה-SMTP של Forward Email באמצעות שפות תכנות, מסגרות ולקוחות דוא"ל שונים. שירות ה-SMTP שלנו נועד להיות אמין, מאובטח וקל לשילוב עם היישומים הקיימים שלך.

כיצד פועל עיבוד ה-SMTP של העברת דוא"ל

לפני שנצלול לדוגמאות האינטגרציה, חשוב להבין כיצד שירות ה-SMTP שלנו מעבד מיילים:

מערכת תור דוא"ל וניסיון חוזר

כאשר אתה שולח דוא"ל באמצעות SMTP לשרתים שלנו:

  1. עיבוד ראשוני: האימייל מאומת, נסרק לאיתור תוכנות זדוניות ונבדק מול מסנני דואר זבל.
  2. תור חכם: אימיילים מוצבים במערכת תור מתוחכמת למשלוח.
  3. מנגנון ניסיון חוזר חכם: אם המסירה נכשלת באופן זמני, המערכת שלנו:
  • תנתח את תגובת השגיאה באמצעות הפונקציה getBounceInfo שלנו.
  • תקבע אם הבעיה זמנית (למשל, "נסה שוב מאוחר יותר", "נדחה זמנית") או קבועה (למשל, "משתמש לא ידוע").
  • עבור בעיות זמניות, סמן את האימייל לניסיון חוזר.
  • עבור בעיות קבועות, צור הודעת החזרה.
  1. תקופת ניסיון חוזר של 5 ימים: אנו מנסים לשלוח שוב עד 5 ימים (בדומה לתקני התעשייה כמו Postfix), ונותנים לבעיות זמניות זמן לפתרון.
  2. הודעות סטטוס מסירה: שולחים מקבלים התראות על סטטוס האימיילים שלהם (נמסרו, התעכבו או הוחזרו).

Note

לאחר מסירה מוצלחת, תוכן דוא"ל SMTP יוצא מוסר לאחר תקופת שמירה הניתנת להגדרה (ברירת מחדל 30 יום) למטרות אבטחה ופרטיות. נותרת רק הודעת placeholder המציינת מסירה מוצלחת.

הוכחה לאמינות באמצעות דמה

המערכת שלנו מתוכננת להתמודד עם מגוון מקרי קצה:

  • אם מזוהה רשימת חסימה, ייעשה ניסיון חוזר אוטומטי של שליחת האימייל
  • אם יתרחשו בעיות רשת, ייעשה ניסיון חוזר למשלוח
  • אם תיבת הדואר של הנמען מלאה, המערכת תנסה שוב מאוחר יותר
  • אם שרת המקבל אינו זמין באופן זמני, נמשיך לנסות

גישה זו משפרת משמעותית את שיעורי המסירה תוך שמירה על פרטיות ואבטחה.

שילוב Node.js

שימוש ב-Nodemailer

Nodemailer הוא מודול פופולרי לשליחת מיילים מיישומי Node.js.

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

כך ניתן לשלב Forward Email SMTP עם יישום Express.js:

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

אינטגרציה של פייתון

שימוש ב-smtplib

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

עבור יישומי Django, הוסף את הפרטים הבאים ל-settings.py שלך:

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

לאחר מכן שלח מיילים בתצוגות שלך:

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

שימוש ב-PHPMailer

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

עבור יישומי Laravel, עדכנו את קובץ .env שלכם:

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

לאחר מכן, שלחו מיילים באמצעות חזית הדואר של Laravel:

<?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 Mail Gem

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

אינטגרציית ג'אווה

שימוש ב-API של JavaMail

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

תצורת לקוח דוא"ל

ת'אנדרבירד

  1. פתחו את Thunderbird ועברו להגדרות חשבון
  2. לחצו על "פעולות חשבון" ובחרו "הוספת חשבון דואר"
  3. הזינו את שמכם, כתובת הדוא"ל והסיסמה שלכם
  4. לחצו על "הגדרה ידנית" והזינו את הפרטים הבאים:
  1. לחצו על "בדיקה" ולאחר מכן על "סיום"

אפל מייל

  1. פתחו את דואר ועברו אל דואר > העדפות > חשבונות
  2. לחצו על כפתור "+" כדי להוסיף חשבון חדש
  3. בחרו "חשבון דואר אחר" ולחצו על "המשך"
  4. הזינו את שמכם, כתובת הדוא"ל והסיסמה שלכם, ולאחר מכן לחצו על "כניסה"
  5. כאשר ההתקנה האוטומטית נכשלת, הזינו את הפרטים הבאים:
  1. לחצו על "כניסה" כדי להשלים את ההתקנה

ג'ימייל (שלח דואר בשם)

  1. פתחו את Gmail ועברו אל הגדרות > חשבונות וייבוא.
  2. תחת "שלח דואר בשם", לחצו על "הוסיפו כתובת דוא"ל נוספת".
  3. הזינו את שמכם וכתובת הדוא"ל שלכם, ולאחר מכן לחצו על "השלב הבא".
  4. הזינו את פרטי שרת ה-SMTP הבאים:
  • שרת SMTP: smtp.forwardemail.net
  • פורט: 465
  • שם משתמש: כתובת הדוא"ל המלאה שלכם.
  • סיסמה: הסיסמה שלכם.
  • בחרו "חיבור מאובטח באמצעות SSL".
  1. לחצו על "הוסיפו חשבון" ואמתו את כתובת הדוא"ל שלכם.

פתרון בעיות

בעיות נפוצות ופתרונות

  1. האימות נכשל
  • אמת את שם המשתמש (כתובת הדוא"ל המלאה) והסיסמה שלך
  • ודא שאתה משתמש בפורט הנכון (465 עבור SSL/TLS)
  • בדוק אם גישת SMTP מופעלת בחשבון שלך
  1. פסק זמן לחיבור
  • בדוק את חיבור האינטרנט שלך
  • ודא שהגדרות חומת האש אינן חוסמות תעבורת SMTP
  • נסה להשתמש בפורט אחר (587 עם STARTTLS)
  1. הודעה נדחתה
  • ודא שכתובת ה"מאת" שלך תואמת את כתובת הדוא"ל המאומתת שלך
  • בדוק אם כתובת ה-IP שלך נמצאת ברשימה שחורה
  • ודא שתוכן ההודעה שלך אינו מפעיל מסנני דואר זבל
  1. שגיאות TLS/SSL
  • עדכן את האפליקציה/ספרייה שלך לתמיכה בגרסאות TLS מודרניות
  • ודא שאישורי CA של המערכת שלך מעודכנים
  • נסה TLS מפורש במקום TLS מרומז

קבלת עזרה

אם נתקלת בבעיות שלא מכוסות כאן, אנא:

  1. בדוק את ה-דף שאלות נפוצות שלנו לשאלות נפוצות
  2. עיין ב-פוסט בבלוג על משלוח דוא"ל שלנו למידע מפורט
  3. צור קשר עם צוות התמיכה שלנו בכתובת support@forwardemail.net

משאבים נוספים

מסקנה

שירות ה-SMTP של Forward Email מספק דרך אמינה, מאובטחת וממוקדת פרטיות לשליחת דוא"ל מהיישומים ולקוחות הדוא"ל שלך. בעזרת מערכת התורים החכמה שלנו, מנגנון ניסיון חוזר תוך 5 ימים והודעות מקיפות על סטטוס המסירה, אתה יכול להיות בטוח שהדוא"ל שלך יגיע ליעדו.

עבור מקרי שימוש מתקדמים יותר או אינטגרציות מותאמות אישית, אנא צרו קשר עם צוות התמיכה שלנו.