2010-10-26 6 views
2

У меня возникла интересная проблема. Я отправляю электронное письмо с вложениями через класс NET :: SMTP в рубине через SMTP-серверы Apple me.com, и я сталкиваюсь с некоторыми смешными проблемами.шифрование электронной почты и отправка через SMTP - Ruby

Я пытаюсь отправить серию файлов jpg через SMTP-сервер. Я кодирую их в ruby, и когда я отправляю на другой me.com email, все пять изображений jpg появляются на другом конце в отличном состоянии. Когда я отправляю на адрес gmail, файлы обрезаются в 90 КБ (обычно они составляют около 500 тыс.). Когда я открываю два письма в textmate, я вижу, что кодировка на текстовой части письма составляет 8 бит на электронном письме, отправленном на адрес .me и 7 бит в письме, отправленном на сервер gmail. Я не уверен, что это моя проблема или нет.

Вот краткое кода я использую:

file1Content = File.read (каталог + '/ Photo_1.jpg')
file1 = [file1Content] .pack ("м")

marker = "AUNIQUEMARKER" 

body =<<EOF 
#{emailbody} 
EOF 

# Define the main headers. 
part1 =<<EOF 
From: #{from} 
To: #{donor} 
Subject: #{subject} 
MIME-Version: 1.0 
Content-Type: multipart/mixed; boundary=#{marker} 
--#{marker} 
EOF 

# Define the message action 
part2 =<<EOF 
Content-Transfer-Encoding:8bit 
Content-Type: text/plain 
#{body} 
--#{marker} 
EOF 

# Define the attachment section 
part3 =<<EOF 
Content-Type: image/jpeg; name=\"Photo_1.jpg\" 
Content-Transfer-Encoding:base64 
Content-Disposition: attachment; filename="Photo_1.jpg" 
#{file1} 
--#{marker} 
EOF 

(и т.д. 5 файлов, где я заканчиваю маркер с - # {маркер} -.

Я бы очень признателен за любую помощь, которую вы могли бы дать я полностью тупик несколько других примечаний.. Я использую MacRuby, и не все Gems работают над этим, особенно для встроенных Mac Рубин. У меня были некоторые успехи с небольшими библиотеками, но мне не повезло с ActionMailer.

ответ

2

У меня был друг пришел, и мы работали через него, и вот результат.

В кодировках электронной почты чрезвычайно важны разрывы строк. Некоторые почтовые серверы кажутся более прощающими (яблоко), поэтому я не видел проблему изначально.

Вот рабочий код:

marker = "AUNIQUEMARKER" 

body =<<EOF 
#{emailbody} 
EOF 

# Define the main headers. 
part1 =<<EOF 
From: #{from} 
To: #{donor} 
Subject: #{subject} 
MIME-Version: 1.0 
Content-Type: multipart/mixed; boundary=#{marker} 

--#{marker} 
EOF 

# Define the message action 
part2 =<<EOF 
Content-Type: text/plain 
Content-Transfer-Encoding:8bit 

#{body} 
--#{marker} 
EOF 

# Define the attachment section 
part3 =<<EOF 
Content-Type: image/jpeg; name=Photo_1.jpg 
Content-Transfer-Encoding:base64 
Content-Disposition: attachment; filename=Photo_1.jpg 

#{file1} 
--#{marker} 
EOF 

part4 =<<EOF 
Content-Type: image/jpeg; name=Photo_2.jpg 
Content-Transfer-Encoding:base64 
Content-Disposition: attachment; filename=Photo_2.jpg 

#{file2} 
--#{marker} 
EOF 
0

У меня нет опыта с кодированием вложений, но я думаю, что 7 бит по-прежнему является стандартом.

Я рекомендую использовать почтовую библиотеку, которая делает все это для вас, как и у Микеля. Повторное изобретательство колеса не очень полезно, если только вы не хотите учиться изобретать колеса.

Ссылка почты Lib Микель в: http://github.com/mikel/mail

+0

Благодаря Ariejan, Как я уже говорил в моей электронной почте я использую MacRuby и ряд драгоценных камней, не работаю на него. Мне действительно нужно сворачивать. Мне не нравится изобретать колеса, но это цена, которую я плачу за работу с новыми технологиями. – tsugua

+0

В этом случае вы могли бы использовать библиотеку Микеля в качестве хорошей отправной точки. 7-битная кодировка будет там, где вы можете посмотреть. – Ariejan

Смежные вопросы