This looks useful.

Could you out this together in a pull request on github?

--
Jesse Gumm
Owner, Sigma Star Systems
414.940.4866 || sigma-star.com || @jessegumm
On Jun 29, 2014 7:07 AM, "can2nac" <[email protected]> wrote:

> Hi all,
>
> i had a task to implement dkim, cc and bcc with boss_mail. Below is a
> solution.
>
> 1. Update gen_smtp to the latest version. You will need mimemail:encode\2;
> 2. Run Mimeail with your app or each time with boss_mail. I
> added code:ensure_loaded(mimemail), in init\0 in main_init;
> 3. Change boss_mail and recompile CB
>
> %depricated by can2nac Jun 24 2014
> %send_message(App, FromAddress, ToAddress, Action, HeaderFields,
> Variables, Options, Callback) ->
> %    BodyFun = fun() -> build_message(App, Action, HeaderFields,
> Variables, Options) end,
> %    gen_server:call(boss_mail, {deliver, FromAddress, ToAddress, BodyFun,
> Callback}).
>
> %proper cc and bcc processing, added by can2nac Jun 24 2014
> send_message(App,FromAddress,ToAddress,Action,HeaderFields,Variables,Options,Callback)
> ->
>
> Recipients=[ToAddress]++lists:flatmap(fun(T)->string:tokens(proplists:get_value(T,HeaderFields,[]),";")end,["Cc","Bcc"]),
>     _HeaderFields=lists:keydelete("Bcc",1,HeaderFields),
>
> BodyFun=fun()->build_message(App,Action,_HeaderFields,Variables,Options)end,
>
> lists:foreach(fun(_ToAddress)->gen_server:call(boss_mail,{deliver,FromAddress,_ToAddress,BodyFun,Callback})end,Recipients).
>
> build_message(App, Action, HeaderFields, Variables, Options) ->
>     ContentLanguage = proplists:get_value("Content-Language",
> HeaderFields),
>     EffectiveAction = proplists:get_value(template, Options, Action),
>     Attachments = proplists:get_value(attachments, Options, []),
>     {MimeType, MessageBody} = build_message_body_attachments(App,
> EffectiveAction, Variables, Attachments, ContentLanguage),
>     MessageHeader = build_message_header(HeaderFields, MimeType),
>     %added by can2nac Jun 24 2014 START
>     DKIMOptions=
>       case
> file:read_file(boss_env:get_env(dkim_certificate_file,undefined)) of
>
> {ok,PemBin}->[{dkim,boss_env:get_env(dkim_options,[])++[{private_key,{pem_plain,PemBin}}]}];
>         {error,_}->[]
>       end,
>     %added by can2nac Jun 24 2014 END
>     %[MessageHeader, "\r\n", convert_unix_newlines_to_dos(MessageBody)].
> %removed by can2nac Jun 24 2014
>     mimemail:encode({list_to_binary(MimeType),<<>>,MessageHeader,[]
> ,list_to_binary(convert_unix_newlines_to_dos(MessageBody))},DKIMOptions).%added
> by can2nac Jun 24 2014
>
> build_message_header(HeaderFields, DefaultMimeType) ->
>     MessageID = case proplists:get_value("Message-ID", HeaderFields) of
>         undefined -> smtp_util:generate_message_id();
>         Other -> Other
>     end,
>     ContentType = proplists:get_value("Content-Type", HeaderFields,
> DefaultMimeType),
>     Date = proplists:get_value("Date", HeaderFields,
> erlydtl_dateformat:format("r")),
>     AllHeaders = [{"Date", Date}, {"Content-Type", ContentType},
>         {"MIME-Version", "1.0"}, {"Message-ID", MessageID} | HeaderFields],
>     [{list_to_binary(K),list_to_binary(V)}||{K,V}<-AllHeaders].%added by
> can2nac Jun 24 2014
>     %add_fields(AllHeaders, [], []).%removed by can2nac Jun 24 2014
>
> %depricated by can2nac Jun 24 2014 END
> %add_fields([], _, Acc) ->
> %    lists:reverse(Acc);
> %add_fields([{Key, Value}|Rest], Seen, Acc) ->
> %    case proplists:get_value(Key, Seen) of
> %        undefined ->
> %            add_fields(Rest, [Key|Seen], [[Key, ": ", Value, "\r\n"] |
> Acc]);
> %        _ ->
> %            add_fields(Rest, Seen, Acc)
> %    end.
>
> 4. Add in boss_config following lines
> {dkim_certificate_file,"priv/dkim.pem"},
>     {dkim_options,[{s,<<"some_txt_record_prefix">>},{d,<<"domain.com.">>}]},
> %TXT some_txt_record_refix._dkim.domain.com
>
> Only open certificates were implemented, password protected were not
> implemented.
> You can generate DKIM here %%
> http://www.port25.com/support/domainkeysdkim-wizard/
>
> --
> You received this message because you are subscribed to the Google Groups
> "ChicagoBoss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> Visit this group at http://groups.google.com/group/chicagoboss.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/chicagoboss/b88fa990-46a7-4c91-bfc4-5b8f75c2795c%40googlegroups.com
> <https://groups.google.com/d/msgid/chicagoboss/b88fa990-46a7-4c91-bfc4-5b8f75c2795c%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"ChicagoBoss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
Visit this group at http://groups.google.com/group/chicagoboss.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/chicagoboss/CAPTXyXep0q3nz1BDmAJ_GPCOQAPFAhZhuBAwV%2BGeZQBzcm0OSA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to