Comments (7)
Sounds good, any chance you can write a patch with a spec to cover?
from mail.
Here's a failing spec:
Mail::Body#sort_parts! only makes sense for email generation, and Mail::Message#html_part Mail::Message#text_part Mail::Message#part Mail::Message#all_part mostly makes senses and need consistency in email parsing.
I triggered the bug through the to_s (that trigger) body.encoded that trigger Body#sort_parts!. There is no real reason to use to_s in real case, so in most case this won't be a problem.
If you want me to fix it, what I'll do is get rid of Body#sort_parts! and replace it by a dynamic Body#sorted_parts (private?) and Body#encoded would use it directly. I can imagine the use of sorting the parts comes from a bad support for some mail client when attachment come first before text part or html part.
It's your lib, you decide :)
from mail.
Please leave sort_parts! but add a public method sorted_parts and switch encoding to use this.
Mikel
from mail.
Actually, I can't really see the problem here, at least with the spec you provided, because in that case we ARE generating the mail message and so the parts should get sorted.
Do you have a case where we are not?
Mikel
from mail.
I agree for real work use this is not an issue as you are unlikely to generate the encoded email and then iterate over its parts. But while playing around with the api this is kinda unexpected that the order of your parts is changing when you execute some methods.
By the way I had a look at this time and this created tons of change just to add a sorted_parts which does change the internal state of the parts as this is deeply nest to a low level Array Extension and tweeked version of sort! with extra arguments if I remind well.
As a conclusion this is far too complicated for the minimal level of inconvenience which by the way is not a problem in real world case so you can close this ticket in my opinion.
from mail.
OK, awesome :)
from mail.
Having said that and closed, I do agree that it could be neater... maybe for Mail 3 :)
from mail.
Related Issues (20)
- Gmail SMTP relay issues after upgrading to 2.8.1 HOT 2
- Forward email doesn't encode the attachment correctly HOT 1
- Running into an issue while sending an SMTP mail with v2.7.1 on Ruby 3.0.0 on container
- Encoding
- Parsing a `Mail::Message` from a string ignores the string's encoding
- Net::IMAP connection uses insecure deprecated options HOT 7
- Delivery with RCPT / NOTIFY not achievable
- Where to Report Vulnerabilities? HOT 2
- Email content tampering vulnerability due to crafted file names
- Mail::AddressList cannot parse CC header value
- [Question] Sending email directly to the recipient without a MTA (sendmail, postfix) and without third-party services
- Uniform interface for getting email body? HOT 1
- Excessive memory usage with attachments
- read_only: true sets email to read
- Release a new version?
- Parse attachment filenames when missing RFC-required quotes, for certain content-types?
- FWS handling in message ids
- [Question] PR for AWS SES Support?
- Mail.find(keys: "ALL", order: :desc, count: 20, what: :first) doesn't return the most 20 recent messages. HOT 1
- CRLF to LF line ending conversion is applied depending on whether body is ASCII-only or not.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mail.