diff --git a/mail/send_mail.anubis b/mail/send_mail.anubis index d50dfc9..eaca1bc 100644 --- a/mail/send_mail.anubis +++ b/mail/send_mail.anubis @@ -37,7 +37,6 @@ define Int _sendmail_time_out = 300. //5 minutes of timeout public type Smtp_Recipient: smtp_recipient(String email, //email address of the recipient - Send_Tries nb_tries, Int uid, //parameter used by handle_status (mail_uid) Int uid2 //same (contact_id) diff --git a/mail/send_mail_type.anubis b/mail/send_mail_type.anubis index c38c04e..bf5eb71 100644 --- a/mail/send_mail_type.anubis +++ b/mail/send_mail_type.anubis @@ -9,8 +9,10 @@ read system/string.anubis read system/data_io.anubis read tools/basis.anubis - +read web/mime.anubis read calexium_lib/mail/smtp_client.anubis +transmit types/generated/email_address.anubis +transmit types/generated/email_to_send.anubis public type Str_HostName: str_host_name(String str). @@ -144,3 +146,70 @@ public define Send_Status ok(_) then finished }. + + /***** Email_Address utilities *****/ + +public define Email_Address + email_address + ( + String address_only + )= + email_address("", address_only) +. + +public define String + to_String + ( + Email_Address email_addr + )= + with string_name = + if email_addr.name = "" then + "" + else + to_MIME_text("UTF-8", email_addr.name) + " ", + + string_name + "<" + email_addr.address + ">" +. + +public define Email_Address + to_Email_Address + ( + String header_address //email header in decoded version + )= + if split_by_token(header_address, '<') is + { + [] then email_address("",""), + [first . t] then + if t is + { + [] then email_address("", trim_tokens(first,['<','>',' '])), + [second . t] then email_address(first, trim_tokens(second,['<','>',' '])) + } + } +. + +public define String + String s + Email_Address email_addr = + s + to_String(email_addr) +. + +public define String + Email_Address email_addr +String s = + to_String(email_addr) + s +. + +public define Maybe((String, String)) + extract_user_domain + ( + Email_Address email_addr + )= + extract_user_domain(email_addr.address) +. + +public define Maybe(String) + extract_domain_name + ( + Email_Address email_addr + )= + extract_domain_name(email_addr.address) +. -- libgit2 0.21.4