Posts tagged ‘e-mail’

Sztuczki z adresem e-mail

2010-10-14 10:04

Chcę dzisiaj wspomnieć o kilku ciekawostkach dotyczących tego, co każdy posiada – czyli adresu e-mail. Wydawałoby się, że nie ma tutaj niczego do odkrycia, jako że wszyscy już dawno zdążyliśmy się już przyzwyczaić do poczty elektronicznej i formatu adresów, które ona używa. Jak to jednak okazuje się zwykle w takich sytuacjach, w rzeczywistości przynajmniej kilka trików nie musi być wcale powszechnie znanych :)

I tak pierwszym z nich jest fakt, że część adresu specyficzna dla użytkownika (ta przed znakiem @) może być łańcuchem znaków zawartych w cudzysłowach. Między nimi ulegają wtedy pewnemu poluzowaniu reguł odnośnie dopuszczalnych znaków i dozwolone stają się chociażby spacje. Reasumując, zupełnie poprawny jest adres w rodzaju:

  1. "Jan Kowalski"@somewhere.com

Jest tu jednak pewien haczyk. Otóż serwery pocztowe niekoniecznie muszą takie adresy akceptować. Samo RFC (nr 5321) przestrzega przed potencjalnymi problemami, zalecając nieużywanie cudzysłowów, jeśli… chcemy otrzymywać jakąś pocztę :)
Do czego więc mogą się one przydać? Chociażby do adresów, które wykorzystuje się wyłącznie jako nadawcze, wysyłając np. zautomatyzowane wiadomości do użytkowników jakiejś sieciowej usługi, na które ci nie powinni odpowiadać.

Drugą rzeczą wartą odnotowania jest to, że część adresu następująca po znaku @ niekoniecznie musi być nazwą domeny. Dopuszczalne są mianowicie adresy IP w zwyczajowej postaci kropkowej. Aby je odróżnić przyjęto konwencję, że powinny być zawarte w nawiasach kwadratowych:

  1. test@[192.168.0.1]

Pozwala to chociażby – jak sugeruje powyższy przykład – na testowanie serwerów pocztowych bez konieczności posiadania domeny.

Wreszcie, trzeci trik różni się od dwóch pozostałych tym, że może być rzeczywiście przydatny w prawdziwym świecie ;D Chodzi mianowicie o to, że część adresu przed znakiem @ (specyficzna dla użytkownika) może być interpretowana przez jego serwer pocztowy w dowolny sposób. To sprawia, że ów serwer może udostępniać dodatkowe feature‘y z nią związane.
Typowym i częstym przykładem jest możliwość tworzenia tagów adresowych, wspomagających sortowanie wiadomości. Zwykle dzieje się to za pomocą plusa (+) lub myślnika (-), co w sumie skutkuje adresem w rodzaju:

  1. user+stuff@server.com

Jeśli server.com obsługuje tagi w takim właśnie formacie, to wiadomości trafiające na powyższy adres zostaną umieszczone w skrzynce użytkownika user, ale pod etykietą stuff. Co to dokładnie znaczy, zależy od serwera; najpewniej będzie to przydzielenie wiadomości do osobnego folderu lub dodatkowe kryterium pomocne przy wyszukiwaniu.
Z popularnych serwisów hostujących pocztę tagi oferuje Google Mail, właśnie w powyższym formacie z plusem.

Tags:
Author: Xion, posted under Internet » 6 comments

Triki z PowerShellem #6 – Mail z załącznikami

2008-07-03 20:05

Kiedy mamy komuś przesłać plik, możemy niekiedy użyć do tego zwykłej poczty e-mail. Nie jest to oczywiście możliwe zawsze: plik nie powinien być zbyt duży i zwykle nie może też należeć do żadnego z “niebezpiecznych” typów (np. aplikacji EXE), by serwery pocztowe mogły go przepchnąć bez narażania lub zatykania sieci.
Jeśli w naszym przypadku tak jest, to możemy wykonać całą operację na przykład przy pomocy poniższego skryptu PowerShella:

  1. # MailFile.ps1 - Wysyła podany plik e-mailem na podany adres
  2. # Parametr: nazwa pliku lokalnego
  3. param([string]$file = $(throw "File not specified"))
  4.  
  5. # Stałe
  6. $SERVER = "moj.server.pl"
  7. $LOGIN = "loginSmtp"
  8. $PASSWORD = "hasłoSmtp"
  9. $FROM_ADDRESS = "ja@server.pl"
  10.  
  11. # Odczytanie adresu docelowego
  12. $recipentAddress = Read-Host -Prompt "Recipent e-mail address"
  13. $recipent = New-Object Net.Mail.MailAddress @($recipentAddress)
  14.  
  15. # Złożenie maila
  16. $mail = New-Object Net.Mail.MailMessage
  17. $mail.From = New-Object Net.Mail.MailAddress @($FROM_ADDRESS)
  18. $mail.To.Add($recipent)
  19. $mail.Subject = (New-Object IO.FileInfo @($file)).Name
  20.  
  21. # Dodanie załącznika
  22. $attachment = New-Object Net.Mail.Attachment @($file,
  23.     [Net.Mime.MediaTypeNames+Application]::Octet)
  24. $cd = $attachment.ContentDisposition
  25. $cd.CreationDate = [IO.File]::GetCreationTime($file)
  26. $cd.ModificationDate = [IO.File]::GetLastWriteTime($file)
  27. $cd.ReadDate = [IO.File]::GetLastAccessTime($file)
  28. $mail.Attachments.Add($attachment)
  29.  
  30. # Łączenie z serwerem SMTP i wysłanie maila
  31. $smtp = New-Object Net.Mail.SmtpClient @($SERVER)
  32. $smtp.Credentials = New-Object Net.NetworkCredential @($LOGIN, $PASSWORD)
  33. # $smtp.EnableSsl = $true # Odkomentowujemy, jeśli serwer wymaga SSL
  34. $smtp.Send($mail)

Jak widać, nie jest to nic skomplikowanego. A jak wykorzystać go w praktyce?… Podobnie jak prezentowany wcześniej skrypt do uploadu na serwer FTP, można go wywołać komendą w rodzaju:

  1. powershell -Command . 'C:\Sciezka\Do\Skryptu\MailFile.ps1' '%1'

którą podpinamy do menu kontekstowego plików lub podmenu Wyślij do.
W ten prosty sposób możemy oszczędzić sobie uruchamiania całego klienta poczty, względnie przeglądarki z webmailem. Naturalnie sporo rzeczy – jak chociażby temat wysyłanej wiadomości czy jej treść – możemy w zaprezentowanym kawałku kodu zmienić lub uzupełnić.

Tags: , ,
Author: Xion, posted under Applications, Internet » 1 comment
 


© 2018 Karol Kuczmarski "Xion". Layout by Urszulka. Powered by WordPress with QuickLaTeX.com.