Bug 8540 – std.net.curl.SMTP doesn't escape leading dots

Status
NEW
Severity
normal
Priority
P3
Component
phobos
Product
D
Version
D2
Platform
All
OS
All
Creation time
2012-08-11T15:48:00Z
Last change time
2024-12-01T16:15:31Z
Keywords
bootcamp
Assigned to
No Owner
Creator
Adam D. Ruppe
Moved to GitHub: phobos#9935 →

Comments

Comment #0 by destructionator — 2012-08-11T15:48:00Z
Consider the following: void main() { auto smtp = SMTP("smtp://localhost"); smtp.mailTo = ["<me>"]; smtp.mailFrom = "<me>"; smtp.message = "cool .test does this have a bug? "; smtp.perform(); } I received: cool test does this have a bug? Worse is if the message is: "cool . does this have a bug?" in which case it comes in as just "cool" I've encountered this same bug in another smtp app too, it seems to be a tricky one people miss, but it can happen in the real world especially if you are sending html emails. The fix isn't too hard though. When you're sending the data and encounter a leading period in a line in the message, just prepend another period to it when sending down the smtp connection. "cool\n.\nmore" is sent as "cool\n..\nmore" and then the recipient will get the right message. Another thing to watch out for that std.net.curl seems to miss is a message that starts with the word "From". smtp.message = "From something more"; That first line gets cut off. The convention to fix this is to prepend the line with the > character. smtp is kinda weird :)
Comment #1 by destructionator — 2012-08-11T15:55:47Z
Oh, wait a minute on the From thing... I guess the headers can be part of the message. That's actually good, makes it easier to use for fancier things. Might want to change the documentation: it says "Sets the message body text." but if it can include headers as well, might want to note that. I'm not sure how curl does the separation... but eh however it works we should make it clear. smtp.message = "X-Test: awesome Content-Type: text/html cool"; From: [email protected] X-Test: awesome [-- text/html is unsupported (use 'v' to view this part) --] So yeah those took as headers. But this is getting a little off topic... the dot escaping needs to be done regardless.
Comment #2 by robert.schadek — 2024-12-01T16:15:31Z
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/phobos/issues/9935 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB