התחברות לשרת SMTP

יש להגדיר את המאפיינים הבאים כאשר מתחברים לשרת SMTP עם תמיכת SSL.

בדוגמאות שלהלן אנו מציגים כיצד:

  1. הגדר שם משתמש.
  2. הגדר סיסמה.
  3. הגדר את הפורט.
  4. הגדר אפשרות אבטחה.

הקטע הקוד שלהלן מציג כיצד להתחבר לשרת SMTP שתומך ב‑SSL.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java

SmtpClient client = new SmtpClient("smtp.gmail.com");

// Set username, password, port, and security options
client.setUsername("your.email@gmail.com");
client.setPassword("your.password");
client.setPort(587);
client.setSecurityOptions(SecurityOptions.SSLExplicit);

התחברות לשרת דרך פרוקסי Socks

לפעמים אנו משתמשים בשרתים פרוקסי לצורך תקשורת עם העולם החיצון. במקרים כאלה, לקוחות דואר אינם יכולים לתקשור באינטרנט ללא ציון כתובת הפרוקסי. Aspose.Email תומך בגרסאות 4, 4a ו‑5 של פרוטוקול הפרוקסי SOCKS. מאמר זה מציג דוגמה עובדת של שליחת אימייל באמצעות שרת דואר פרוקסי. כדי לשלוח אימייל דרך פרוקסי:

  1. אתחול הפרוקסי עם המידע הנדרש, כלומר כתובת הפרוקסי, הפורט, וגירסת SOCKS.
  2. אתחול SmtpClient עם כתובת המארח, שם המשתמש והסיסמה, וכל ההגדרות האחרות.
  3. הגדר את מאפיין הפרוקסי של הלקוח ל‑ פרוקסי אובייקט שנוצר קודם.

הקטע הקוד שלהלן מציג כיצד להתחבר לשרת דרך פרוקסי.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java

SmtpClient client = new SmtpClient("smtp.domain.com", "username", "password");
client.setSecurityOptions(SecurityOptions.SSLImplicit);
String proxyAddress = "192.168.203.142"; // proxy address
int proxyPort = 1080; // proxy port
SocksProxy proxy = new SocksProxy(proxyAddress, proxyPort, SocksVersion.SocksV5);
client.setProxy(proxy);
client.send(new MailMessage("sender@domain.com", "receiver@domain.com", "Sending Email via proxy",
        "Implement socks proxy protocol for versions 4, 4a, 5 (only Username/Password authentication)"));

התחברות לשרת דרך פרוקסי HTTP

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java

HttpProxy proxy = new HttpProxy("18.222.124.59", 8080);
try (SmtpClient client = new SmtpClient("host", 587, "username", "password")) {
    client.setProxy(proxy);
    client.send(new MailMessage("sender@domain.com", "receiver@domain.com", "Sending Email via proxy",
            "Implement socks proxy protocol for versions 4, 4a, 5 (only Username/Password authentication)"));
}

התאמת מנגנון האימות

קבל את רשימת מנגנוני האימות הנתמכים על ידי שרת ה‑SMTP באמצעות ה‑ getSupportedAuthentication שיטה של SmtpClient מחלקה. מתודה זו מאפשרת ללקוח לקבוע אילו שיטות אימות זמינות להקמת חיבור מאובטח עם השרת. לאחר מכן, באמצעות ה‑ setAllowedAuthentication מתודה שמקבלת (או מגדירה) מונה של סוגי האימות המותרים למשתמש, בחרו במנגנון האימות המתאים ביותר לתקשורת לקוח‑שרת. מאפשר להגדיר באופן מפורש את שיטת האימות עבור לקוח הדואר.

דוגמת הקוד שלהלן מציגה כיצד להתאים אישית את אימות לקוח האימייל:

smtpClient.setAllowedAuthentication(SmtpKnownAuthenticationType.Login);

שימוש באימות CRAM‑MD5 לחיבור לשרת

כדי להבטיח אימות ותקשורת בטוחה עם שרת ה‑SMTP, ניתן לציין ולאכוף את השימוש ב‑CRAM‑MD5 כשיטת אימות המותרת ללקוח ה‑SMTP. הקטע הקוד הבא מציג כיצד להגדיר את סוג האימות המותר עבור ה‑ SmtpClient:

smtpClient.setAllowedAuthentication(SmtpKnownAuthenticationType.CramMD5);

קישור לקוח SMTP לכתובת IP ספציפית במארח

יתכן שמארח יכיל מספר פתחות זמינות לשליחת אימיילים, ולכן לא ניתן לשלול אפשרות זאת. במקרים כאלה, ייתכן הצורך לקשר את לקוח שליחת האימייל לפורט ספציפי במארח לצורך שליחת המיילים. ניתן להשיג זאת גם באמצעות Aspose.Email API בעזרת SmtpClient bindIPEndPoint מאפיין. ה‑API SmtpClient ניתן להגדיר להשתמש בכתובת IP ספציפית במארח על ידי ציון נקודת הקצה של ה‑IP הספציפית. הקטע הקוד הבא מציג כיצד לקשר את לקוח ה‑SMTP לכתובת IP ספציפית במארח.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java

SmtpClient client = new SmtpClient("smtp.domain.com", // host
        587, // port
        "username", // username
        "password", // password
        SecurityOptions.Auto // Security Options
);
try {
    client.bindIPEndPoint(new BindIPEndPointHandler() {
        public InetSocketAddress invoke(InetSocketAddress remoteEndPoint) {
            return new InetSocketAddress(0);
        }
    });
    client.noop();
} finally {
    client.dispose();
}

אימות אישורי שרת המייל ללא שליחת אימייל

לפעמים יש צורך לאמת אישורים ללא שליחת אימייל. Aspose.Email מספקת את validateCredentials() method לביצוע פעולה זו. אם האימות מצליח, הקוד בתוך תנאי ה‑if מתבצע, בדרך כלל לשימוש לפעולות נוספות או לאחזור נתונים משרת IMAP. קטע הקוד הבא מדגים אימות של אישורים ללא שליחת אימייל:

try (SmtpClient smtpClient = new SmtpClient(
        server.SmtpUrl, server.SmtpPort, "username", "password", SecurityOptions.Auto)) {
    smtpClient.setTimeout(4000);

    if (smtpClient.validateCredentials()) {
        // to do something
    }
}

כיצד להגדיר זמן קצוב לפעולות דואר

כל פעולת דואר לוקחת זמן מסוים בהתאם למגוון גורמים (עיכובי רשת, גודל הנתונים, ביצועי השרת, וכו’). ניתן להגדיר זמן קצוב לכל פעולות הדואר. דוגמת הקוד שלהלן מראה כיצד לבצע זאת באמצעות זמן קצוב מאפיין. הערה: אין להגדיר ערכים גדולים כדי למנוע המתנה ארוכה באפליקציה שלך.

try (SmtpClient smtpClient = new SmtpClient("host", 587, "username", "password", SecurityOptions.SSLExplicit))
{
    smtpClient.setTimeout(60000); // 60 seconds

    // some code...
}