Commit de89e4bfd20b5078f09726cfac8866f5b876fe0e
1 parent
75d4dac8
add the management of the alternative multipart according to new components of t…
…he type (text_content, html_content)
Showing
2 changed files
with
56 additions
and
22 deletions
Show diff stats
mail/compose_email.anubis
| ... | ... | @@ -331,6 +331,31 @@ public define String |
| 331 | 331 | else |
| 332 | 332 | encode_plain_text_content(split_lines(content), []) + crlf. |
| 333 | 333 | |
| 334 | +public define String | |
| 335 | + make_alternative | |
| 336 | + ( | |
| 337 | + String email_id, | |
| 338 | + String text_part_content, | |
| 339 | + String html_part_content | |
| 340 | + )= | |
| 341 | + if length(text_part_content) > 0 & length(html_part_content) > 0 then | |
| 342 | + //multipart alternative | |
| 343 | + with boundary = "=_alternative_"+email_id+"_=", | |
| 344 | + "Content-Type: multipart/alternative;" + crlf + | |
| 345 | + " boundary=\"" + boundary + "\"" + crlf + | |
| 346 | + crlf + | |
| 347 | + "--" + boundary + crlf + | |
| 348 | + text_part_content + crlf + | |
| 349 | + "--" + boundary + crlf + | |
| 350 | + html_part_content + crlf + | |
| 351 | + "--" + boundary + "--" | |
| 352 | + else if length(text_part_content) > 0 then | |
| 353 | + text_part_content | |
| 354 | + else | |
| 355 | + html_part_content | |
| 356 | + | |
| 357 | +. | |
| 358 | + | |
| 334 | 359 | |
| 335 | 360 | public define String |
| 336 | 361 | compose_mail |
| ... | ... | @@ -338,24 +363,33 @@ public define String |
| 338 | 363 | Email_to_send send |
| 339 | 364 | ) = |
| 340 | 365 | //with header_to_name = "To: ", |
| 341 | - if send is data_to_send(from, to_list, cc_list, bcc_list, subject, content, files, send_copy, reply_to) then | |
| 366 | + if send is data_to_send(from, to_list, cc_list, bcc_list, subject, text_content, html_content, files, send_copy, reply_to) then | |
| 342 | 367 | with send_date = get_rfc822_date_format, |
| 343 | - text_type = if find("<html",content,0) is | |
| 344 | - { | |
| 345 | - failure then "plain", | |
| 346 | - success(_) then "html" | |
| 347 | - }, | |
| 348 | - data_text = "Content-Type: text/" + text_type + "; charset=UTF-8" + crlf + | |
| 349 | - "Content-Transfer-Encoding: 8bit" + crlf + | |
| 350 | - crlf + | |
| 351 | - encode_content(content, text_type = "html"), | |
| 352 | - is_multipart = if files is | |
| 353 | - { | |
| 354 | - [] then false, | |
| 355 | - [h . t] then true | |
| 356 | - }, | |
| 368 | + with email_id = to_ascii(sha1((from, send_date))), | |
| 369 | + data_text = if length(text_content) > 0 then | |
| 370 | + "Content-Type: text/plain; charset=UTF-8" + crlf + | |
| 371 | + "Content-Transfer-Encoding: 8bit" + crlf + | |
| 372 | + crlf + | |
| 373 | + encode_content(text_content, false) | |
| 374 | + else | |
| 375 | + "", | |
| 376 | + data_html = if length(html_content) > 0 then | |
| 377 | + "Content-Type: text/html; charset=UTF-8" + crlf + | |
| 378 | + "Content-Transfer-Encoding: 8bit" + crlf + | |
| 379 | + crlf + | |
| 380 | + encode_content(html_content, true) | |
| 381 | + else | |
| 382 | + "", | |
| 383 | + body_text = make_alternative(email_id, data_text, data_html), | |
| 384 | + | |
| 385 | + is_multipart = if length(files) > 0 then true else false, | |
| 386 | +// is | |
| 387 | +// { | |
| 388 | +// [] then false, | |
| 389 | +// [h . t] then true | |
| 390 | +// }, | |
| 357 | 391 | |
| 358 | - "Message-ID: " + to_ascii(sha1((from, send_date))) + crlf + | |
| 392 | + "Message-ID: " + email_id + crlf + | |
| 359 | 393 | "Date: " + send_date + crlf + |
| 360 | 394 | // "From: " + user.login + "<" + user.login + "@" + domain + ">" + crlf + |
| 361 | 395 | "User-Agent: Anubis XLib email sender" + crlf + |
| ... | ... | @@ -380,19 +414,19 @@ public define String |
| 380 | 414 | "Subject: " + to_folded_base64_text("UTF-8", subject) + crlf |
| 381 | 415 | ) + |
| 382 | 416 | if is_multipart then |
| 383 | - with boundary = to_ascii(sha1((from, send_date))), | |
| 417 | + with boundary = "=_mixed_"+email_id+"_=", | |
| 384 | 418 | "Content-Type: multipart/mixed;" + crlf + |
| 385 | 419 | " boundary=\"" + boundary + "\"" + crlf + |
| 386 | 420 | crlf + |
| 387 | 421 | "This is a multi-part message in MIME format." + crlf + |
| 388 | 422 | "--" + boundary + crlf + |
| 389 | - data_text + crlf + | |
| 423 | + body_text + crlf + | |
| 390 | 424 | |
| 391 | 425 | data_files_multipart(files, boundary) + |
| 392 | 426 | |
| 393 | 427 | "--" + boundary + "--" |
| 394 | 428 | else |
| 395 | - data_text | |
| 429 | + body_text | |
| 396 | 430 | . |
| 397 | 431 | |
| 398 | 432 | ... | ... |
mail/types/generated/email_to_send.anubis
| 1 | -/* | |
| 1 | +/* | |
| 2 | 2 | * Created by 伝作 (Densaku). |
| 3 | 3 | * Types & Messages generator written by フランスのトトロ aka (David RENÉ) |
| 4 | 4 | * Date: 2020-04-01 |
| ... | ... | @@ -10,8 +10,8 @@ transmit system/muscle.anubis |
| 10 | 10 | transmit system/convert.anubis |
| 11 | 11 | transmit tools/basis.anubis |
| 12 | 12 | |
| 13 | -transmit types/generated/file_ref.anubis | |
| 14 | -transmit types/generated/email_address.anubis | |
| 13 | +transmit calexium_lib/types/generated/file_ref.anubis | |
| 14 | +transmit calexium_lib/mail/types/generated/email_address.anubis | |
| 15 | 15 | |
| 16 | 16 | |
| 17 | 17 | ... | ... |