Last active
December 23, 2015 10:09
-
-
Save macuk/6619938 to your computer and use it in GitHub Desktop.
Mail gem problem
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# - Konfeo.com | |
# - Mail wysyłany jako organizator | |
# - ~ 15 000 wysyłanych maili miesięcznie | |
# ------------------------------------------------------------ | |
# Kodowanie nagłówków maili | |
require 'mail' | |
m = Mail.new | |
m.from = 'Żółty żółw <zolw@wp.pl>' | |
puts m.encoded | |
# (...) | |
From: =?UTF-8?B?xbvDs8WCdHk=?= =?UTF-8?B?IMW8w7PFgnc=?= <zolw@wp.pl> | |
# (...) | |
# ------------------------------------------------------------ | |
# Czasami dziwny problem... | |
# - Nieprawidłowe wyświetlanie nadawcy (mail.app, Thunderbird) | |
# - Odrzucanie maili do wysyłki przez Mandrill-a | |
# ------------------------------------------------------------ | |
# Konsultacje z supportem Mandrill-a | |
# Błąd: | |
# Klub Świadomego Menadżera - Świadome zarządzanie budżetem domowym | |
# =?UTF-8?B?S2x1YiDFmndpYWRvbWVnbyBNZW5hZMW8ZXJhIC0gxZp3aWFkb21lIHphcnrE?= | |
# =?UTF-8?B?hWR6YW5pZSBidWTFvGV0ZW0gZG9tb3d5bQ==?= | |
# | |
# OK: | |
# Klub Świadomego Menadżera: świadome zarządzanie budżetem domowym | |
# =?UTF-8?B?S2x1YiDFmndpYWRvbWVnbyBNZW5hZMW8ZXJhOiDFm3dpYWRvbWUgemFyesSF?= | |
# =?UTF-8?B?ZHphbmllIGJ1ZMW8ZXRlbSBkb21vd3lt?= | |
# ------------------------------------------------------------ | |
# Wykrycie problemu w działaniu gema Mail | |
# RFC2047: Each 'encoded-word' MUST represent | |
# an integral number of characters. A multi-octet | |
# character may not be split across adjacent | |
# 'encoded-word's. | |
# ------------------------------------------------------------ | |
# Pierwszy pomysł -- patch do gema Mail | |
def encode_base64(str) | |
[str].pack( 'm' ) | |
end | |
str = 'Klub Świadomego Menadżera - Świadome zarządzanie budżetem domowym' | |
str.encoding # => #<Encoding:UTF-8> | |
puts out = [str].pack('m') | |
# S2x1YiDFmndpYWRvbWVnbyBNZW5hZMW8ZXJhIC0gxZp3aWFkb21lIHphcnrE | |
# hWR6YW5pZSBidWTFvGV0ZW0gZG9tb3d5bQ== | |
out.unpack('m').first.encoding # => #<Encoding:ASCII-8BIT> | |
out.unpack('m').first.encode 'UTF-8' | |
# Encoding::UndefinedConversionError: "\xC5" from ASCII-8BIT to UTF-8 | |
out.unpack('m').first.encode Encoding::ISO8859_2 | |
# Encoding::UndefinedConversionError: "\xC5" to UTF-8 | |
# in conversion from ASCII-8BIT to UTF-8 to ISO-8859-2 | |
# ------------------------------------------------------------ | |
# Rozwiązanie | |
require 'mail' | |
m = Mail.new | |
m.from = 'Żółw <b@wp.pl>' | |
puts m.encoded | |
# (...) | |
From: =?UTF-8?B?xbvDs8WCdw==?= <b@wp.pl> | |
# (...) | |
from = 'Żółw <b@wp.pl>' | |
from = from.encode Encoding::ISO8859_2 | |
m.from = from | |
puts m.encoded | |
# (...) | |
From: =?ISO-8859-2?B?r/Ozdw==?= <b@wp.pl> | |
# (...) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Dzięki za Twój komentarz. GH nie wysłał mi żadnej notyfikacji i dopiero teraz go przeczytałem. Właśnie jestem w trakcie migracji na Rails 4.0 i Ryby 2.1 :)