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.
