[SOLVED] Swift's max length for subject - what is the max?

Swift Mailer is a fantastic library for sending email with php. Discuss this library or ask any questions about it here.

Moderators: Chris Corbyn, General Moderators

Post Reply
User avatar
Oren
DevNet Resident
Posts: 1640
Joined: Fri Apr 07, 2006 5:13 am
Location: Israel

[SOLVED] Swift's max length for subject - what is the max?

Post by Oren »

Ok, so I have something along these lines (just like the example on Swift's site):

Code: Select all

$sender = new Swift_Address($email, $name);

// Create the message to send
$message = new Swift_Message($subject);
Now what is the max length for $name before Swift steps in and do any modifications to the name?
And the same question with $subject...

Thanks.
User avatar
Chris Corbyn
Breakbeat Nuttzer
Posts: 13098
Joined: Wed Mar 24, 2004 7:57 am
Location: Melbourne, Australia

Post by Chris Corbyn »

76 chars per line (78 including the \r\n).

So we now need to do a bit of maths and it actually gets a bit confusing.

"To: " = 4 chars so we now have 72 chars on the first line + (76-1) chars for every other line. Why -1? Because we need LWSP (Linear Whitespace) at the start of each sucessive line in a wrapped header.

$name also has space wasted by the <email@address> part so you can deduct that too. It gets even more complex once Swift detects non-us-ascii characters in the header since it then needs to encode the header which adds even more information on the line (=?Q?windows-874? .... ?=) Swift should never break what you specify though. When it arrives at the mail client it should look like what you typed.

Why do you ask?

There's already a bug been posted about $subject being broken if it's too long. I'm fixing that - it's a trivial, minor bug.
User avatar
Oren
DevNet Resident
Posts: 1640
Joined: Fri Apr 07, 2006 5:13 am
Location: Israel

Post by Oren »

d11wtq wrote:There's already a bug been posted about $subject being broken if it's too long. I'm fixing that - it's a trivial, minor bug.
That's pretty much why I asked, the problem is that now I'm even more confused :?

You showed me all the math and then said:
d11wtq wrote:When it arrives at the mail client it should look like what you typed
So in my contact form, do I need to put any limitations on the length (or any other limitations) of the name/subject fields?
By that I mean that I want to see in my mail box exactly what I entered.

what I entered = what the user sent after I did my own filtering according to what I decided to be valid.

P.S I haven't had a chance to test it by myself since my FTP access isn't working for some reason and I don't have a mail server on my local machine, so that's why I'm asking all kind of questions instead of trying by myself.

Anyway, thanks for the help :wink:
User avatar
Chris Corbyn
Breakbeat Nuttzer
Posts: 13098
Joined: Wed Mar 24, 2004 7:57 am
Location: Melbourne, Australia

Post by Chris Corbyn »

You don't need to put any limits on there no. There is no maximum subject length as far as you are concerned ;)

PS: To fix the known bug (the bug simply add a space where there shouldn't be one) before I make another release just open up Swift_Message_Encoder file, find the method header7BitEncode() and change:

Code: Select all

$ret .= wordwrap($data, $chunk-2, $le, true);

//to

$ret .= wordwrap($data, $chunk-2, $le);
User avatar
Oren
DevNet Resident
Posts: 1640
Joined: Fri Apr 07, 2006 5:13 am
Location: Israel

Post by Oren »

Ok, thanks. When are you going to make the next release? This is not urgent so I can wait just in case you'll make more changes...
User avatar
Chris Corbyn
Breakbeat Nuttzer
Posts: 13098
Joined: Wed Mar 24, 2004 7:57 am
Location: Melbourne, Australia

Post by Chris Corbyn »

Oren wrote:Ok, thanks. When are you going to make the next release? This is not urgent so I can wait just in case you'll make more changes...
I make releases roughly once every week. I'd make new releases every day or two but people start to get annoyed with me when I do that :P If you want the very latest (as in, my version) then use subversion.
Post Reply