Thanks!

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

> ok, will do little later as i'm still on 0.8.7 build, not time for update
> to latest CB version right now, but i'll try until the end of the week.
>
> On Sunday, June 29, 2014 6:10:37 PM UTC+4, Jesse Gumm wrote:
>>
>> 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/bf9ef6e5-d35c-40db-97fb-3169ae0f13c1%40googlegroups.com
> <https://groups.google.com/d/msgid/chicagoboss/bf9ef6e5-d35c-40db-97fb-3169ae0f13c1%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/CAPTXyXcPMAxMt57L_JN56UBrALd%3D-xgJiMrb_-BHE3kmXhti-Q%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to