הדואר האדום

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

הספרייה עצמה כתובה בשפת רובי, ומספקת הרבה מאוד יכולות כמו שליחת דואר באמצעות מספר סוגי שירותים, וגם קבלת דואר באמצעות POP3, IMAP ויש עבודה לתמיכה גם ב APOP. זה אומנם לא מדהים, אבל הקלות מצד אחד לשליחת דואר, והכוח שיש לספרייה מהצד השני מדהימים, בייחוד הדגש שהדואר שנשלח, היות הוא נשלח בצורה תקנית, בצורה שגורמת לOutlook של מיקרוסופט להראות רע. למעשה חלק מהתעוד של הספרייה מכיל את השורה הבאה:

== Contributing
Please do!  Contributing is easy in Mail:
1. Check the Reference RFCs, they are in the References directory, so no excuses.

עשיתי איתה ניסויים שונים ומשונים, ומדהים לראות שהכל עובד ללא הרבה מאמץ ממני בנושא. למשל כתבתי טקסט עברי ואנגלי בייחד. התוצאה היא שהוא ידע לקודד ללא בקשה ממני את הטקסט עצמו ל base64, בעוד שכאשר הטקסט היה רק באנגלית, הוא ידע להגיד שהוא us-ascii ללא base64. הוא גם יודע להתמודד עם טקסט ושליחת html ביחד כ"גוף" ההודעה, מול צירוף (attach) של קבצים.

אז אחרי ההקדמה שלי, איך עובדים איתו ?

$ sudo gem install mail
...
require 'rubygems'
require 'mail'

mail = Mail.new do
      from 'spammer@some.address'
        to 'you@example.com'
   subject 'Have you seen Pamela Anderson. nude ?'
  reply_to 'you@example.com'
      body "Hey mate!\nCheck out the new Pamela Anderson nude picture :)"
   add_file '/tmp/windows_virus.jpg.exe'
end

mail.delivery_method.settings = {{:address=>"localhost", :authentication=>nil, 
      :enable_starttls_auto=>true:domain=>"localhost.localdomain", :port=>25, 
      :password=>nil, :user_name=>nil}}
mail.deliver

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

require 'rubygems'
require 'mail'

mail = Mail.new do
      from 'spammer@some.address'
        to 'you@example.com'
   subject 'Have you seen Pamela Anderson. nude ?'
  reply_to 'you@example.com'
   add_file '/tmp/windows_virus.jpg.exe'
  text_part do
    content_type 'text/plain; charset=UTF-8'
    body "Hey mate!\nCheck out the new Pamela Anderson nude picture :)"
  end
  html_part do
    content_type 'text/html; charset=UTF-8'
    body "Hey mate!<br/>\nCheck out the new <strong>Pamela Anderson</strong> <em>nude</em> picture :)"
  end
end

mail.delivery_method.settings = {{:address=>"localhost", :authentication=>nil,
    :enable_starttls_auto=>true, :domain=>"localhost.localdomain", :port=>25, 
    :password=>nil, :user_name=>nil}}
mail.deliver

פשוט לא ? תהנו מהספרייה🙂

2 מחשבות על “הדואר האדום

כתיבת תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s