NET/משלוח אימייל
תכנות בסביבת NET |
---|
|
בסביבת הדוט נט ישנן שתי ספריות העוסקות בכך:
1. System.Web.Mail
2. System.Net.Mail
ספריה System.Web.Mail הוכללה בדוט נט 1, וענתה באופן חלקי על שליחת אימייל.
מאמר זה יתמקד בספריה החדשה יותר, System.Net.Mail, שקיימת החל מגרסה 2 של הדוט נט, ובה מענה טוב יותר לסוגים שונים של משלוח אימייל.
ספריית System.Net.Mail מכילה בתוכה מספר מחלקות המאפשרות שליחת אימייל באמצעות פרוטוקול Smtp
הספריות העיקריות הן:
- MailMessage - המאפשרת להגדיר הודעת אימייל על מרכיביה השונים.
- SmtpClient - המאפשרת להגדיר קשר עם השרת ולשלוח אימייל
שליחה בסיסית
[עריכה]שליחה בסיסית ב-VB תעשה באופן הבא:
התייחסות לספריה:
Imports System.Net.Mail
הגדרה של הודעת האימיל והתכנים שבה
Dim myMailMessage As New MailMessage()
myMailMessage.From = New MailAddress("SenderEmail@comapny.suffix")
myMailMessage.To.Add("To1@comapny.suffix[,To2@comapny.suffix]")
myMailMessage.Subject = "Subject"
myMailMessage.Body = "Body"
לחילופין ניתן להמיר את השורות עד כה, להגדיר את הודעת האימייל באופן מקוצר:
Dim myMailMessage As New MailMessage("from", "To", "Subject", "Body")
לאחר מכן יש להגדיר לקוח Smtp ולבצע את המשלוח של האימייל
Dim mySmtpClient As New SmtpClient(smtpIp, port)
mSmtpClient.Send(myMailMessage)
כתיב עוד יותר מקוצר של כל התהליך הוא באופן הבא:
Dim MySmtpClient As New SmtpClient(smtpIp, port)
MySmtpClient.Send(New MailMessage("from", "To", "Subject", "Body"))
במידה ומשלוח האימייל לא התבצע, אפשר ללכוד את הודעות השגיאה השונות באמצעות Exception.
אם השרת דורש אימות (authentication) יש להוסיף את שתי הפקודות הבאות:
mySmtpClient.Credentials = New Net.NetworkCredential(UserName, Password)
mySmtpClient.UseDefaultCredentials=false
אם הוא דורש משלוח מוצפן, יש להוסיף את הפקודה:
mySmtpClient.EnableSsl = True
לסיום יש לשחרר את המחלקה
myMailMessage.Dispose()
ניתן להתרשם בדוגמאות אלו מהפשטות והאלגנטיות של שליחת האימייל באמצעות ספריה זו.
אפשרויות מתקדמות
[עריכה]כמובן שבספריה זו ישנן הרבה אפשרויות מתקדמות יותר, כמו שימוש במשלוח מוצפן (EnableSsl) (שימושי למשל לג'ימייל), כתיבה לכותרת של האימייל - Headers, הוספת צרופות (Attachments), שליטה בשיטת הקידוד (Encoding) של חלקם שונים מהאימייל, שליטה בהודעות על משלוח ההודעה (DeliveryNotification), דירוג עדיפות האימייל (Priority), משלוח אסינכרוני של אימייל (SendAsync) ועוד. ניתן לראות שאפשר לשלוח ריבוי אימיילים באותה שורה באמצעות שיטות שונות.
דוגמה - VB
[עריכה]דוגמה. משלוח אימייל באמצעות שרת 012.net.il:
Imports System.Net.Mail
Public Function SendMailMessage(ByVal UserName As String, ByVal Password As String) As Boolean
Dim MySmtpClient As New SmtpClient("smtp.012.net.il", "25")
MySmtpClient.Credentials = New Net.NetworkCredential(UserName, Password)
MySmtpClient.UseDefaultCredentials=False
Try
MySmtpClient.Send(New MailMessage("bibinat@012.net.il", _
"alon123@gmail.com", "Hello", "What's new?"))
Return True
Catch ex As SmtpException
Console.WriteLine(ex.Message)
Return False
End Try
End Function
דוגמה - C#
[עריכה]דוגמה של פונקציה למשלוח אימייל. ניתן לשלוח אימיילים רגילים ואימיילים מוצפנים כדוגמת השירות בג'ימייל.
using System.Net;
using System.Net.Mail;
private void button1_Click(object sender, EventArgs e)
{
// regular
SendMailQuick("mail.smartvmd.com", 25, false, "MyPassword", new MailAddress("XXX@YYY.com", "senderName"),
new MailAddress("myRecipient@YYY.com", "myRecipient"), "subjectText", "bodyText");
// Gmail
SendMailQuick("Smtp.gmail.com", 587, true, "MyPassword", new MailAddress("XXXX@gmail.com", "senderName"),
new MailAddress("myRecipient@YYY.com", "myRecipient"), "subjectText", "bodyText");
}
public static void SendMailQuick(string smpt, int port, bool ssl, string fromPassword,
MailAddress fromAddress, MailAddress toAddress, string subject, string body)
{
var smtp = new SmtpClient
{
Host = smpt,
Port = port,
EnableSsl = ssl,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var mailMessage = new MailMessage(fromAddress, toAddress) {
Subject = subject, Body = body })
try
{
smtp.Send(mailMessage);
}
catch (Exception exp)
{
Console.WriteLine(exp.Message);
}
}
קישורים חיצוניים
[עריכה]- systemnetmail
- מאמר משלוח אימייל, אתר CodeProject