[erlang-questions] Odd behavior when sending emails via SMTP when messages are converted to/from binaries

Juan Jose Comellas juanjo@REDACTED
Sun May 15 04:28:12 CEST 2011


Yes, the correct thing to do would be to use list_to_binary/1 and
binary_to_list/1.

It might be possible to avoid the conversion altogether if you're
writing the result of the conversion to a socket or a file. If so, you
could just build an iolist and parse what you receive directly as a
binary.

Juanjo


On Sat, May 14, 2011 at 11:19 PM, Chris Hicks
<silent_vendetta@REDACTED> wrote:
> With some additional testing finally figured it out. I'm not sure how I
> missed it before, hard to keep track of all the tests you run after a while,
> but using term_to_binary then binary_to_list ends up leaving 4 extra
> elements in the list prior to the text which was first turned into a binary
> in the first place.
> Chris Hicks.
>
> ________________________________
> From: silent_vendetta@REDACTED
> To: erlang-questions@REDACTED
> Date: Sat, 14 May 2011 17:18:06 -0700
> Subject: [erlang-questions] Odd behavior when sending emails via SMTP when
> messages are converted to/from binaries
>
> In the system I'm building I am working with all my strings as binaries. I'm
> doing this because I'll be deploying on a 64 bit platform and don't need all
> the text I'm working with blowing up in size when there isn't any need for
> it. However I'm noticing an odd behavior when constructing emails to send
> over SMTP.
> Basically what I'm doing is this:
> ...
> Message_body = "This is a message body", <-- This part is actually more
> complex in that variables are being used along with string literals to form
> the entire body, which is why I initially create it as a string.
> Binary_message = erlang:term_to_binary(Message_body),
> email:send(Binary_message).
>
> The other module then does this:
> ...
> Header = "From: xxx <xxx>\rTo: yyy<yyy>\rSubject: This is the subject\r",
> Full_message = Header ++ erlang:binary_to_list(Binary_message),
> send_email(Full_message).
>
> Now the message sends just fine and shows up in my email. However in front
> of the Message_body text are three extra characters "ƒk Ő" and if I change
> the second module to this:
> ...
> Header = "From: xxx <xxx>\rTo: yyy<yyy>\rSubject: This is the subject\r",
> Body = erlang:binary_to_list(Binary_message),
> Full_message = Header ++ Body,
> send_email(Full_message).
>
> Then the three characters change to these"ƒk ×" and I simply can't figure
> out what is going on. Now I'm not building a mail server and I don't expect
> to be sending thousands of emails so working around this by simply treating
> all email text as strings (not converting to/from binary) is certainly not a
> problem. I am just curious if anyone can explain or help me figure out what
> is going on.
> Chris Hicks.
>
> _______________________________________________ erlang-questions mailing
> list erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
>



More information about the erlang-questions mailing list